rule_in_order.dart 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import 'rule.dart';
  2. class RuleInOrder extends Rule{
  3. RuleInOrder(super.model);
  4. @override
  5. MControlPoint checkPoint(MControlPoint toCheck){
  6. var cp = toCheck;
  7. var wantI = model.checkedCount;
  8. final endPoint = model.controlPointWantSequence.last;
  9. final want = model.controlPointWantSequence[wantI];
  10. final planI = model.nextPlanPointIndex.value;
  11. if(planI!= null){
  12. if(model.controlPointWantSequence.length > planI){
  13. final plan = model.controlPointWantSequence[planI];
  14. if(plan.intId==toCheck.intId){
  15. cp.isPlan=true;
  16. var nextPlan = model.nextPlanPointIndex.value;
  17. if(nextPlan!= null){
  18. nextPlan++;
  19. if(model.controlPointWantSequence.length > nextPlan){
  20. model.nextPlanPointIndex.value= nextPlan;
  21. }
  22. }
  23. }
  24. }
  25. }
  26. if(want.intId == toCheck.intId){
  27. want.isSuccess = true;
  28. want.isNext = false;
  29. cp = want.clone();
  30. final nextIndex = wantI+1;
  31. if(model.controlPointWantSequence.length > nextIndex){
  32. model.controlPointWantSequence[nextIndex].isNext = true;
  33. }
  34. }else{
  35. if (toCheck.intId == endPoint.intId && model.checkedCount > 0) {
  36. cp = endPoint.clone();
  37. }
  38. cp.isSuccess=false;
  39. }
  40. return cp;
  41. }
  42. }