General UI Work
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user