private bool SchedulePlanningIfNecessary(Spy spy, FiniteStateMachine finiteStateMachine) { if (spy.AmIAwareOfBeingChased && spy.AmIAwareOfBeingChased != isSpyAwareOfBeingChasedLastValue) { currentActions.Clear(); finiteStateMachine.AddStateToStack(actionPlanningState); isSpyAwareOfBeingChasedLastValue = spy.AmIAwareOfBeingChased; return(true); } return(false); }
private void InitialiseVariables() { STRIPSInstance = GetComponent <Spy>(); finiteStateMachine = new FiniteStateMachine(); availableActions = new List <STRIPSAction>(); currentActions = new Queue <STRIPSAction>(); stripsPlanner = new STRIPSPlanner(); InitiateActionPlanningState(); InitiateMovementState(); InitiateActionExecutionState(); finiteStateMachine.AddStateToStack(actionPlanningState); LoadAvailableActions(); isSpyAwareOfBeingChasedLastValue = (STRIPSInstance as Spy).AmIAwareOfBeingChased; }
private void HandleCurrentActionExecution(Spy spy, FiniteStateMachine finiteStateMachine) { STRIPSAction action = currentActions.Peek(); bool inRange = action.RequiresInRange ? action.IsInRange : true; if (inRange) { TryToExecuteAction(action, spy, finiteStateMachine); } else { finiteStateMachine.AddStateToStack(movementState); } }
private void HandleCurrentActionsMissing(FiniteStateMachine finiteStateMachine) { finiteStateMachine.RemoveAllStatesFromStack(); finiteStateMachine.AddStateToStack(actionPlanningState); }
private void HandlePlanFound(Queue <STRIPSAction> plan, FiniteStateMachine finiteStateMachine) { currentActions = plan; finiteStateMachine.RemoveAllStatesFromStack(); finiteStateMachine.AddStateToStack(actionExecutionState); }
private void HandlePlanNotFound(FiniteStateMachine finiteStateMachine) { finiteStateMachine.RemoveStateFromStack(); finiteStateMachine.AddStateToStack(actionPlanningState); }
private void HandleActionExecutionFailure(FiniteStateMachine finiteStateMachine) { finiteStateMachine.RemoveStateFromStack(); finiteStateMachine.AddStateToStack(actionPlanningState); }