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());
    }
Пример #2
0
        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);
            }
        }
Пример #3
0
 public TransitionToStateMessage(State.Name state, T context)
 {
     State   = state;
     Context = context;
 }