You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
1.9 KiB

namespace CMSGame
{
public partial class BattleScene : Node3D
{
public BattleHUD? HUD;
public Popup? PauseMenuPopup;
public Popup? SettingsMenuPopup;
public double Time;
public bool IsPause = false;
private bool IsPauseBeforePauseMenuPopup = false;
public override void _Ready()
{
this.GetUniqueNode(ref HUD, nameof(HUD));
PauseMenuPopup = HUD!.PauseMenuPopup;
SettingsMenuPopup = HUD.SettingsMenuPopup;
}
public override void _Process(double delta)
{
if (!IsPause)
{
Time += delta;
}
UpdateUI();
}
public override void _UnhandledInput(InputEvent input)
{
if (input.IsActionPressed("battle_pause_toggle"))
{
TogglePauseBattle();
}
else if (input.IsActionPressed("battle_pause"))
{
ShowPauseMenu();
}
}
public void UpdateUI()
{
HUD!.BattleTimeLabel!.Text = TimeHelper.FormatTime(Time);
}
private void TogglePauseBattle()
{
IsPause = !IsPause;
}
private void ShowPauseMenu()
{
IsPauseBeforePauseMenuPopup = IsPause;
IsPause = true;
PauseMenuPopup!.PopupCentered();
}
private void On_PauseBattleButton_Pressed()
{
TogglePauseBattle();
}
private void On_PauseMenuPopup_PopupHide()
{
IsPause = IsPauseBeforePauseMenuPopup;
}
private void On_ResumeBattleButton_Pressed()
{
PauseMenuPopup!.Hide();
}
private void On_SettingsMenuButton_Pressed()
{
SettingsMenuPopup!.PopupCentered();
}
}
}