using Core.Input; using TowerDefense.UI.HUD; using State = TowerDefense.UI.HUD.GameUI.State; namespace TowerDefense.UI { /// /// TD Specific input switcher that also disables controls when the game is paused /// public class TowerDefenseInputSchemeSwitcher : InputSchemeSwitcher { /// /// Gets whether the game is in a paused state /// public bool isPaused { get { return GameUI.instance.state == State.Paused; } } /// /// Register GameUI's stateChanged event /// protected virtual void Start() { if (GameUI.instanceExists) { GameUI.instance.stateChanged += OnUIStateChanged; } } /// /// Do nothing when game is paused /// protected override void Update() { if (isPaused) { return; } base.Update(); } /// /// Unregister from GameUI's stateChanged event /// protected virtual void OnDestroy() { if (GameUI.instanceExists) { GameUI.instance.stateChanged -= OnUIStateChanged; } } /// /// Activate or deactivate the current input scheme when the game pauses/unpauses /// void OnUIStateChanged(State oldState, State newState) { if (m_CurrentScheme == null) { return; } if (newState == State.Paused) { m_CurrentScheme.Deactivate(null); } else { m_CurrentScheme.Activate(null); } } } }