# HG changeset patch # User Alys Brooks # Date 2021-06-13 07:01:17 # Node ID 8aa3269925485b1da81217591f675e184b0b2566 # Parent 6aef2f413cb1a7ae0ef3046edb7e02340bdba162 Limit commands to when the game is running. diff --git a/isometric-park-fna/Engines/GameStateEngine.cs b/isometric-park-fna/Engines/GameStateEngine.cs --- a/isometric-park-fna/Engines/GameStateEngine.cs +++ b/isometric-park-fna/Engines/GameStateEngine.cs @@ -8,8 +8,8 @@ [Receives(typeof(GameStateMessage))] [Sends(typeof(ToggleWindowTypeMessage))] - [Reads()] - [Writes()] + [Reads(typeof(GameStateComponent))] + [Writes(typeof(GameStateComponent))] class GameStateEngine : Engine { @@ -22,7 +22,15 @@ { startGame(); } - SendMessage(new ToggleWindowTypeMessage { Window = Window.MainMenu}); + SendMessage(new ToggleWindowTypeMessage { Window = Window.MainMenu}); + + foreach (var entity in ReadEntities()) + { + var state = GetComponent(entity).isPlaying; + Logging.Spy(state, "state"); + + SetComponent(entity, new GameStateComponent{isPlaying = message.isPlaying}); + } } } @@ -31,6 +39,5 @@ { } - } } diff --git a/isometric-park-fna/Engines/InputEngine.cs b/isometric-park-fna/Engines/InputEngine.cs --- a/isometric-park-fna/Engines/InputEngine.cs +++ b/isometric-park-fna/Engines/InputEngine.cs @@ -23,6 +23,7 @@ typeof(GameRateMessage), typeof(GameStateMessage))] [Reads(typeof(WindowTypeComponent), + typeof(GameStateComponent), typeof(VisibilityComponent))] public class InputEngine : Engine { @@ -56,135 +57,139 @@ var original_point = Vector2.Transform(new Vector2(mouseCur.X, mouseCur.Y), Matrix.Invert(this.camera.get_transformation(this.graphicsDevice))); -#region camera_movement_keys - if (keyboardCur.IsKeyDown(Keys.Down)) - { - SendMessage(new MoveCameraMessage{ Movement = new Vector2(0, 2)}); - } - if (keyboardCur.IsKeyDown(Keys.Up)) - { - SendMessage(new MoveCameraMessage{ Movement = new Vector2(0, -2)}); - - } - if (keyboardCur.IsKeyDown(Keys.Left)) - { - SendMessage(new MoveCameraMessage{ Movement = new Vector2(-2, 0)}); + bool isPlaying = false; - } - if (keyboardCur.IsKeyDown(Keys.Right)) - { - SendMessage(new MoveCameraMessage {Movement = new Vector2(2, 0)}); - - } - if (keyboardCur.IsKeyDown(Keys.Subtract) && keyboardPrev.IsKeyUp(Keys.Subtract)) + foreach (var entity in ReadEntities()) { - SendMessage(new ZoomCameraMessage {ZoomIn = false}); - } - else if (keyboardCur.IsKeyDown(Keys.Add) && keyboardPrev.IsKeyUp(Keys.Add)) - { - SendMessage(new ZoomCameraMessage {ZoomIn = true}); - } - if (keyboardCur.IsKeyDown(Keys.C) && keyboardPrev.IsKeyUp(Keys.C)) - { - SendMessage(new JumpCameraMessage {Movement = Vector2.Zero }); + var state = GetComponent(entity).isPlaying; + isPlaying = state; } -#endregion camera_movement_keys -#region gamerate_keys - if (keyboardCur.IsKeyDown(Keys.P) && keyboardPrev.IsKeyUp(Keys.P) ) - { - SendMessage(new TogglePauseMessage()); - - } - if (keyboardCur.IsKeyDown(Keys.D0) && keyboardPrev.IsKeyUp(Keys.D0) ) - { - SendMessage(new TogglePauseMessage()); - - } - if (keyboardCur.IsKeyDown(Keys.D1) && keyboardPrev.IsKeyUp(Keys.D1) ) - { - SendMessage(new GameRateMessage { - paused = false, - rate = 0}); - } - if (keyboardCur.IsKeyDown(Keys.D2) && keyboardPrev.IsKeyUp(Keys.D2) ) - { - SendMessage(new GameRateMessage { - paused = false, - rate = 1}); - } - if (keyboardCur.IsKeyDown(Keys.D3) && keyboardPrev.IsKeyUp(Keys.D3) ) - { - SendMessage(new GameRateMessage { - paused = false, - rate = 2}); - } - if (keyboardCur.IsKeyDown(Keys.D4) && keyboardPrev.IsKeyUp(Keys.D4) ) + if (isPlaying) { - SendMessage(new GameRateMessage { - paused = false, - rate = 3}); - } -#if DEBUG - if (keyboardCur.IsKeyDown(Keys.D5) && keyboardPrev.IsKeyUp(Keys.D5) ) - { - SendMessage(new GameRateMessage { - paused = false, - rate = 4}); - } -#endif -#endregion gamerate_keys -#region misc_keys - if (keyboardCur.IsKeyDown(Keys.OemBackslash) && keyboardPrev.IsKeyUp(Keys.OemBackslash)) - { - SendMessage(new ToggleWindowTypeMessage{Window = Window.Debug}); + #region camera_movement_keys + if (keyboardCur.IsKeyDown(Keys.Down)) + { + SendMessage(new MoveCameraMessage{ Movement = new Vector2(0, 2)}); + } + if (keyboardCur.IsKeyDown(Keys.Up)) + { + SendMessage(new MoveCameraMessage{ Movement = new Vector2(0, -2)}); + + } + if (keyboardCur.IsKeyDown(Keys.Left)) + { + SendMessage(new MoveCameraMessage{ Movement = new Vector2(-2, 0)}); + + } + if (keyboardCur.IsKeyDown(Keys.Right)) + { + SendMessage(new MoveCameraMessage {Movement = new Vector2(2, 0)}); + + } + if (keyboardCur.IsKeyDown(Keys.Subtract) && keyboardPrev.IsKeyUp(Keys.Subtract)) + { + SendMessage(new ZoomCameraMessage {ZoomIn = false}); + } + else if (keyboardCur.IsKeyDown(Keys.Add) && keyboardPrev.IsKeyUp(Keys.Add)) + { + SendMessage(new ZoomCameraMessage {ZoomIn = true}); + } + if (keyboardCur.IsKeyDown(Keys.C) && keyboardPrev.IsKeyUp(Keys.C)) + { + SendMessage(new JumpCameraMessage {Movement = Vector2.Zero }); + } + #endregion camera_movement_keys + #region gamerate_keys + if (keyboardCur.IsKeyDown(Keys.P) && keyboardPrev.IsKeyUp(Keys.P) ) + { + + SendMessage(new TogglePauseMessage()); + + } + if (keyboardCur.IsKeyDown(Keys.D0) && keyboardPrev.IsKeyUp(Keys.D0) ) + { + SendMessage(new TogglePauseMessage()); - } - if (keyboardCur.IsKeyDown(Keys.B) && keyboardPrev.IsKeyUp(Keys.B)) - { - SendMessage(new ToggleWindowTypeMessage{Window = Window.Budget}); + } + if (keyboardCur.IsKeyDown(Keys.D1) && keyboardPrev.IsKeyUp(Keys.D1) ) + { + SendMessage(new GameRateMessage { + paused = false, + rate = 0}); + } + if (keyboardCur.IsKeyDown(Keys.D2) && keyboardPrev.IsKeyUp(Keys.D2) ) + { + SendMessage(new GameRateMessage { + paused = false, + rate = 1}); + } + if (keyboardCur.IsKeyDown(Keys.D3) && keyboardPrev.IsKeyUp(Keys.D3) ) + { + SendMessage(new GameRateMessage { + paused = false, + rate = 2}); + } + if (keyboardCur.IsKeyDown(Keys.D4) && keyboardPrev.IsKeyUp(Keys.D4) ) + { + SendMessage(new GameRateMessage { + paused = false, + rate = 3}); + } + #if DEBUG + if (keyboardCur.IsKeyDown(Keys.D5) && keyboardPrev.IsKeyUp(Keys.D5) ) + { + SendMessage(new GameRateMessage { + paused = false, + rate = 4}); + } + #endif + #endregion gamerate_keys + #region misc_keys + if (keyboardCur.IsKeyDown(Keys.OemBackslash) && keyboardPrev.IsKeyUp(Keys.OemBackslash)) + { + SendMessage(new ToggleWindowTypeMessage{Window = Window.Debug}); - } - if (keyboardCur.IsKeyDown(Keys.F) && keyboardPrev.IsKeyUp(Keys.F)) - { - SendMessage(new ToggleWindowTypeMessage{Window = Window.Forest}); + } + if (keyboardCur.IsKeyDown(Keys.B) && keyboardPrev.IsKeyUp(Keys.B)) + { + SendMessage(new ToggleWindowTypeMessage{Window = Window.Budget}); + + } + if (keyboardCur.IsKeyDown(Keys.F) && keyboardPrev.IsKeyUp(Keys.F)) + { + SendMessage(new ToggleWindowTypeMessage{Window = Window.Forest}); + + } + if (keyboardCur.IsKeyDown(Keys.N) && keyboardPrev.IsKeyUp(Keys.N)) + { + SendMessage(new ToggleWindowTypeMessage{Window = Window.News}); - } - if (keyboardCur.IsKeyDown(Keys.N) && keyboardPrev.IsKeyUp(Keys.N)) + } + if (keyboardCur.IsKeyDown(Keys.O) && keyboardPrev.IsKeyUp(Keys.O)) + { + Logging.Trace("Contracts toggled."); + SendMessage(new ToggleWindowTypeMessage{Window = Window.Contracts}); + } + if (keyboardCur.IsKeyDown(Keys.G) && keyboardPrev.IsKeyUp(Keys.G)) + { + SendMessage(new ToggleVisibilityMessage{Element = Element.Grid}); + + } + #if DEBUG + if (keyboardCur.IsKeyDown(Keys.T) && keyboardPrev.IsKeyUp(Keys.T)) + { + SendMessage(new ToggleVisibilityMessage{Element = Element.Trees}); + + } + #endif + + if (keyboardCur.IsKeyDown(Keys.Escape) && keyboardPrev.IsKeyUp(Keys.Escape)) { - SendMessage(new ToggleWindowTypeMessage{Window = Window.News}); - - } - if (keyboardCur.IsKeyDown(Keys.O) && keyboardPrev.IsKeyUp(Keys.O)) - { - Logging.Trace("Contracts toggled."); - SendMessage(new ToggleWindowTypeMessage{Window = Window.Contracts}); - } - if (keyboardCur.IsKeyDown(Keys.G) && keyboardPrev.IsKeyUp(Keys.G)) - { - SendMessage(new ToggleVisibilityMessage{Element = Element.Grid}); - + // SendMessage(new TogglePauseMessage()); + SendMessage(new ToggleWindowTypeMessage{Window = Window.InGameMenu}); + SendMessage(new GameRateMessage { paused = true, rate = null }); } -#if DEBUG - if (keyboardCur.IsKeyDown(Keys.T) && keyboardPrev.IsKeyUp(Keys.T)) - { - SendMessage(new ToggleVisibilityMessage{Element = Element.Trees}); - - } -#endif - -#if DEBUG - - if (keyboardCur.IsKeyDown(Keys.A) && keyboardPrev.IsKeyUp(Keys.A)) - { - SendMessage(new GameStateMessage {isPlaying = false}); - } -#endif - if (keyboardCur.IsKeyDown(Keys.Escape) && keyboardPrev.IsKeyUp(Keys.Escape)) - { - // SendMessage(new TogglePauseMessage()); - SendMessage(new ToggleWindowTypeMessage{Window = Window.InGameMenu}); - SendMessage(new GameRateMessage { paused = true, rate = null }); } if (keyboardCur.IsKeyDown(Keys.Q) && keyboardPrev.IsKeyUp(Keys.Q)) diff --git a/isometric-park-fna/FNAGame.cs b/isometric-park-fna/FNAGame.cs --- a/isometric-park-fna/FNAGame.cs +++ b/isometric-park-fna/FNAGame.cs @@ -262,9 +262,10 @@ WorldBuilder.SetComponent(inputMenu, new WindowTypeComponent { type = isometricparkfna.Messages.Window.InGameMenu }); - // var budgetWindow = WorldBuilder.CreateEntity(); - // WorldBuilder.SetComponent(budgetWindow, new VisibilityComponent{visible = true}); - // WorldBuilder.SetComponent(budgetWindow, new BudgetComponent()); + var gameEntity = WorldBuilder.CreateEntity(); + + WorldBuilder.SetComponent(gameEntity, new GameStateComponent { isPlaying = false}); + var area = WorldBuilder.CreateEntity(); // WorldBuilder.SetComponent(area, new AreaComponent{squares = new[] {new Vector2(4,4), new Vector2(5,4)}}); diff --git a/isometric-park-fna/UI/MainMenu.cs b/isometric-park-fna/UI/MainMenu.cs --- a/isometric-park-fna/UI/MainMenu.cs +++ b/isometric-park-fna/UI/MainMenu.cs @@ -32,17 +32,14 @@ if (ImGui.Button("New Game", button_size)) { bridgeEngine.gameStateMessages.Add(new GameStateMessage { isPlaying = true}); - + } - } if (ImGui.Button("Quit", button_size)) { - System.Console.WriteLine("Quitting"); Environment.Exit(0); } - ImGui.End();