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()
|
public override void InitializeDungeon()
|
||||||
{
|
{
|
||||||
Show();
|
Show();
|
||||||
Exit.AreaEntered += Exit_AreaEntered;
|
Exit.AreaEntered += Exit_AreaEntered;
|
||||||
RestoreArea.AreaEntered += RestoreArea_AreaEntered;
|
RestoreArea.AreaEntered += RestoreArea_AreaEntered;
|
||||||
RestoreArea.AreaExited += RestoreArea_AreaExited;
|
RestoreArea.AreaExited += RestoreArea_AreaExited;
|
||||||
RestoreTimer = new Timer();
|
RestoreTimer = new Timer();
|
||||||
RestoreTimer.WaitTime = 0.3f;
|
RestoreTimer.WaitTime = 0.3f;
|
||||||
RestoreTimer.Timeout += RestoreTimer_Timeout;
|
RestoreTimer.Timeout += RestoreTimer_Timeout;
|
||||||
AddChild(RestoreTimer);
|
AddChild(RestoreTimer);
|
||||||
FloorIsLoaded = true;
|
FloorIsLoaded = true;
|
||||||
|
|
||||||
Game.ItemRescueMenu.SetProcessInput(false);
|
Game.ItemRescueMenu.SetProcessInput(false);
|
||||||
var torches = DeathTorches.GetChildren().OfType<Torch>().ToList();
|
var torches = DeathTorches.GetChildren().OfType<Torch>().ToList();
|
||||||
var torchesToLight = Mathf.Min(Game.QuestData.DeathCount, 15);
|
var torchesToLight = Mathf.Min(Game.QuestData.DeathCount, 15);
|
||||||
for (var i = 0; i < torchesToLight; i++)
|
for (var i = 0; i < torchesToLight; i++)
|
||||||
torches[i].Show();
|
torches[i].Show();
|
||||||
|
|
||||||
ItemRescueInteractZone.AreaEntered += ItemRescueInteractZone_AreaEntered;
|
ItemRescueInteractZone.AreaEntered += ItemRescueInteractZone_AreaEntered;
|
||||||
var dimmableAudio = DimmableAudio.GetChildren().OfType<IDimmableAudioStreamPlayer>();
|
ItemRescueInteractZone.AreaExited += ItemRescueInteractZone_AreaExited;
|
||||||
foreach (var dimmable in dimmableAudio)
|
var dimmableAudio = DimmableAudio.GetChildren().OfType<IDimmableAudioStreamPlayer>();
|
||||||
dimmable.FadeIn();
|
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()
|
public void OnResolved()
|
||||||
{
|
{
|
||||||
Game.ItemRescueMenu.MenuClosing += ItemRescueMenu_MenuClosing;
|
Game.ItemRescueMenu.MenuClosing += ItemRescueMenu_MenuClosing;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ItemRescueMenu_MenuClosing()
|
private void ItemRescueMenu_MenuClosing()
|
||||||
{
|
{
|
||||||
GameRepo.Resume();
|
GameRepo.Resume();
|
||||||
Game.ItemRescueMenu.SetProcessInput(false);
|
Game.ItemRescueMenu.SetProcessInput(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ItemRescueInteractZone_AreaEntered(Area3D area)
|
private void ItemRescueInteractZone_AreaEntered(Area3D area) => _insideItemRescueZone = true;
|
||||||
{
|
|
||||||
GameRepo.Pause();
|
|
||||||
Game.ItemRescueMenu.Show();
|
|
||||||
Game.ItemRescueMenu.SetProcessInput(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RestoreTimer_Timeout()
|
private void RestoreTimer_Timeout()
|
||||||
{
|
{
|
||||||
if (!Player.HealthComponent.AtFullHealth)
|
if (!Player.HealthComponent.AtFullHealth)
|
||||||
Player.HealthComponent.Heal(1);
|
Player.HealthComponent.Heal(1);
|
||||||
if (!Player.VTComponent.AtFullVT)
|
if (!Player.VTComponent.AtFullVT)
|
||||||
Player.VTComponent.Restore(1);
|
Player.VTComponent.Restore(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RestoreArea_AreaExited(Area3D area)
|
private void RestoreArea_AreaExited(Area3D area)
|
||||||
{
|
{
|
||||||
if (area.GetOwner() is IPlayer)
|
if (area.GetOwner() is IPlayer)
|
||||||
{
|
{
|
||||||
RestoreTimer.Stop();
|
RestoreTimer.Stop();
|
||||||
Player.SetHealthTimerStatus(true);
|
Player.SetHealthTimerStatus(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RestoreArea_AreaEntered(Area3D area)
|
private void RestoreArea_AreaEntered(Area3D area)
|
||||||
{
|
{
|
||||||
if (area.GetOwner() is IPlayer)
|
if (area.GetOwner() is IPlayer)
|
||||||
{
|
{
|
||||||
RestoreTimer.Start();
|
RestoreTimer.Start();
|
||||||
Player.SetHealthTimerStatus(false);
|
Player.SetHealthTimerStatus(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Exit_AreaEntered(Area3D area)
|
private void Exit_AreaEntered(Area3D area)
|
||||||
{
|
{
|
||||||
if (area.GetOwner() is IPlayer)
|
if (area.GetOwner() is IPlayer)
|
||||||
ExitReached();
|
ExitReached();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExitReached() => Game.FloorExitReached();
|
public void ExitReached() => Game.FloorExitReached();
|
||||||
@@ -113,10 +121,10 @@ public partial class Overworld : SpecialFloor, IDungeonFloor
|
|||||||
|
|
||||||
public void OnExitTree()
|
public void OnExitTree()
|
||||||
{
|
{
|
||||||
Exit.AreaEntered -= Exit_AreaEntered;
|
Exit.AreaEntered -= Exit_AreaEntered;
|
||||||
RestoreArea.AreaEntered -= RestoreArea_AreaEntered;
|
RestoreArea.AreaEntered -= RestoreArea_AreaEntered;
|
||||||
RestoreArea.AreaExited -= RestoreArea_AreaExited;
|
RestoreArea.AreaExited -= RestoreArea_AreaExited;
|
||||||
RestoreTimer.Timeout -= RestoreTimer_Timeout;
|
RestoreTimer.Timeout -= RestoreTimer_Timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user