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);
}
}
}
}