public void SwitchToPreviousGameState() { if (_gameStateHistory.Count > 0) { GameStateItem item = _gameStateHistory.Peek(); SwitchGameState(item); // Not Pop, because we want the history chain to stay untouched. } }
public void SwitchToPreviousGameState(IStateParameter[] parametersOverride) { if (_gameStateHistory.Count > 0) { GameStateItem item = _gameStateHistory.Peek(); item.Parameters = new StateParameters(parametersOverride); SwitchGameState(item); // Not Pop, because we want the history chain to stay untouched. } }
private GameStateConstructor <T> Initialize(GameStateItem item) { Initialize(item.Parameters); if (item.SwitcherTypes != null) { _switcherTypes.AddRange(item.SwitcherTypes); } return(this); }
public GameStateItem?Deactivate(Type[] allSwitchers) { if (_currentStateParameters == null) { return(null); } OnDeactivated(); GameStateItem item = GetGameStateItem(allSwitchers); _currentStateParameters.Clean(); _currentStateParameters = null; return(item); }
public void SwitchGameState(GameStateItem gameStateItem) { InternalSwitchGameState(gameStateItem.GameStateType, GameStateConstructor <T> .Create(gameStateItem)); }
public static GameStateConstructor <T> Create(GameStateItem item) { return(new GameStateConstructor <T>().Initialize(item)); }