From 380e275766fcc70c6cd3d4188cea438bceedc4c0 Mon Sep 17 00:00:00 2001 From: Zenny Date: Sun, 7 Jun 2026 18:15:00 -0700 Subject: [PATCH] Use button prompt for inventory rescue menu --- .../src/map/dungeon/code/Overworld.cs | 102 ++++++++++-------- 1 file changed, 55 insertions(+), 47 deletions(-) diff --git a/Zennysoft.Game.Ma/src/map/dungeon/code/Overworld.cs b/Zennysoft.Game.Ma/src/map/dungeon/code/Overworld.cs index 24c2bc54..cdf3f8bb 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/code/Overworld.cs +++ b/Zennysoft.Game.Ma/src/map/dungeon/code/Overworld.cs @@ -35,76 +35,84 @@ public partial class Overworld : SpecialFloor, IDungeonFloor public override void InitializeDungeon() { - Show(); - Exit.AreaEntered += Exit_AreaEntered; - RestoreArea.AreaEntered += RestoreArea_AreaEntered; - RestoreArea.AreaExited += RestoreArea_AreaExited; - RestoreTimer = new Timer(); - RestoreTimer.WaitTime = 0.3f; - RestoreTimer.Timeout += RestoreTimer_Timeout; - AddChild(RestoreTimer); - FloorIsLoaded = true; + Show(); + Exit.AreaEntered += Exit_AreaEntered; + RestoreArea.AreaEntered += RestoreArea_AreaEntered; + RestoreArea.AreaExited += RestoreArea_AreaExited; + RestoreTimer = new Timer(); + RestoreTimer.WaitTime = 0.3f; + RestoreTimer.Timeout += RestoreTimer_Timeout; + AddChild(RestoreTimer); + FloorIsLoaded = true; - Game.ItemRescueMenu.SetProcessInput(false); - var torches = DeathTorches.GetChildren().OfType().ToList(); - var torchesToLight = Mathf.Min(Game.QuestData.DeathCount, 15); - for (var i = 0; i < torchesToLight; i++) - torches[i].Show(); + Game.ItemRescueMenu.SetProcessInput(false); + var torches = DeathTorches.GetChildren().OfType().ToList(); + var torchesToLight = Mathf.Min(Game.QuestData.DeathCount, 15); + for (var i = 0; i < torchesToLight; i++) + torches[i].Show(); - ItemRescueInteractZone.AreaEntered += ItemRescueInteractZone_AreaEntered; - var dimmableAudio = DimmableAudio.GetChildren().OfType(); - foreach (var dimmable in dimmableAudio) - dimmable.FadeIn(); + ItemRescueInteractZone.AreaEntered += ItemRescueInteractZone_AreaEntered; + ItemRescueInteractZone.AreaExited += ItemRescueInteractZone_AreaExited; + var dimmableAudio = DimmableAudio.GetChildren().OfType(); + foreach (var dimmable in dimmableAudio) + dimmable.FadeIn(); } + public override void _Input(InputEvent @event) + { + if (_insideItemRescueZone && Input.IsActionJustPressed(GameInputs.Interact)) + { + GameRepo.Pause(); + Game.ItemRescueMenu.Show(); + Game.ItemRescueMenu.SetProcessInput(true); + } + } + + private void ItemRescueInteractZone_AreaExited(Area3D area) => _insideItemRescueZone = false; + public void OnResolved() { - Game.ItemRescueMenu.MenuClosing += ItemRescueMenu_MenuClosing; + Game.ItemRescueMenu.MenuClosing += ItemRescueMenu_MenuClosing; } private void ItemRescueMenu_MenuClosing() { - GameRepo.Resume(); - Game.ItemRescueMenu.SetProcessInput(false); + GameRepo.Resume(); + Game.ItemRescueMenu.SetProcessInput(false); } - private void ItemRescueInteractZone_AreaEntered(Area3D area) - { - GameRepo.Pause(); - Game.ItemRescueMenu.Show(); - Game.ItemRescueMenu.SetProcessInput(true); - } + private void ItemRescueInteractZone_AreaEntered(Area3D area) => _insideItemRescueZone = true; private void RestoreTimer_Timeout() { - if (!Player.HealthComponent.AtFullHealth) - Player.HealthComponent.Heal(1); - if (!Player.VTComponent.AtFullVT) - Player.VTComponent.Restore(1); + if (!Player.HealthComponent.AtFullHealth) + Player.HealthComponent.Heal(1); + if (!Player.VTComponent.AtFullVT) + Player.VTComponent.Restore(1); } private void RestoreArea_AreaExited(Area3D area) { - if (area.GetOwner() is IPlayer) - { - RestoreTimer.Stop(); - Player.SetHealthTimerStatus(true); - } + if (area.GetOwner() is IPlayer) + { + RestoreTimer.Stop(); + Player.SetHealthTimerStatus(true); + } } private void RestoreArea_AreaEntered(Area3D area) { - if (area.GetOwner() is IPlayer) - { - RestoreTimer.Start(); - Player.SetHealthTimerStatus(false); - } + if (area.GetOwner() is IPlayer) + { + RestoreTimer.Start(); + Player.SetHealthTimerStatus(false); + } } private void Exit_AreaEntered(Area3D area) { - if (area.GetOwner() is IPlayer) - ExitReached(); + if (area.GetOwner() is IPlayer) + ExitReached(); } public void ExitReached() => Game.FloorExitReached(); @@ -113,10 +121,10 @@ public partial class Overworld : SpecialFloor, IDungeonFloor public void OnExitTree() { - Exit.AreaEntered -= Exit_AreaEntered; - RestoreArea.AreaEntered -= RestoreArea_AreaEntered; - RestoreArea.AreaExited -= RestoreArea_AreaExited; - RestoreTimer.Timeout -= RestoreTimer_Timeout; + Exit.AreaEntered -= Exit_AreaEntered; + RestoreArea.AreaEntered -= RestoreArea_AreaEntered; + RestoreArea.AreaExited -= RestoreArea_AreaExited; + RestoreTimer.Timeout -= RestoreTimer_Timeout; } }