import 'rule.dart'; class RuleInOrder extends Rule{ RuleInOrder(super.model); @override MControlPoint checkPoint(MControlPoint toCheck){ var cp = toCheck; var wantI = model.checkedCount; final endPoint = model.controlPointWantSequence.last; final want = model.controlPointWantSequence[wantI]; final planI = model.nextPlanPointIndex.value; if(planI!= null){ if(model.controlPointWantSequence.length > planI){ final plan = model.controlPointWantSequence[planI]; if(plan.intId==toCheck.intId){ cp.isPlan=true; var nextPlan = model.nextPlanPointIndex.value; if(nextPlan!= null){ nextPlan++; if(model.controlPointWantSequence.length > nextPlan){ model.nextPlanPointIndex.value= nextPlan; } } } } } if(want.intId == toCheck.intId){ want.isSuccess = true; want.isNext = false; cp = want.clone(); final nextIndex = wantI+1; if(model.controlPointWantSequence.length > nextIndex){ model.controlPointWantSequence[nextIndex].isNext = true; } }else{ if (toCheck.intId == endPoint.intId && model.checkedCount > 0) { cp = endPoint.clone(); } cp.isSuccess=false; } return cp; } }