diff --git a/Zennysoft.Game.Ma/src/game/GameLogic.Input.cs b/Zennysoft.Game.Ma.Implementation/Game/GameLogic.Input.cs similarity index 95% rename from Zennysoft.Game.Ma/src/game/GameLogic.Input.cs rename to Zennysoft.Game.Ma.Implementation/Game/GameLogic.Input.cs index cfc00ded..fe302b1d 100644 --- a/Zennysoft.Game.Ma/src/game/GameLogic.Input.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/GameLogic.Input.cs @@ -1,4 +1,4 @@ -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class GameLogic { diff --git a/Zennysoft.Game.Ma/src/game/GameLogic.Output.cs b/Zennysoft.Game.Ma.Implementation/Game/GameLogic.Output.cs similarity index 91% rename from Zennysoft.Game.Ma/src/game/GameLogic.Output.cs rename to Zennysoft.Game.Ma.Implementation/Game/GameLogic.Output.cs index 36e4eda4..c37f6c5f 100644 --- a/Zennysoft.Game.Ma/src/game/GameLogic.Output.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/GameLogic.Output.cs @@ -1,4 +1,4 @@ -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class GameLogic { @@ -28,6 +28,8 @@ public partial class GameLogic public readonly record struct LoadNextFloor; + public readonly record struct LoadMap; + public readonly record struct ShowFloorClearMenu; public readonly record struct ExitFloorClearMenu; diff --git a/Zennysoft.Game.Ma/src/game/GameLogic.State.cs b/Zennysoft.Game.Ma.Implementation/Game/GameLogic.State.cs similarity index 92% rename from Zennysoft.Game.Ma/src/game/GameLogic.State.cs rename to Zennysoft.Game.Ma.Implementation/Game/GameLogic.State.cs index bb192201..c2de3c8f 100644 --- a/Zennysoft.Game.Ma/src/game/GameLogic.State.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/GameLogic.State.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Chickensoft.LogicBlocks; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class GameLogic { diff --git a/Zennysoft.Game.Ma/src/game/GameLogic.cs b/Zennysoft.Game.Ma.Implementation/Game/GameLogic.cs similarity index 88% rename from Zennysoft.Game.Ma/src/game/GameLogic.cs rename to Zennysoft.Game.Ma.Implementation/Game/GameLogic.cs index 6e1d83f7..05d1f000 100644 --- a/Zennysoft.Game.Ma/src/game/GameLogic.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/GameLogic.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Chickensoft.LogicBlocks; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public interface IGameLogic : ILogicBlock; diff --git a/Zennysoft.Game.Ma/src/game/GameRepo.cs b/Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs similarity index 97% rename from Zennysoft.Game.Ma/src/game/GameRepo.cs rename to Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs index c8eac60a..709538b1 100644 --- a/Zennysoft.Game.Ma/src/game/GameRepo.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs @@ -2,7 +2,7 @@ using Godot; using System; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public interface IGameRepo : IDisposable { diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.AskForTeleport.cs b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.AskForTeleport.cs similarity index 93% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.AskForTeleport.cs rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.AskForTeleport.cs index 35540a6f..c9ef37d6 100644 --- a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.AskForTeleport.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.AskForTeleport.cs @@ -1,6 +1,6 @@ using Chickensoft.Introspection; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class GameLogic { diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.AskForTeleport.cs.uid b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.AskForTeleport.cs.uid similarity index 100% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.AskForTeleport.cs.uid rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.AskForTeleport.cs.uid diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.FloorCleared.cs b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.FloorCleared.cs similarity index 95% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.FloorCleared.cs rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.FloorCleared.cs index 5f345ced..4492ea34 100644 --- a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.FloorCleared.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.FloorCleared.cs @@ -1,6 +1,6 @@ using Chickensoft.Introspection; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class GameLogic { diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.FloorCleared.cs.uid b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.FloorCleared.cs.uid similarity index 100% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.FloorCleared.cs.uid rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.FloorCleared.cs.uid diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.GameStarted.cs.uid b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.GameStarted.cs.uid similarity index 100% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.GameStarted.cs.uid rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.GameStarted.cs.uid diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.InventoryOpened.cs b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.InventoryOpened.cs similarity index 93% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.InventoryOpened.cs rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.InventoryOpened.cs index c4872439..e945a3f3 100644 --- a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.InventoryOpened.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.InventoryOpened.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Chickensoft.LogicBlocks; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class GameLogic { diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.InventoryOpened.cs.uid b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.InventoryOpened.cs.uid similarity index 100% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.InventoryOpened.cs.uid rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.InventoryOpened.cs.uid diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.MenuBackdrop.cs b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.MenuBackdrop.cs similarity index 89% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.MenuBackdrop.cs rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.MenuBackdrop.cs index 79797531..fed755a5 100644 --- a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.MenuBackdrop.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.MenuBackdrop.cs @@ -1,4 +1,4 @@ -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; using Chickensoft.Introspection; using Zennysoft.Game.Abstractions; @@ -20,7 +20,7 @@ public partial class GameLogic public Transition On(in Input.StartGame input) { - Get().LoadMap(); + Output(new Output.LoadMap()); return To(); } diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.MenuBackdrop.cs.uid b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.MenuBackdrop.cs.uid similarity index 100% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.MenuBackdrop.cs.uid rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.MenuBackdrop.cs.uid diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.MiniMapOpen.cs b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.MiniMapOpen.cs similarity index 92% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.MiniMapOpen.cs rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.MiniMapOpen.cs index 0e801388..9cae582f 100644 --- a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.MiniMapOpen.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.MiniMapOpen.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Chickensoft.LogicBlocks; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class GameLogic { diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.MiniMapOpen.cs.uid b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.MiniMapOpen.cs.uid similarity index 100% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.MiniMapOpen.cs.uid rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.MiniMapOpen.cs.uid diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Paused.cs b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Paused.cs similarity index 92% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Paused.cs rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Paused.cs index f34a9e04..cc13a589 100644 --- a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Paused.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Paused.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Chickensoft.LogicBlocks; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class GameLogic { diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Paused.cs.uid b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Paused.cs.uid similarity index 100% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Paused.cs.uid rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Paused.cs.uid diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Playing.cs b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Playing.cs similarity index 96% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Playing.cs rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Playing.cs index 523a7abe..91058bb3 100644 --- a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Playing.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Playing.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Chickensoft.LogicBlocks; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class GameLogic { diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Playing.cs.uid b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Playing.cs.uid similarity index 100% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Playing.cs.uid rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Playing.cs.uid diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Quit.cs b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Quit.cs similarity index 87% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Quit.cs rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Quit.cs index 2a4eb166..c18de883 100644 --- a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Quit.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Quit.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Chickensoft.LogicBlocks; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class GameLogic { diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Quit.cs.uid b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Quit.cs.uid similarity index 100% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Quit.cs.uid rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Quit.cs.uid diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Resuming.cs b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Resuming.cs similarity index 91% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Resuming.cs rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Resuming.cs index a70692d8..555714dd 100644 --- a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Resuming.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Resuming.cs @@ -1,4 +1,4 @@ -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; using Chickensoft.Introspection; using Chickensoft.LogicBlocks; diff --git a/Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Resuming.cs.uid b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Resuming.cs.uid similarity index 100% rename from Zennysoft.Game.Ma/src/game/state/states/GameLogic.State.Resuming.cs.uid rename to Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Resuming.cs.uid diff --git a/Zennysoft.Game.Ma/src/game/Game.cs b/Zennysoft.Game.Ma/src/game/Game.cs index 21fadac6..bb2782a9 100644 --- a/Zennysoft.Game.Ma/src/game/Game.cs +++ b/Zennysoft.Game.Ma/src/game/Game.cs @@ -2,22 +2,18 @@ namespace Zennysoft.Game.Ma; using Chickensoft.AutoInject; -using Chickensoft.Collections; using Chickensoft.Introspection; using Chickensoft.SaveFileBuilder; -using Chickensoft.Serialization; -using Chickensoft.Serialization.Godot; using Zennysoft.Game.Ma.src.items; using Godot; using System; using System.IO.Abstractions; using System.Text.Json; -using System.Text.Json.Serialization.Metadata; -using static Zennysoft.Game.Ma.GameLogic.State; using Zennysoft.Game.Abstractions; using Zennysoft.Game.Ma.Implementation; -using System.Threading.Tasks; using System.IO; +using SimpleInjector; +using static Zennysoft.Game.Ma.Implementation.GameLogic.State; [Meta(typeof(IAutoNode))] public partial class Game : Node3D, IGame @@ -89,10 +85,12 @@ public partial class Game : Node3D, IGame _container = new SimpleInjector.Container(); _container.Register(); _container.Register, SaveFileManager>(); + _container.Register(Lifestyle.Singleton); + _container.Register(Lifestyle.Singleton); _container.Verify(); - GameRepo = new GameRepo(); - GameLogic = new GameLogic(); + GameRepo = _container.GetInstance(); + GameLogic = _container.GetInstance(); GameEventDepot = new GameEventDepot(); GameLogic.Set(GameRepo); GameLogic.Set(AppRepo); @@ -188,6 +186,7 @@ public partial class Game : Node3D, IGame PauseMenu.SetProcessUnhandledInput(true); }) .Handle((in GameLogic.Output.LoadNextFloor _) => { Map.SpawnNextFloor(); }) + .Handle((in GameLogic.Output.LoadMap _) => { Map.LoadMap(); }) .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(); }) diff --git a/Zennysoft.Game.Ma/src/game/IGame.cs b/Zennysoft.Game.Ma/src/game/IGame.cs index ae128f51..e8bb4236 100644 --- a/Zennysoft.Game.Ma/src/game/IGame.cs +++ b/Zennysoft.Game.Ma/src/game/IGame.cs @@ -6,6 +6,7 @@ using Chickensoft.GodotNodeInterfaces; using Chickensoft.SaveFileBuilder; using Godot; using System; +using Zennysoft.Game.Ma.Implementation; public interface IGame : IProvide, IProvide, IProvide, IProvide, IProvide>, INode3D { diff --git a/Zennysoft.Game.Ma/src/inventory_menu/InventoryMenu.cs b/Zennysoft.Game.Ma/src/inventory_menu/InventoryMenu.cs index b4b1ffe4..50e516d1 100644 --- a/Zennysoft.Game.Ma/src/inventory_menu/InventoryMenu.cs +++ b/Zennysoft.Game.Ma/src/inventory_menu/InventoryMenu.cs @@ -4,6 +4,7 @@ using Chickensoft.Introspection; using Godot; using System.Linq; using System.Threading.Tasks; +using Zennysoft.Game.Ma.Implementation; namespace Zennysoft.Game.Ma; diff --git a/Zennysoft.Game.Ma/src/player/Player.cs b/Zennysoft.Game.Ma/src/player/Player.cs index c10bd8b0..b3af71ae 100644 --- a/Zennysoft.Game.Ma/src/player/Player.cs +++ b/Zennysoft.Game.Ma/src/player/Player.cs @@ -5,6 +5,7 @@ using Chickensoft.Introspection; using Chickensoft.SaveFileBuilder; using Godot; using Godot.Collections; +using SimpleInjector; using System; using System.Linq; using Zennysoft.Game.Ma.Implementation; @@ -44,7 +45,7 @@ public partial class Player : CharacterBody3D, IPlayer private PlayerLogic.Settings Settings { get; set; } = default!; - private PlayerLogic PlayerLogic { get; set; } = default!; + private IPlayerLogic PlayerLogic { get; set; } = default!; #region Dependencies @@ -116,6 +117,10 @@ public partial class Player : CharacterBody3D, IPlayer public void Setup() { + var container = new SimpleInjector.Container(); + container.Register(Lifestyle.Singleton); + container.Verify(); + Settings = new PlayerLogic.Settings() { RotationSpeed = PlayerStatResource.RotationSpeed, MoveSpeed = PlayerStatResource.MoveSpeed, Acceleration = PlayerStatResource.Acceleration }; Stats = new PlayerStatController(); Stats.Init( @@ -139,7 +144,7 @@ public partial class Player : CharacterBody3D, IPlayer Inventory = new Inventory(); - PlayerLogic = new PlayerLogic(); + PlayerLogic = container.GetInstance(); PlayerLogic.Set(this as IPlayer); PlayerLogic.Set(Settings); PlayerLogic.Set(Stats);