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;
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
[ext_resource type="Script" uid="uid://chftlu4proh3d" path="res://src/game/Game.cs" id="1_ytcii"]
|
||||
[ext_resource type="PackedScene" uid="uid://b1muxus5qdbeu" path="res://src/ui/in_game_ui/InGameUI.tscn" id="5_lxtnp"]
|
||||
[ext_resource type="PackedScene" uid="uid://cgwiwufvxvfs4" path="res://src/ui/load_next_level/LoadNextLevel.tscn" id="7_yw8km"]
|
||||
[ext_resource type="Script" uid="uid://cbal5oeaha4nx" path="res://src/ui/pause_menu/PauseMenu.cs" id="11_5ng8c"]
|
||||
[ext_resource type="PackedScene" uid="uid://pu6gp8de3ck4" path="res://src/ui/floor_clear/FloorClearMenu.tscn" id="11_rya1n"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbtfgrtgpr4qg" path="res://src/ui/death_menu/DeathMenu.tscn" id="11_wypid"]
|
||||
[ext_resource type="PackedScene" uid="uid://blbqgw3wosc1w" path="res://src/ui/pause_menu/PauseMenu.tscn" id="12_yev8k"]
|
||||
|
||||
@@ -39,9 +39,8 @@ custom_minimum_size = Vector2(1280, 720)
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
[node name="FloorClearMenu" parent="." instance=ExtResource("11_rya1n")]
|
||||
[node name="LoadNextLevel" parent="." instance=ExtResource("7_yw8km")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
[node name="PauseMenu" parent="." instance=ExtResource("12_yev8k")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
Reference in New Issue
Block a user