# HG changeset patch # User Alys Brooks # Date 2021-04-06 00:24:06 # Node ID eadba49dfc9285df4cb535a55cea2d3b8aee5fd6 # Parent 66db7b3b51fbed2fa068b61b6e64c79678ceb34c Loads more porting. (grafted from 383cf2eccdad5a8c72b1ee8a20ebfc67f3bbf8ac) diff --git a/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.assets.cache b/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.assets.cache index 6d6a9a904d050df831431191d51ee5be563792bd..f61d914bb988bd32acca0102654c0aed54b2d7e8 GIT binary patch literal 282 zc$^FHc6a1rU|@K7Z?mqg@U^VdZr{J&uU@@0^RwG!Uy%!&)_R!T{B*dmOpK8MFJJ;< zE#J)KqWt3gv=Ti(*ATa&#N5>K{Gx2VpwzU~qSU*b}E zn3%%sk=D=1&rQ`&%&9Ea*UKwSPc6|eNKDR7OiwM=2dUB2FD)+8FV09TO4U!vF9GV+ dFHXtU_bYWzEpbcC$w>k#cFWI6NiD+XBLGG?P-6f9 diff --git a/isometric-park-fna/Engines/CameraBridgeEngine.cs b/isometric-park-fna/Engines/CameraBridgeEngine.cs new file mode 100644 --- /dev/null +++ b/isometric-park-fna/Engines/CameraBridgeEngine.cs @@ -0,0 +1,42 @@ + +using Encompass; + +using isometricparkfna.Messages; +using isometricparkfna.Components; + +namespace isometricparkfna.Engines { + + [Receives(typeof(ZoomCameraMessage), typeof(MoveCameraMessage))] + class CameraBridgeEngine : Engine + { + private Camera Camera; + + public CameraBridgeEngine(Camera camera) + { + this.Camera = camera; + } + + + public override void Update(double dt) + { + foreach (ref readonly var message in ReadMessages()) + { + if (message.ZoomIn) + { + this.Camera.ZoomIn(); + } + else + { + this.Camera.ZoomOut(); + } + } + + foreach (ref readonly var message in ReadMessages()) + { + this.Camera.Move(message.Movement); + + } + + } + } +} 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 @@ -1,4 +1,6 @@ +using System; +using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; using Encompass; @@ -9,20 +11,104 @@ - [Sends(typeof(ToggleWindowMessage), typeof(ToggleVisibilityMessage))] + [Sends( typeof(ZoomCameraMessage), + typeof(MoveCameraMessage), + typeof(ToggleWindowMessage), + typeof(ToggleVisibilityMessage), + typeof(TogglePauseMessage), + typeof(GameRateMessage))] public class InputEngine : Engine { private KeyboardState keyboardPrev; - public InputEngine() { + //Area to ignore: + private int menuBarHeight; + + public InputEngine(int menuBarHeight) { //initialize to blank for now this.keyboardPrev = new KeyboardState(); + menuBarHeight = menuBarHeight; } public override void Update(double dt) { var keyboardCur = Keyboard.GetState(); + var mouseCur = Mouse.GetState(); +#region camera_movement_keys + if (keyboardCur.IsKeyDown(Keys.Down)) + { + SendMessage(new MoveCameraMessage{ Movement = new Vector2(0, 2)}); + } + else if (keyboardCur.IsKeyDown(Keys.Up)) + { + SendMessage(new MoveCameraMessage{ Movement = new Vector2(0, -2)}); + + } + else if (keyboardCur.IsKeyDown(Keys.Left)) + { + SendMessage(new MoveCameraMessage{ Movement = new Vector2(-2, 0)}); + + } + else if (keyboardCur.IsKeyDown(Keys.Right)) + { + SendMessage(new MoveCameraMessage {Movement = new Vector2(2, 0)}); + + } + else 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}); + } +#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) ) + { + 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)) { @@ -56,6 +142,21 @@ } #endif + + if (keyboardCur.IsKeyDown(Keys.Q) && keyboardPrev.IsKeyUp(Keys.Q)) + { + System.Console.WriteLine("Quitting"); + Environment.Exit(0); + } + if (keyboardCur.IsKeyDown(Keys.C) && keyboardPrev.IsKeyUp(Keys.C)) + { + // this.camera.Jump(Vector2.Zero); + + } + if (keyboardCur.IsKeyDown(Keys.OemBackslash) && keyboardPrev.IsKeyUp(Keys.OemBackslash) && keyboardCur.IsKeyDown(Keys.LeftShift)) + { + // sound.Play(volume, pitch, pan); + } #endregion misc_keys this.keyboardPrev = keyboardCur; diff --git a/isometric-park-fna/Engines/SimulationBridgeEngine.cs b/isometric-park-fna/Engines/SimulationBridgeEngine.cs --- a/isometric-park-fna/Engines/SimulationBridgeEngine.cs +++ b/isometric-park-fna/Engines/SimulationBridgeEngine.cs @@ -8,7 +8,7 @@ namespace isometricparkfna.Engines { - // [Receives()] + [Receives(typeof(GameRateMessage), typeof(TogglePauseMessage))] [Reads(typeof(BudgetComponent))] [Writes(typeof(BudgetComponent))] class SimulationBridgeEngine : Engine @@ -31,6 +31,17 @@ priorBudget = this.simulation.previousBudget}); } + foreach (ref readonly var message in ReadMessages()) + { + this.simulation.paused = message.paused; + this.simulation.setRate(message.rate); + } + + foreach (ref readonly var message in ReadMessages()) + { + this.simulation.paused = !this.simulation.paused; + } + } } 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 @@ -54,7 +54,7 @@ int squaresDown = 50; // int baseOffsetX = -14; // int baseOffsetY = -14; - + Simulation simulation; Vector2 mouseGrid; @@ -184,9 +184,10 @@ // WorldBuilder.AddGeneralRenderer(new BudgetWindowRenderer(this.batch, this.monoFont)); - WorldBuilder.AddEngine(new InputEngine()); + WorldBuilder.AddEngine(new InputEngine(Menu.MENU_BAR_HEIGHT)); WorldBuilder.AddEngine(new GameBridgeEngine(this)); WorldBuilder.AddEngine(new SimulationBridgeEngine(this.simulation)); + WorldBuilder.AddEngine(new CameraBridgeEngine(this.camera)); // var budgetWindow = WorldBuilder.CreateEntity(); // WorldBuilder.SetComponent(budgetWindow, new VisibilityComponent{visible = true}); @@ -341,43 +342,8 @@ KeyboardState keyboardCur = Keyboard.GetState(); #region input - #region camera_movement_keys - if (keyboardCur.IsKeyDown(Keys.Down)) - { - this.camera.Move(new Vector2(0, 2)); - } - else if (keyboardCur.IsKeyDown(Keys.Up)) - { - this.camera.Move(new Vector2(0, -2)); - - } - else if (keyboardCur.IsKeyDown(Keys.Left)) - { - this.camera.Move(new Vector2(-2, 0)); - - } - else if (keyboardCur.IsKeyDown(Keys.Right)) - { - this.camera.Move(new Vector2(2, 0)); - - } - else if (keyboardCur.IsKeyDown(Keys.Subtract) && keyboardPrev.IsKeyUp(Keys.Subtract)) - { - this.camera.ZoomOut(); - } - else if (keyboardCur.IsKeyDown(Keys.Add) && keyboardPrev.IsKeyUp(Keys.Add)) - { - - this.camera.ZoomIn(); - } - #endregion camera_movement_keys - +// #region misc_keys - if (keyboardCur.IsKeyDown(Keys.Q) && keyboardPrev.IsKeyUp(Keys.Q)) - { - System.Console.WriteLine("Quitting"); - Environment.Exit(0); - } if (keyboardCur.IsKeyDown(Keys.C) && keyboardPrev.IsKeyUp(Keys.C)) { this.camera.Jump(Vector2.Zero); @@ -388,53 +354,12 @@ sound.Play(volume, pitch, pan); } #endregion misc_keys - - - #region gamerate_keys - if (keyboardCur.IsKeyDown(Keys.P) && keyboardPrev.IsKeyUp(Keys.P) ) - { - this.simulation.paused = !this.simulation.paused; - - } - if (keyboardCur.IsKeyDown(Keys.D0) && keyboardPrev.IsKeyUp(Keys.D0) ) - { - this.simulation.paused = !this.simulation.paused; - - } - if (keyboardCur.IsKeyDown(Keys.D1) && keyboardPrev.IsKeyUp(Keys.D1) ) - { - this.simulation.paused = false; - this.simulation.setRate(0); - } - if (keyboardCur.IsKeyDown(Keys.D2) && keyboardPrev.IsKeyUp(Keys.D2) ) - { - this.simulation.paused = false; - this.simulation.setRate(1); - } - if (keyboardCur.IsKeyDown(Keys.D3) && keyboardPrev.IsKeyUp(Keys.D3) ) - { - this.simulation.paused = false; - this.simulation.setRate(2); - } - if (keyboardCur.IsKeyDown(Keys.D4) && keyboardPrev.IsKeyUp(Keys.D4) ) - { - this.simulation.paused = false; - this.simulation.setRate(3); - } - #if DEBUG - if (keyboardCur.IsKeyDown(Keys.D5) && keyboardPrev.IsKeyUp(Keys.D5) ) - { - this.simulation.paused = false; - this.simulation.setRate(4); - } - #endif - #endregion gamerate_keys - - +// MouseState mouseCur = Mouse.GetState(); this.original_point = Vector2.Transform(new Vector2(mouseCur.X, mouseCur.Y), Matrix.Invert(camera.get_transformation(GraphicsDevice))); - int menuBarHeight = 20; + var menuBarHeight = Menu.MENU_BAR_HEIGHT; + if (MathUtils.Between(mouseCur.X, 0, 50)) { diff --git a/isometric-park-fna/Messages/GameRateMessage.cs b/isometric-park-fna/Messages/GameRateMessage.cs new file mode 100644 --- /dev/null +++ b/isometric-park-fna/Messages/GameRateMessage.cs @@ -0,0 +1,13 @@ + + +using Encompass; + +namespace isometricparkfna.Messages { + + + public struct GameRateMessage : IMessage//, IHasEntity + { + public bool paused; + public int rate; + } +} diff --git a/isometric-park-fna/Messages/MoveCameraMessage.cs b/isometric-park-fna/Messages/MoveCameraMessage.cs new file mode 100644 --- /dev/null +++ b/isometric-park-fna/Messages/MoveCameraMessage.cs @@ -0,0 +1,10 @@ + +using Microsoft.Xna.Framework; +using Encompass; + +namespace isometricparkfna.Messages { + public struct MoveCameraMessage : IMessage//, IHasEntity + { + public Vector2 Movement; + } +} diff --git a/isometric-park-fna/Messages/TogglePauseMessage.cs b/isometric-park-fna/Messages/TogglePauseMessage.cs new file mode 100644 --- /dev/null +++ b/isometric-park-fna/Messages/TogglePauseMessage.cs @@ -0,0 +1,7 @@ + +using Encompass; + +namespace isometricparkfna.Messages { + + public struct TogglePauseMessage : IMessage { } +} diff --git a/isometric-park-fna/Messages/ZoomCameraMessage.cs b/isometric-park-fna/Messages/ZoomCameraMessage.cs new file mode 100644 --- /dev/null +++ b/isometric-park-fna/Messages/ZoomCameraMessage.cs @@ -0,0 +1,8 @@ +using Encompass; + +namespace isometricparkfna.Messages { + public struct ZoomCameraMessage : IMessage//, IHasEntity + { + public bool ZoomIn; + } +} diff --git a/isometric-park-fna/UI/Menu.cs b/isometric-park-fna/UI/Menu.cs --- a/isometric-park-fna/UI/Menu.cs +++ b/isometric-park-fna/UI/Menu.cs @@ -8,6 +8,8 @@ public static class Menu { + public const int MENU_BAR_HEIGHT = 20; + private static bool activeButton(string label, bool active, Num.Vector4 activeColor) { if (active) {