public StateMachineTransitionState ExcuteTrans(AbsState formState, AbsState toState) { FromState = formState; ToState = toState; _transState = ExcuteTransEx(); return(_transState); }
public AbsTransition(StateMachine machine, string name, AbsState formState, AbsState toState) { Name = name; Entity = machine.Entity; Machine = machine; _transState = StateMachineTransitionState.Ready; FromState = formState; ToState = toState; }
public AbsState[] states = new AbsState[3]; //to be adjusted as we change the number of enemy states in game. 3 is probably plenty. public void setState(AbsState input) { for (int i = 0; i < 3; i++) { if (states[i] == null) { states[i] = input; break; } } }
private void changeState(string stateRequest)//calls inner with the proper type of state. { if (stateRequest.Contains("Patrol")) { inner("Patrol"); } else if (stateRequest.Contains("Rest")) { inner("Rest"); } else { inner("Chase"); } void inner(string newState) { AbsState[] temp = new AbsState[1]; if (states[0].isThis(newState)) { Debug.Log("We're already in that state I guess"); //do nothing } else { for (int i = 0; i < 3; i++) { Debug.Log("we made it to the for loop, so far."); if (states[i] != null && states[i].isThis(newState)) { Debug.Log("We made it to the for loop and the IF came out true at index = " + i); temp[0] = states[i]; states[i] = states[0]; states[0] = temp[0]; } } } } }
protected virtual void OnExitStateEx(AbsState nextState) { }
private void OnExitState(AbsState nextState) { OnExitStateEx(nextState); }
protected virtual void OnEnterStateEx(AbsState lastState) { }
private void OnEnterState(AbsState lastState) { OnEnterStateEx(lastState); Machine.CurrentState = this; }