General UI Work

This commit is contained in:
2025-12-03 23:21:29 -08:00
parent 34742d568e
commit 6f90a0985a
58 changed files with 1999 additions and 1621 deletions

View File

@@ -38,7 +38,7 @@ public partial class Game : Node3D, IGame
[Node] private InGameUI InGameUI { get; set; } = default!;
[Node] private IFloorClearMenu FloorClearMenu { get; set; } = default!;
[Node] private IFloorClearMenu LoadNextLevel { get; set; } = default!;
[Node] private DeathMenu DeathMenu { get; set; } = default!;
@@ -71,6 +71,8 @@ public partial class Game : Node3D, IGame
private IPlayer _player;
private IMap _map;
[Signal] private delegate void OnLoadLevelRequestEventHandler();
public Game()
{
_container = new SimpleInjector.Container();
@@ -156,14 +158,18 @@ public partial class Game : Node3D, IGame
InGameUI.UseTeleportPrompt.TeleportToNextFloor += UseTeleportPrompt_TeleportToNextFloor;
InGameUI.UseTeleportPrompt.CloseTeleportPrompt += UseTeleportPrompt_CloseTeleportPrompt;
FloorClearMenu.GoToNextFloor += FloorClearMenu_GoToNextFloor;
FloorClearMenu.Exit += FloorClearMenu_Exit;
FloorClearMenu.TransitionCompleted += FloorClearMenu_TransitionCompleted;
LoadNextLevel.GoToNextFloor += FloorClearMenu_GoToNextFloor;
LoadNextLevel.Exit += FloorClearMenu_Exit;
LoadNextLevel.TransitionCompleted += FloorClearMenu_TransitionCompleted;
OnLoadLevelRequest += LoadLevel;
GameRepo.RestorativePickedUp += GameEventDepot_RestorativePickedUp;
_player.Inventory.BroadcastMessage += BroadcastMessage;
_map.FloorLoaded += OnFloorLoadFinished;
_player.PlayerDied += GameOver;
DeathMenu.NewGame += OnNewGame;
DeathMenu.QuitGame += OnQuit;
@@ -303,13 +309,13 @@ public partial class Game : Node3D, IGame
.Handle((in GameState.Output.OpenFloorExitScreen _) =>
{
InGameUI.UseTeleportPrompt.FadeOut();
FloorClearMenu.Show();
FloorClearMenu.FadeIn();
LoadNextLevel.Show();
LoadNextLevel.FadeIn();
})
.Handle((in GameState.Output.LoadNextFloor _) =>
{
FloorClearMenu.FadeOut();
Task.Run(() => _map.LoadFloor());
LoadNextLevel.FadeOut();
EmitSignal(SignalName.OnLoadLevelRequest);
Task.Run(() => Save());
if (_player.EquipmentComponent.EquippedWeapon.Value.ItemTag == ItemTag.BreaksOnChange)
{
@@ -329,7 +335,7 @@ public partial class Game : Node3D, IGame
_player.Unequip(itemToDestroy);
_player.Inventory.Remove(itemToDestroy);
}
FloorClearMenu.FadeOut();
LoadNextLevel.FadeOut();
})
.Handle((in GameState.Output.GameOver _) =>
{
@@ -345,6 +351,8 @@ public partial class Game : Node3D, IGame
InGameUI.Hide();
}
private async void LoadLevel() => await _map.LoadFloor();
private void FloorClearMenu_GoToNextFloor() => GameState.Input(new GameState.Input.LoadNextFloor());
private void DropRestorative(Vector3 vector)
@@ -494,15 +502,20 @@ public partial class Game : Node3D, IGame
GameRepo.Resume();
}
private void OnFloorLoadFinished()
{
LoadNextLevel.Hide();
}
private void OnQuit() => GetTree().Root.QueueFree();
public void OnExitTree()
{
InGameUI.UseTeleportPrompt.TeleportToNextFloor -= UseTeleportPrompt_TeleportToNextFloor;
InGameUI.UseTeleportPrompt.CloseTeleportPrompt -= UseTeleportPrompt_CloseTeleportPrompt;
FloorClearMenu.GoToNextFloor -= FloorClearMenu_GoToNextFloor;
FloorClearMenu.Exit -= FloorClearMenu_Exit;
FloorClearMenu.TransitionCompleted -= FloorClearMenu_TransitionCompleted;
LoadNextLevel.GoToNextFloor -= FloorClearMenu_GoToNextFloor;
LoadNextLevel.Exit -= FloorClearMenu_Exit;
LoadNextLevel.TransitionCompleted -= FloorClearMenu_TransitionCompleted;
_player.Inventory.BroadcastMessage -= BroadcastMessage;