rule.dart 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import 'package:get/get.dart';
  2. import 'package:trackoffical_app/model/game_person_data.dart';
  3. import 'package:trackoffical_app/model/m_control_point.dart';
  4. import 'package:trackoffical_app/service/app.dart';
  5. import 'game_model.dart';
  6. import 'package:fixnum/fixnum.dart';
  7. export 'package:trackoffical_app/model/m_control_point.dart';
  8. /// 比赛规则
  9. abstract class Rule{
  10. Rule(this.model);
  11. final _app = App.to;
  12. var _lastCheckedPoint= Int64(0);
  13. var _lastCheckedPointTime = DateTime(0);
  14. final GamePersonData model;
  15. recordLastPoint(MControlPoint toCheck){
  16. _lastCheckedPoint = toCheck.intId;
  17. _lastCheckedPointTime = _app.now;
  18. }
  19. bool _isCheckTooFast(Int64 id){
  20. return _lastCheckedPoint == id &&
  21. _app.now.difference(_lastCheckedPointTime) <= 10.seconds;
  22. }
  23. bool checkNeedReturn(MControlPoint toCheck){
  24. if (_isCheckTooFast(toCheck.intId)){
  25. return true;
  26. }
  27. if(model.controlPointWantSequence.isEmpty){
  28. return true;
  29. }
  30. return false;
  31. }
  32. void checkHistoryAdd(MControlPoint cp){
  33. model.checkedPointsHistory.add(cp);
  34. model.gameSrcState.value.pbGameSave.checkedSortedList.add(cp.toPbSave());
  35. }
  36. MControlPoint checkPoint(MControlPoint toCheck);
  37. }
  38. class RuleMock extends Rule{
  39. RuleMock(): super(GamePersonData()) ;
  40. @override
  41. MControlPoint checkPoint(MControlPoint toCheck) {
  42. return MControlPoint();
  43. }
  44. }