This commit is contained in:
2025-03-05 01:14:23 -08:00
parent 819dd672aa
commit 3d3ebc11d1
6 changed files with 27 additions and 11 deletions

View File

@@ -60,6 +60,10 @@ public partial class App : CanvasLayer, IApp
{
Instantiator.SceneTree.Paused = false;
Game.Show();
})
.Handle((in AppLogic.Output.ExitGame _) =>
{
GetTree().Quit();
});

View File

@@ -199,10 +199,7 @@ public partial class Game : Node3D, IGame
Input.MouseMode = Input.MouseModeEnum.Visible;
PauseMenu.SetProcessUnhandledInput(true);
})
.Handle((in GameLogic.Output.LoadNextFloor _) =>
{
Map.SpawnNextFloor();
})
.Handle((in GameLogic.Output.LoadNextFloor _) => { Map.SpawnNextFloor(); })
.Handle((in GameLogic.Output.HidePauseMenu _) => { PauseMenu.Hide(); })
.Handle((in GameLogic.Output.ExitPauseMenu _) => { PauseMenu.FadeOut(); Input.MouseMode = Input.MouseModeEnum.Visible; PauseMenu.SetProcessUnhandledInput(false); })
.Handle((in GameLogic.Output.ShowFloorClearMenu _) => { FloorClearMenu.Show(); FloorClearMenu.FadeIn(); })
@@ -214,7 +211,14 @@ public partial class Game : Node3D, IGame
.Handle((in GameLogic.Output.ShowAskForTeleport _) => { GameRepo.Pause(); InGameUI.UseTeleportPrompt.FadeIn(); InGameUI.SetProcessInput(true); })
.Handle((in GameLogic.Output.HideAskForTeleport _) => { GameRepo.Resume(); InGameUI.UseTeleportPrompt.FadeOut(); InGameUI.SetProcessInput(false); })
.Handle((in GameLogic.Output.ShowLostScreen _) => { DeathMenu.Show(); DeathMenu.FadeIn(); })
.Handle((in GameLogic.Output.ExitLostScreen _) => { DeathMenu.FadeOut(); });
.Handle((in GameLogic.Output.ExitLostScreen _) => { DeathMenu.FadeOut(); })
.Handle((in GameLogic.Output.SaveGame _) =>
{
Save();
AppRepo.OnExitGame();
GetTree().Quit();
// Back to title screen
});
GameLogic.Start();
GameLogic.Input(new GameLogic.Input.Initialize());
@@ -440,7 +444,6 @@ public partial class Game : Node3D, IGame
private void FloorClearMenu_SaveAndExit()
{
// Save
GameLogic.Input(new GameLogic.Input.HideFloorClearMenu());
GameLogic.Input(new GameLogic.Input.SaveGame());
}

View File

@@ -37,5 +37,7 @@ public partial class GameLogic
public readonly record struct HideAskForTeleport;
public readonly record struct GoToOverworld;
public readonly record struct SaveGame;
}
}

View File

@@ -16,6 +16,7 @@ GameJamDungeon_GameLogic_State_AskForTeleport --> GameJamDungeon_GameLogic_State
GameJamDungeon_GameLogic_State_AskForTeleport --> GameJamDungeon_GameLogic_State_Playing : HideAskForTeleport
GameJamDungeon_GameLogic_State_FloorClearedDecisionState --> GameJamDungeon_GameLogic_State_FloorClearedDecisionState : GoToNextFloor
GameJamDungeon_GameLogic_State_FloorClearedDecisionState --> GameJamDungeon_GameLogic_State_Playing : HideFloorClearMenu
GameJamDungeon_GameLogic_State_FloorClearedDecisionState --> GameJamDungeon_GameLogic_State_Playing : SaveGame
GameJamDungeon_GameLogic_State_GameStarted --> GameJamDungeon_GameLogic_State_Playing : Initialize
GameJamDungeon_GameLogic_State_InventoryOpened --> GameJamDungeon_GameLogic_State_Playing : CloseInventory
GameJamDungeon_GameLogic_State_MinimapOpen --> GameJamDungeon_GameLogic_State_Playing : MiniMapButtonReleased
@@ -30,6 +31,7 @@ GameJamDungeon_GameLogic_State_Resuming --> GameJamDungeon_GameLogic_State_Playi
GameJamDungeon_GameLogic_State : OnIsPaused() → SetPauseMode
GameJamDungeon_GameLogic_State_FloorClearedDecisionState : OnGoToNextFloor → LoadNextFloor
GameJamDungeon_GameLogic_State_FloorClearedDecisionState : OnSaveGame → SaveGame
GameJamDungeon_GameLogic_State_GameStarted : OnInitialize → StartGame
GameJamDungeon_GameLogic_State_InventoryOpened : OnEnter → OpenInventory
GameJamDungeon_GameLogic_State_InventoryOpened : OnExit → HideInventory

View File

@@ -7,7 +7,7 @@ public partial class GameLogic
public partial record State
{
[Meta]
public partial record FloorClearedDecisionState : Playing, IGet<Input.GoToNextFloor>, IGet<Input.HideFloorClearMenu>
public partial record FloorClearedDecisionState : Playing, IGet<Input.GoToNextFloor>, IGet<Input.SaveGame>, IGet<Input.HideFloorClearMenu>
{
public FloorClearedDecisionState()
{
@@ -25,6 +25,12 @@ public partial class GameLogic
{
return To<Playing>();
}
public Transition On(in Input.SaveGame input)
{
Output(new Output.SaveGame());
return To<Playing>();
}
}
}
}

View File

@@ -88,12 +88,11 @@ public partial class Map : Node3D, IMap
private void LoadFloor()
{
var currentFloorScene = _floors.First();
var currentFloorScene = FloorScenes.First();
var instantiator = new Instantiator(GetTree());
var loadedScene = instantiator.LoadAndInstantiate<Node3D>(currentFloorScene.ResourcePath);
var loadedScene = instantiator.LoadAndInstantiate<Node3D>(currentFloorScene);
AddChild(loadedScene);
CurrentFloor = (IDungeonFloor)loadedScene;
_floors.Remove(currentFloorScene);
FloorScenes.Remove(currentFloorScene.ResourcePath);
FloorScenes.Remove(currentFloorScene);
}
}