Use button prompt for inventory rescue menu
This commit is contained in:
@@ -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<Torch>().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<Torch>().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<IDimmableAudioStreamPlayer>();
|
||||
foreach (var dimmable in dimmableAudio)
|
||||
dimmable.FadeIn();
|
||||
ItemRescueInteractZone.AreaEntered += ItemRescueInteractZone_AreaEntered;
|
||||
ItemRescueInteractZone.AreaExited += ItemRescueInteractZone_AreaExited;
|
||||
var dimmableAudio = DimmableAudio.GetChildren().OfType<IDimmableAudioStreamPlayer>();
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user