| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import 'package:trackoffical_app/service/game/plug_sport_wear2.dart';
- import 'package:trackoffical_app/utils.dart';
- import 'plug_location2.dart';
- import 'plug_orientation2.dart';
- import 'game_instance.dart';
- class GameInstanceOrienteeringAssistant extends GameInstance {
- void onSwitch(){
- if(isStart.value){
- isStart.value = false;
- plugSportWear.stop();
- }else{
- startAt = DateTime.now();
- distance.value=0.meter;
- pace.value=0.seconds;
- duration.value=0.seconds;
- isStart.value=true;
- plugSportWear.start();
- }
- }
- void _onRcvLocation(MPosition p){
- if(isStart.value){
- final last = lastLocation;
- if(last!= null){
- distance.value = distance.value + p.distance(last);
- pace.value = pacePerKm(distance.value, duration.value);
- }
- }
- lastLocation=p;
- }
- @override
- Future<void> onInit() async{
- listenRx(_plugLocation.location, (event) {
- if(event!= null){
- _onRcvLocation(event);
- }
- });
- addTimer(100.milliseconds, () {
- if(isStart.value){
- duration.value = DateTime.now().difference(startAt);
- }
- });
- plugs.addAll([
- _plugOrientation,
- _plugLocation,
- plugSportWear,
- ]);
- }
- var startAt = DateTime.now();
- MPosition? lastLocation;
- Rx<double> get compassRadiansSrc => _plugOrientation.compassRadiansSrc;
- final distance = 0.meter.obs;
- final pace = 0.seconds.obs;
- final duration = 0.seconds.obs;
- final isStart = false.obs;
- final _plugOrientation = PlugOrientation();
- final _plugLocation = PlugLocation();
- final plugSportWear = PlugSportWear();
- }
|