public void RegisterSynchronousJob(SynchronousJob job) { if (job == null) { throw new ArgumentNullException("job"); } if (this.State != TickableState.NeedTick) { this.State = TickableState.NeedTick; } Diagnostics.Assert(this.synchronousDelegates != null); this.synchronousDelegates.Add(job); }
public void Initialize(params object[] parameters) { this.State = TickableState.NeedTick; this.ErrorCode = AIArmyMission.AIArmyMissionErrorCode.None; if (this.aiBehaviorTree == null) { this.aiBehaviorTree = new AIBehaviorTree(this.AIArmyMissionDefinition.Root) { AICommander = this.AICommander }; this.aiBehaviorTree.Initialize(); } this.aiBehaviorTree.Variables.Add("$Army", this.Army); this.TrySetParameters(parameters); }
public void Tick() { if (this.synchronousDelegates.Count == 0) { this.State = TickableState.NoTick; return; } if (this.lastJobIndex <= 0) { this.lastJobIndex = this.synchronousDelegates.Count - 1; } Diagnostics.Assert(this.synchronousDelegates != null); int num = 0; while (this.lastJobIndex >= 0 && num++ <= this.tickLimit) { SynchronousJob synchronousJob = this.synchronousDelegates[this.lastJobIndex]; if (synchronousJob == null) { goto IL_83; } switch (synchronousJob()) { case SynchronousJobState.Running: break; case SynchronousJobState.Success: case SynchronousJobState.Failure: goto IL_83; default: goto IL_83; } IL_73: this.lastJobIndex--; continue; IL_83: this.synchronousDelegates.RemoveAt(this.lastJobIndex); goto IL_73; } }
public void Tick() { if (this.Completion != AIArmyMission.AIArmyMissionCompletion.Running) { this.State = TickableState.NoTick; return; } this.ErrorCode = AIArmyMission.AIArmyMissionErrorCode.None; if (this.aiBehaviorTree != null) { if (this.aiBehaviorTree.AICommander != this.AICommander) { this.aiBehaviorTree.AICommander = this.AICommander; } State state = this.aiBehaviorTree.Execute(new object[0]); this.LastPathfindTargetPosition = this.aiBehaviorTree.LastPathfindTargetPosition; this.ErrorCode = (AIArmyMission.AIArmyMissionErrorCode) this.aiBehaviorTree.ErrorCode; if (state == Amplitude.Unity.AI.BehaviourTree.State.Running) { if (this.ErrorCode == AIArmyMission.AIArmyMissionErrorCode.MoveInProgress) { this.aiBehaviorTree.Reset(); return; } } else { if (state == Amplitude.Unity.AI.BehaviourTree.State.Failure) { this.Completion = AIArmyMission.AIArmyMissionCompletion.Fail; return; } this.Completion = AIArmyMission.AIArmyMissionCompletion.Success; return; } } else { this.Completion = AIArmyMission.AIArmyMissionCompletion.Fail; } }
protected virtual void Running() { AIData_Army aidata = this.aiDataRepository.GetAIData <AIData_Army>(this.AIDataArmyGUID); if (aidata == null || aidata.ArmyMission == null) { this.Completion = AICommanderMission.AICommanderMissionCompletion.Fail; return; } switch (aidata.ArmyMission.Completion) { case AIArmyMission.AIArmyMissionCompletion.Fail: { AIArmyMission.AIArmyMissionErrorCode errorCode = aidata.ArmyMission.ErrorCode; aidata.ArmyMission.Reset(); TickableState tickableState = TickableState.NoTick; this.Completion = this.GetCompletionFor(errorCode, out tickableState); this.State = tickableState; return; } case AIArmyMission.AIArmyMissionCompletion.Running: aidata.ArmyMission.Tick(); return; case AIArmyMission.AIArmyMissionCompletion.Success: { aidata.ArmyMission.Reset(); TickableState tickableState2 = TickableState.NoTick; this.Completion = this.GetCompletionWhenSuccess(aidata, out tickableState2); this.State = tickableState2; return; } default: return; } }
protected override AICommanderMission.AICommanderMissionCompletion GetCompletionFor(AIArmyMission.AIArmyMissionErrorCode errorCode, out TickableState tickableState) { return(base.GetCompletionFor(errorCode, out tickableState)); }
protected override AICommanderMission.AICommanderMissionCompletion GetCompletionWhenSuccess(AIData_Army aiArmyData, out TickableState tickableState) { tickableState = TickableState.Optional; return(AICommanderMission.AICommanderMissionCompletion.Success); }
protected override AICommanderMission.AICommanderMissionCompletion GetCompletionWhenSuccess(AIData_Army armyData, out TickableState tickableState) { tickableState = TickableState.Optional; if (this.IsMissionCompleted()) { return(AICommanderMission.AICommanderMissionCompletion.Success); } return(AICommanderMission.AICommanderMissionCompletion.Initializing); }
protected override AICommanderMission.AICommanderMissionCompletion GetCompletionWhenSuccess(AIData_Army armyData, out TickableState tickableState) { tickableState = base.State; if (armyData.Army.GetPropertyValue(SimulationProperties.Movement) <= 0f) { base.State = TickableState.NoTick; this.SetRequestMessageExecutionState(RequestUnitListMessage.RequestUnitListState.RegroupingPending); } return(AICommanderMission.AICommanderMissionCompletion.Initializing); }
protected override AICommanderMission.AICommanderMissionCompletion GetCompletionWhenSuccess(AIData_Army aiArmyData, out TickableState tickableState) { tickableState = TickableState.Optional; if (this.IsMissionCompleted() || this.IsRegionColonized()) { return(AICommanderMission.AICommanderMissionCompletion.Success); } return(AICommanderMission.AICommanderMissionCompletion.Running); }
protected override AICommanderMission.AICommanderMissionCompletion GetCompletionFor(AIArmyMission.AIArmyMissionErrorCode errorCode, out TickableState tickableState) { if (errorCode == AIArmyMission.AIArmyMissionErrorCode.NoTargetSelected && base.AIDataArmyGUID.IsValid && !this.IsMissionCompleted() && !this.IsRegionColonized()) { tickableState = TickableState.Optional; return(AICommanderMission.AICommanderMissionCompletion.Running); } if (errorCode == AIArmyMission.AIArmyMissionErrorCode.InvalidDestination && this.PositionIndex + 1 < this.ListOfPosition.Length) { int positionIndex = this.PositionIndex; this.PositionIndex = positionIndex + 1; tickableState = TickableState.NoTick; return(AICommanderMission.AICommanderMissionCompletion.Running); } return(base.GetCompletionFor(errorCode, out tickableState)); }
protected virtual AICommanderMission.AICommanderMissionCompletion GetCompletionWhenSuccess(AIData_Army armyData, out TickableState tickableState) { tickableState = TickableState.Optional; return(AICommanderMission.AICommanderMissionCompletion.Initializing); }
protected virtual AICommanderMission.AICommanderMissionCompletion GetCompletionFor(AIArmyMission.AIArmyMissionErrorCode errorCode, out TickableState tickableState) { if (errorCode == AIArmyMission.AIArmyMissionErrorCode.MoveInProgress) { tickableState = TickableState.NeedTick; return(AICommanderMission.AICommanderMissionCompletion.Running); } if (errorCode == AIArmyMission.AIArmyMissionErrorCode.NoTargetSelected) { tickableState = TickableState.Optional; return(AICommanderMission.AICommanderMissionCompletion.Success); } if (errorCode == AIArmyMission.AIArmyMissionErrorCode.DestinationNotReached || errorCode == AIArmyMission.AIArmyMissionErrorCode.NoMovementPoint || errorCode == AIArmyMission.AIArmyMissionErrorCode.NoSavingPosition || errorCode == AIArmyMission.AIArmyMissionErrorCode.AllActionPointSpent) { tickableState = TickableState.NoTick; return(AICommanderMission.AICommanderMissionCompletion.Running); } if (errorCode == AIArmyMission.AIArmyMissionErrorCode.TargetBesieging) { tickableState = TickableState.NoTick; return(AICommanderMission.AICommanderMissionCompletion.Initializing); } if (errorCode == AIArmyMission.AIArmyMissionErrorCode.PathNotFound || errorCode == AIArmyMission.AIArmyMissionErrorCode.TargetLocked) { tickableState = TickableState.Optional; return(AICommanderMission.AICommanderMissionCompletion.Running); } if (errorCode == AIArmyMission.AIArmyMissionErrorCode.OrderGoToFail || errorCode == AIArmyMission.AIArmyMissionErrorCode.AlreadyInPosition || errorCode == AIArmyMission.AIArmyMissionErrorCode.NoTargetInRange || errorCode == AIArmyMission.AIArmyMissionErrorCode.SearchFail || errorCode == AIArmyMission.AIArmyMissionErrorCode.InvalidDestination) { tickableState = TickableState.Optional; return(AICommanderMission.AICommanderMissionCompletion.Initializing); } tickableState = TickableState.NoTick; return(AICommanderMission.AICommanderMissionCompletion.Fail); }