Refactor pause handling; implement GameBus for pause state management and update event popup behavior

This commit is contained in:
2025-08-24 00:37:06 +02:00
parent 6d8139fd44
commit 1b3657b03a
5 changed files with 101 additions and 5 deletions

View File

@@ -50,7 +50,7 @@ public partial class EventManager : Node
private void FireEvent(EventDefinition eventDef)
{
GetTree().Paused = true;
GameBus.Instance.SetPause(true);
var popup = _eventPopupScene.Instantiate<EventPopup>();
_eventPopupContainer.AddChild(popup);

View File

@@ -1,4 +1,5 @@
using Godot;
using ParasiticGod.Scripts.Singletons;
namespace ParasiticGod.Scripts.Components;
@@ -13,17 +14,30 @@ public partial class PauseManager : CanvasLayer
ProcessMode = ProcessModeEnum.Always;
_pauseMenu.Hide();
_pauseButton.Pressed += TogglePause;
GameBus.Instance.PauseStateChanged += OnPauseStateChanged;
}
public override void _Input(InputEvent @event)
{
if (@event.IsActionPressed("pause")) TogglePause();
}
public override void _ExitTree()
{
if (GameBus.Instance != null)
{
GameBus.Instance.PauseStateChanged -= OnPauseStateChanged;
}
}
private void TogglePause()
{
var isPaused = !GetTree().Paused;
GetTree().Paused = isPaused;
GameBus.Instance.SetPause(!GetTree().Paused);
}
private void OnPauseStateChanged(bool isPaused)
{
_pauseMenu.Visible = isPaused;
}
}