public void AddState(IEnemyState state) { if (state == null) { return; } if (mStates.Count == 0) { mStates.Add(state); currentState = state; currentState.DoBeforeEntering(); return; } foreach (IEnemyState s in mStates) { if (s.stateID == state.stateID) { return; } } mStates.Add(state); }
public void PerformTransition(EnemyTransition trans) { if (trans == EnemyTransition.NullTansition) { return; } EnemyStateID nextStateID = currentState.GetOutPutState(trans); if (nextStateID == EnemyStateID.NullState) { return; } foreach (IEnemyState s in mStates) { if (s.stateID == nextStateID) { currentState.DoBeforeLeaving(); currentState = s; currentState.DoBeforeEntering(); return; } } }