Map save
This commit is contained in:
@@ -60,6 +60,10 @@ public partial class App : CanvasLayer, IApp
|
|||||||
{
|
{
|
||||||
Instantiator.SceneTree.Paused = false;
|
Instantiator.SceneTree.Paused = false;
|
||||||
Game.Show();
|
Game.Show();
|
||||||
|
})
|
||||||
|
.Handle((in AppLogic.Output.ExitGame _) =>
|
||||||
|
{
|
||||||
|
GetTree().Quit();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -199,10 +199,7 @@ public partial class Game : Node3D, IGame
|
|||||||
Input.MouseMode = Input.MouseModeEnum.Visible;
|
Input.MouseMode = Input.MouseModeEnum.Visible;
|
||||||
PauseMenu.SetProcessUnhandledInput(true);
|
PauseMenu.SetProcessUnhandledInput(true);
|
||||||
})
|
})
|
||||||
.Handle((in GameLogic.Output.LoadNextFloor _) =>
|
.Handle((in GameLogic.Output.LoadNextFloor _) => { Map.SpawnNextFloor(); })
|
||||||
{
|
|
||||||
Map.SpawnNextFloor();
|
|
||||||
})
|
|
||||||
.Handle((in GameLogic.Output.HidePauseMenu _) => { PauseMenu.Hide(); })
|
.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.ExitPauseMenu _) => { PauseMenu.FadeOut(); Input.MouseMode = Input.MouseModeEnum.Visible; PauseMenu.SetProcessUnhandledInput(false); })
|
||||||
.Handle((in GameLogic.Output.ShowFloorClearMenu _) => { FloorClearMenu.Show(); FloorClearMenu.FadeIn(); })
|
.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.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.HideAskForTeleport _) => { GameRepo.Resume(); InGameUI.UseTeleportPrompt.FadeOut(); InGameUI.SetProcessInput(false); })
|
||||||
.Handle((in GameLogic.Output.ShowLostScreen _) => { DeathMenu.Show(); DeathMenu.FadeIn(); })
|
.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.Start();
|
||||||
|
|
||||||
GameLogic.Input(new GameLogic.Input.Initialize());
|
GameLogic.Input(new GameLogic.Input.Initialize());
|
||||||
@@ -440,7 +444,6 @@ public partial class Game : Node3D, IGame
|
|||||||
private void FloorClearMenu_SaveAndExit()
|
private void FloorClearMenu_SaveAndExit()
|
||||||
{
|
{
|
||||||
// Save
|
// Save
|
||||||
GameLogic.Input(new GameLogic.Input.HideFloorClearMenu());
|
|
||||||
GameLogic.Input(new GameLogic.Input.SaveGame());
|
GameLogic.Input(new GameLogic.Input.SaveGame());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,5 +37,7 @@ public partial class GameLogic
|
|||||||
public readonly record struct HideAskForTeleport;
|
public readonly record struct HideAskForTeleport;
|
||||||
|
|
||||||
public readonly record struct GoToOverworld;
|
public readonly record struct GoToOverworld;
|
||||||
|
|
||||||
|
public readonly record struct SaveGame;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ GameJamDungeon_GameLogic_State_AskForTeleport --> GameJamDungeon_GameLogic_State
|
|||||||
GameJamDungeon_GameLogic_State_AskForTeleport --> GameJamDungeon_GameLogic_State_Playing : HideAskForTeleport
|
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_FloorClearedDecisionState : GoToNextFloor
|
||||||
GameJamDungeon_GameLogic_State_FloorClearedDecisionState --> GameJamDungeon_GameLogic_State_Playing : HideFloorClearMenu
|
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_GameStarted --> GameJamDungeon_GameLogic_State_Playing : Initialize
|
||||||
GameJamDungeon_GameLogic_State_InventoryOpened --> GameJamDungeon_GameLogic_State_Playing : CloseInventory
|
GameJamDungeon_GameLogic_State_InventoryOpened --> GameJamDungeon_GameLogic_State_Playing : CloseInventory
|
||||||
GameJamDungeon_GameLogic_State_MinimapOpen --> GameJamDungeon_GameLogic_State_Playing : MiniMapButtonReleased
|
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 : OnIsPaused() → SetPauseMode
|
||||||
GameJamDungeon_GameLogic_State_FloorClearedDecisionState : OnGoToNextFloor → LoadNextFloor
|
GameJamDungeon_GameLogic_State_FloorClearedDecisionState : OnGoToNextFloor → LoadNextFloor
|
||||||
|
GameJamDungeon_GameLogic_State_FloorClearedDecisionState : OnSaveGame → SaveGame
|
||||||
GameJamDungeon_GameLogic_State_GameStarted : OnInitialize → StartGame
|
GameJamDungeon_GameLogic_State_GameStarted : OnInitialize → StartGame
|
||||||
GameJamDungeon_GameLogic_State_InventoryOpened : OnEnter → OpenInventory
|
GameJamDungeon_GameLogic_State_InventoryOpened : OnEnter → OpenInventory
|
||||||
GameJamDungeon_GameLogic_State_InventoryOpened : OnExit → HideInventory
|
GameJamDungeon_GameLogic_State_InventoryOpened : OnExit → HideInventory
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ public partial class GameLogic
|
|||||||
public partial record State
|
public partial record State
|
||||||
{
|
{
|
||||||
[Meta]
|
[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()
|
public FloorClearedDecisionState()
|
||||||
{
|
{
|
||||||
@@ -25,6 +25,12 @@ public partial class GameLogic
|
|||||||
{
|
{
|
||||||
return To<Playing>();
|
return To<Playing>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Transition On(in Input.SaveGame input)
|
||||||
|
{
|
||||||
|
Output(new Output.SaveGame());
|
||||||
|
return To<Playing>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,12 +88,11 @@ public partial class Map : Node3D, IMap
|
|||||||
|
|
||||||
private void LoadFloor()
|
private void LoadFloor()
|
||||||
{
|
{
|
||||||
var currentFloorScene = _floors.First();
|
var currentFloorScene = FloorScenes.First();
|
||||||
var instantiator = new Instantiator(GetTree());
|
var instantiator = new Instantiator(GetTree());
|
||||||
var loadedScene = instantiator.LoadAndInstantiate<Node3D>(currentFloorScene.ResourcePath);
|
var loadedScene = instantiator.LoadAndInstantiate<Node3D>(currentFloorScene);
|
||||||
AddChild(loadedScene);
|
AddChild(loadedScene);
|
||||||
CurrentFloor = (IDungeonFloor)loadedScene;
|
CurrentFloor = (IDungeonFloor)loadedScene;
|
||||||
_floors.Remove(currentFloorScene);
|
FloorScenes.Remove(currentFloorScene);
|
||||||
FloorScenes.Remove(currentFloorScene.ResourcePath);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user