Refactor pause handling; implement GameBus for pause state management and update event popup behavior
This commit is contained in:
@@ -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);
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user