public Enemy[] FindEnemies(State.Name[] states, Room.Names room, int floor) { // if there is only one element in the states array, run through everything once and return if (states.Length == 1) { State.Name state = states[0]; return(_enemies.FindAll(enemy => enemy.stateManager.currentState.name == state && enemy.currentRoom == room && enemy.currentFloor == floor).ToArray()); } // makea list of enemies and add to it as you find applicable enemies List <Enemy> relevantEnemies = new List <Enemy>(); for (int i = 0; i < states.Length; i++) { State.Name state = states[i]; for (int j = 0; j < _enemies.Count; j++) { Enemy enemy = _enemies[j]; if (enemy.stateManager.currentState.name == state && enemy.currentRoom == room && enemy.currentFloor == floor) { relevantEnemies.Add(enemy); } } } return(relevantEnemies.ToArray()); }
private void ExitState() { if (_state != null) { State.Name name = _state.Name; Instrumentation.State.Machine.ExitingState(name); _state.OnExit(); _state = null; Instrumentation.State.Machine.ExitedState(name); } }
public TransitionToStateMessage(State.Name state, T context) { State = state; Context = context; }