using Core.Input;
using TowerDefense.UI.HUD;
using State = TowerDefense.UI.HUD.EndlessGameUI.State;
namespace TowerDefense.UI
{
///
/// TD Specific input switcher that also disables controls when the game is paused
/// PVE 无尽模式使用
///
public class EndlessTowerDefenseInputSchemeSwitcher : InputSchemeSwitcher
{
///
/// Gets whether the game is in a paused state
///
public bool isPaused
{
get { return EndlessGameUI.instance.state == State.Paused; }
}
///
/// Register GameUI's stateChanged event
///
protected virtual void Start()
{
if (EndlessGameUI.instanceExists)
EndlessGameUI.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 (EndlessGameUI.instanceExists)
EndlessGameUI.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);
}
}
}