import 'package:get/get.dart'; import 'package:trackoffical_app/model/game_person_data.dart'; import 'package:trackoffical_app/model/m_control_point.dart'; import 'package:trackoffical_app/service/app.dart'; import 'game_model.dart'; import 'package:fixnum/fixnum.dart'; export 'package:trackoffical_app/model/m_control_point.dart'; /// 比赛规则 abstract class Rule{ Rule(this.model); final _app = App.to; var _lastCheckedPoint= Int64(0); var _lastCheckedPointTime = DateTime(0); final GamePersonData model; recordLastPoint(MControlPoint toCheck){ _lastCheckedPoint = toCheck.intId; _lastCheckedPointTime = _app.now; } bool _isCheckTooFast(Int64 id){ return _lastCheckedPoint == id && _app.now.difference(_lastCheckedPointTime) <= 10.seconds; } bool checkNeedReturn(MControlPoint toCheck){ if (_isCheckTooFast(toCheck.intId)){ return true; } if(model.controlPointWantSequence.isEmpty){ return true; } return false; } void checkHistoryAdd(MControlPoint cp){ model.checkedPointsHistory.add(cp); model.gameSrcState.value.pbGameSave.checkedSortedList.add(cp.toPbSave()); } MControlPoint checkPoint(MControlPoint toCheck); } class RuleMock extends Rule{ RuleMock(): super(GamePersonData()) ; @override MControlPoint checkPoint(MControlPoint toCheck) { return MControlPoint(); } }