Fix menus between floors

This commit is contained in:
2025-06-28 00:30:16 -07:00
parent 39f791e2b4
commit f33616dda4
11 changed files with 104 additions and 11 deletions

View File

@@ -211,14 +211,20 @@ public partial class Game : Node3D, IGame
InGameUI.PlayerInfoUI.Show();
GameRepo.Resume();
})
.Handle((in GameState.Output.OpenFloorExitScreen _) =>
.Handle((in GameState.Output.OpenTeleportScreen _) =>
{
InGameUI.UseTeleportPrompt.Show();
InGameUI.UseTeleportPrompt.FadeIn();
})
.Handle((in GameState.Output.LoadNextFloor _) =>
.Handle((in GameState.Output.OpenFloorExitScreen _) =>
{
InGameUI.UseTeleportPrompt.FadeOut();
FloorClearMenu.Show();
FloorClearMenu.FadeIn();
})
.Handle((in GameState.Output.LoadNextFloor _) =>
{
FloorClearMenu.FadeOut();
Map.SpawnNextFloor();
if (Player.EquippedWeapon.Value.ItemTag == ItemTag.BreaksOnChange)
{
@@ -249,6 +255,9 @@ public partial class Game : Node3D, IGame
GameState.Start();
this.Provide();
InGameUI.UseTeleportPrompt.TeleportToNextFloor += UseTeleportPrompt_TeleportToNextFloor;
InGameUI.UseTeleportPrompt.CloseTeleportPrompt += UseTeleportPrompt_CloseTeleportPrompt;
FloorClearMenu.GoToNextFloor += FloorClearMenu_GoToNextFloor;
FloorClearMenu.SaveAndExit += FloorClearMenu_SaveAndExit;
FloorClearMenu.TransitionCompleted += FloorClearMenu_TransitionCompleted;
GameRepo.RestorativePickedUp += GameEventDepot_RestorativePickedUp;
@@ -269,6 +278,16 @@ public partial class Game : Node3D, IGame
MainMenu.Show();
}
private void FloorClearMenu_SaveAndExit()
{
//SaveFile.Save();
Player.Deactivate();
GameState.Input(new GameState.Input.ReturnToMainMenu());
InGameUI.Hide();
MainMenu.FadeIn();
}
private void FloorClearMenu_GoToNextFloor() => GameState.Input(new GameState.Input.LoadNextFloor());
public void LoadExistingGame() => SaveFile.Load().ContinueWith((_) => CallDeferred(nameof(FinishedLoadingSaveFile)));
public void InitializeGame()
@@ -382,16 +401,19 @@ public partial class Game : Node3D, IGame
restorative.GlobalPosition = vector;
}
private void UseTeleportPrompt_TeleportToNextFloor()
private void UseTeleportPrompt_CloseTeleportPrompt()
{
InGameUI.UseTeleportPrompt.FadeIn();
GameState.Input(new GameState.Input.LoadNextFloor());
GameEventDepot.OnDungeonAThemeAreaEntered();
GameState.Input(new GameState.Input.CloseTeleport());
InGameUI.UseTeleportPrompt.FadeOut();
GameRepo.Resume();
}
private void UseTeleportPrompt_TeleportToNextFloor() => GameState.Input(new GameState.Input.UseTeleport());
private void FloorClearMenu_TransitionCompleted()
{
GameRepo.Resume();
GameEventDepot.OnDungeonAThemeAreaEntered();
}
private void GameEventDepot_RestorativePickedUp(IHealthPack obj) => Player.Stats.SetCurrentVT(Player.Stats.CurrentVT.Value + (int)obj.RestoreAmount);