diff --git a/Zennysoft.Game.Ma.Implementation/App/State/States/AppLogic.State.MainMenu.cs b/Zennysoft.Game.Ma.Implementation/App/State/States/AppLogic.State.MainMenu.cs index e11e9615..61213927 100644 --- a/Zennysoft.Game.Ma.Implementation/App/State/States/AppLogic.State.MainMenu.cs +++ b/Zennysoft.Game.Ma.Implementation/App/State/States/AppLogic.State.MainMenu.cs @@ -14,6 +14,7 @@ public partial class AppLogic } public Transition On(in Input.NewGame input) => To(); + public Transition On(in Input.EnemyViewerOpened input) => To(); } } diff --git a/Zennysoft.Game.Ma/project.godot b/Zennysoft.Game.Ma/project.godot index b722fdb2..c2d1c2fd 100644 --- a/Zennysoft.Game.Ma/project.godot +++ b/Zennysoft.Game.Ma/project.godot @@ -186,11 +186,13 @@ Interact={ Next={ "deadzone": 0.2, "events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } Previous={ "deadzone": 0.2, "events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } Save={ diff --git a/Zennysoft.Game.Ma/src/app/App.cs b/Zennysoft.Game.Ma/src/app/App.cs index 56bec27e..110e40de 100644 --- a/Zennysoft.Game.Ma/src/app/App.cs +++ b/Zennysoft.Game.Ma/src/app/App.cs @@ -36,7 +36,9 @@ public partial class App : Node, IApp private Array _progress; - private AutoProp _loaded = new(false); + private AutoProp _loadedScene = new(string.Empty); + private bool _loadingGame = false; + private bool _loadingEnemyViewer = false; public void Initialize() { @@ -47,8 +49,9 @@ public partial class App : Node, IApp MainMenu.NewGame += OnNewGame; MainMenu.LoadGame += OnLoadGame; + MainMenu.EnemyViewer += OnEnemyViewer; MainMenu.Quit += OnQuit; - _loaded.Sync += OnGameLoaded; + _loadedScene.Changed += OnGameLoaded; Instantiator = new Instantiator(GetTree()); @@ -63,16 +66,13 @@ public partial class App : Node, IApp this.Provide(); } - private void OnGameLoaded(bool gameLoaded) + private void OnGameLoaded(string sceneName) { - if (gameLoaded) - { - Loading.Hide(); - var gameScene = (PackedScene)ResourceLoader.LoadThreadedGet(GAME_SCENE_PATH); - var game = gameScene.Instantiate(); - AddChild(game); - Instantiator.SceneTree.Paused = false; - } + Loading.Hide(); + var scene = (PackedScene)ResourceLoader.LoadThreadedGet(sceneName); + var node = scene.Instantiate(); + AddChild(node); + Instantiator.SceneTree.Paused = false; } public void OnReady() @@ -88,7 +88,8 @@ public partial class App : Node, IApp }) .Handle((in AppLogic.Output.SetupGameScene _) => { - ResourceLoader.LoadThreadedRequest(GAME_SCENE_PATH, useSubThreads: true, cacheMode: ResourceLoader.CacheMode.Ignore); + ResourceLoader.LoadThreadedRequest(GAME_SCENE_PATH); + _loadingGame = true; MainMenu.Hide(); }) .Handle((in AppLogic.Output.ShowMainMenu _) => @@ -102,7 +103,9 @@ public partial class App : Node, IApp }) .Handle((in AppLogic.Output.EnemyViewerOpened _) => { - Instantiator.LoadAndInstantiate(ENEMY_VIEWER_PATH); + ResourceLoader.LoadThreadedRequest(ENEMY_VIEWER_PATH); + _loadingEnemyViewer = true; + MainMenu.Hide(); }) .Handle((in AppLogic.Output.ExitGame _) => { @@ -115,16 +118,25 @@ public partial class App : Node, IApp public override void _Process(double delta) { - if (!_loaded.Value) + if (_loadingGame) { ResourceLoader.LoadThreadedGetStatus(GAME_SCENE_PATH, _progress); if ((double)_progress.Single() == 1) - _loaded.OnNext(true); + _loadedScene.OnNext(GAME_SCENE_PATH); + } + + if (_loadingEnemyViewer) + { + ResourceLoader.LoadThreadedGetStatus(ENEMY_VIEWER_PATH, _progress); + if ((double)_progress.Single() == 1) + _loadedScene.OnNext(ENEMY_VIEWER_PATH); } } public void OnNewGame() => AppLogic.Input(new AppLogic.Input.NewGame()); + private void OnEnemyViewer() => AppLogic.Input(new AppLogic.Input.EnemyViewerOpened()); + private void OnLoadGame() => AppLogic.Input(new AppLogic.Input.LoadGame()); public void OnQuit() => AppLogic.Input(new AppLogic.Input.QuitGame()); diff --git a/Zennysoft.Game.Ma/src/data_viewer/DataViewer.tscn b/Zennysoft.Game.Ma/src/data_viewer/DataViewer.tscn index 42540d36..cc5cfbb6 100644 --- a/Zennysoft.Game.Ma/src/data_viewer/DataViewer.tscn +++ b/Zennysoft.Game.Ma/src/data_viewer/DataViewer.tscn @@ -152,11 +152,10 @@ offset_top = -228.0 grow_horizontal = 0 grow_vertical = 0 theme = ExtResource("2_bef6s") -text = "Switch: L1/R1 -Primary Attack: X -Secondary Attack: ◻ -Activate: △ -Press ○ to exit" +text = "Switch: L1/R1 or <- -> +Primary Attack: X (Space) +Secondary Attack: ◻ (RMB) +Activate: △ (E)" [node name="DataViewerRepository" parent="." instance=ExtResource("3_ejdn0")] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/game/Game.cs b/Zennysoft.Game.Ma/src/game/Game.cs index 6b7672c8..ea552c7c 100644 --- a/Zennysoft.Game.Ma/src/game/Game.cs +++ b/Zennysoft.Game.Ma/src/game/Game.cs @@ -41,8 +41,6 @@ public partial class Game : Node3D, IGame [Node] private DeathMenu DeathMenu { get; set; } = default!; [Node] private IPauseMenu PauseMenu { get; set; } = default!; - - [Node] private Timer DoubleEXPTimer { get; set; } = default!; #endregion #region Save @@ -238,8 +236,6 @@ public partial class Game : Node3D, IGame GameRepo.RestorativePickedUp += GameEventDepot_RestorativePickedUp; - DoubleEXPTimer.Timeout += DoubleEXPTimer_Timeout; - DeathMenu.NewGame += OnContinueGame; DeathMenu.QuitGame += OnQuit; @@ -398,8 +394,6 @@ public partial class Game : Node3D, IGame private void IsPaused_Sync(bool isPaused) => GetTree().Paused = isPaused; - private void DoubleEXPTimer_Timeout() => GameRepo.EndDoubleExp(); - private void FinishedLoadingSaveFile() => EmitSignal(SignalName.SaveFileLoaded); private void EnactConsumableItemEffects(ConsumableItem consumableItem) diff --git a/Zennysoft.Game.Ma/src/game/Game.tscn b/Zennysoft.Game.Ma/src/game/Game.tscn index 14502ee0..f2a8dcae 100644 --- a/Zennysoft.Game.Ma/src/game/Game.tscn +++ b/Zennysoft.Game.Ma/src/game/Game.tscn @@ -42,12 +42,6 @@ render_target_update_mode = 4 unique_name_in_owner = true process_mode = 1 -[node name="StatusEffectTimers" type="Node" parent="SubViewportContainer/SubViewport/PauseContainer"] - -[node name="DoubleEXPTimer" type="Timer" parent="SubViewportContainer/SubViewport/PauseContainer/StatusEffectTimers"] -unique_name_in_owner = true -wait_time = 30.0 - [node name="InGameUI" parent="." instance=ExtResource("5_lxtnp")] unique_name_in_owner = true custom_minimum_size = Vector2(1280, 720) diff --git a/Zennysoft.Game.Ma/src/menu/MainMenu.cs b/Zennysoft.Game.Ma/src/menu/MainMenu.cs index ef44c39b..898f7d87 100644 --- a/Zennysoft.Game.Ma/src/menu/MainMenu.cs +++ b/Zennysoft.Game.Ma/src/menu/MainMenu.cs @@ -9,6 +9,8 @@ public interface IMainMenu : IControl { event MainMenu.NewGameEventHandler NewGame; event MainMenu.LoadGameEventHandler LoadGame; + event MainMenu.EnemyViewerEventHandler EnemyViewer; + event MainMenu.GalleryEventHandler Gallery; event MainMenu.QuitEventHandler Quit; void FadeIn();