public void RunPreconditions() { if (chore.debug) { int num = 0; num++; if (consumerState.consumer.debug) { num++; Debugger.Break(); } } if (chore.arePreconditionsDirty) { chore.preconditions.Sort((PreconditionInstance x, PreconditionInstance y) => x.sortOrder.CompareTo(y.sortOrder)); chore.arePreconditionsDirty = false; } int num2 = 0; while (true) { if (num2 >= chore.preconditions.Count) { return; } PreconditionInstance preconditionInstance = chore.preconditions[num2]; if (!preconditionInstance.fn(ref this, preconditionInstance.data)) { break; } num2++; } failedPreconditionId = num2; }
public bool IsPotentialSuccess() { if (IsSuccess()) { return(true); } if ((UnityEngine.Object)chore.driver == (UnityEngine.Object)consumerState.choreDriver) { return(true); } if (failedPreconditionId != -1) { if (failedPreconditionId >= 0 && failedPreconditionId < chore.preconditions.Count) { PreconditionInstance preconditionInstance = chore.preconditions[failedPreconditionId]; return(preconditionInstance.id == ChorePreconditions.instance.IsMoreSatisfyingLate.id); } DebugUtil.DevLogErrorFormat("failedPreconditionId out of range {0}/{1}", failedPreconditionId, chore.preconditions.Count); } return(false); }