|
|
@@ -1,6 +1,8 @@
|
|
|
+import 'package:application/service/api.dart' as pb;
|
|
|
import 'package:application/widget.dart';
|
|
|
import 'package:common_pub/ui/map_view/map_view.dart';
|
|
|
import 'package:common_pub/ui/map_view/view_map_image.dart';
|
|
|
+import 'package:common_pub/ui/map_view/view_map_trace_tail.dart';
|
|
|
import 'package:common_pub/ui/map_view/view_map_touch.dart';
|
|
|
import 'package:common_pub/ui/map_view/view_map_user_point.dart';
|
|
|
import 'package:common_pub/ui/map_view/view_plug_loading.dart';
|
|
|
@@ -54,7 +56,7 @@ class FieldControlPage extends StatelessWidget {
|
|
|
child: ViewMapStack(plug: map.plugMap, children: [
|
|
|
ViewPlugLoading(map.plugMap),
|
|
|
ViewMapImage(map.plugMap),
|
|
|
- _ViewTrace(map: map),
|
|
|
+ _ViewTrace(map: map, traceDuration:30.seconds),
|
|
|
ViewMapTouch(map.plugMap)
|
|
|
])),
|
|
|
_MsgView(),
|
|
|
@@ -67,22 +69,34 @@ class FieldControlPage extends StatelessWidget {
|
|
|
}
|
|
|
|
|
|
class _ViewTrace extends GetView<FieldControlController> {
|
|
|
- const _ViewTrace({required this.map});
|
|
|
+ const _ViewTrace({required this.map, required this.traceDuration});
|
|
|
|
|
|
final MapWatchService map;
|
|
|
+ final Duration traceDuration;
|
|
|
+
|
|
|
|
|
|
@override
|
|
|
Widget build(BuildContext context) {
|
|
|
return Obx(() {
|
|
|
final children = <Widget>[];
|
|
|
|
|
|
+
|
|
|
for (final act in map.activeList) {
|
|
|
for (final user in act.userList) {
|
|
|
if (user.isHide.value) {
|
|
|
continue;
|
|
|
}
|
|
|
final trace = user.trace.lastOrNull;
|
|
|
+ final traceTailOnMap = <Offset>[];
|
|
|
+ final st = user.gameInfo.gameSaveInfo.startAt.toModel();
|
|
|
+ for(final one in user.trace){
|
|
|
+ if(DateTime.now().difference(st.add(one.ts)) < traceDuration ){
|
|
|
+ traceTailOnMap.add(one.onMap);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (trace != null) {
|
|
|
+ children.add(ViewMapTraceTail(plug: map.plugMap, onMapTrace: traceTailOnMap, color: user.flag.value.color,));
|
|
|
children.add(ViewMapUserPoint(map.plugMap, trace,
|
|
|
info: user.name, color: user.flag.value.color));
|
|
|
}
|