# HG changeset patch # User Alys Brooks # Date 2021-06-07 02:53:30 # Node ID 297de4636cacbf60f1415ff8635939b5d67ebace # Parent 618ba5e5eb0e49554936958d407dafc87fb8de72 Refactor out more code into InputEngine. 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,6 +1,7 @@ using System; using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Encompass; @@ -25,6 +26,10 @@ public class InputEngine : Engine { private KeyboardState keyboardPrev; + private MouseState mousePrev; + + private GraphicsDevice graphicsDevice; + private Camera camera; //Area to ignore: private int menuBarHeight; @@ -32,18 +37,23 @@ private int viewWidth; private int viewHeight; - public InputEngine(int menuBarHeight, int viewWidth, int viewHeight) { + public InputEngine(int menuBarHeight, int viewWidth, int viewHeight, Camera camera, + GraphicsDevice graphicsDevice) { //initialize to blank for now this.keyboardPrev = new KeyboardState(); this.menuBarHeight = menuBarHeight; this.viewWidth = viewWidth; this.viewHeight = viewHeight; + this.camera = camera; + this.graphicsDevice = graphicsDevice; } public override void Update(double dt) { var keyboardCur = Keyboard.GetState(); var mouseCur = Mouse.GetState(); + 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)) @@ -188,8 +198,17 @@ SendMessage(new MoveCameraMessage {Movement = new Vector2(4, 0)}); } #endregion +#region mouse_click - this.keyboardPrev = keyboardCur; + if (mouseCur.RightButton == ButtonState.Pressed && mousePrev.RightButton == ButtonState.Released) + { + // this.camera.Jump(this.original_point); + SendMessage(new JumpCameraMessage{Movement = original_point}); + } + +#endregion + this.keyboardPrev = keyboardCur; + this.mousePrev = mouseCur; } } } 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 @@ -209,7 +209,7 @@ this.grammar = new TraceryNet.Grammar(json2); - WorldBuilder.AddEngine(new InputEngine(Menu.MENU_BAR_HEIGHT, FNAGame.width, FNAGame.height)); + WorldBuilder.AddEngine(new InputEngine(Menu.MENU_BAR_HEIGHT, FNAGame.width, FNAGame.height, this.camera, GraphicsDevice)); WorldBuilder.AddEngine(new UIEngine()); WorldBuilder.AddEngine(new GameBridgeEngine(this)); @@ -434,6 +434,7 @@ float pan = 0.0f; KeyboardState keyboardCur = Keyboard.GetState(); + MouseState mouseCur = Mouse.GetState(); #region input // @@ -444,16 +445,6 @@ } #endregion misc_keys // - MouseState mouseCur = Mouse.GetState(); - this.original_point = Vector2.Transform(new Vector2(mouseCur.X, mouseCur.Y), Matrix.Invert(camera.get_transformation(GraphicsDevice))); - - -#if DEBUG - if (mouseCur.RightButton == ButtonState.Pressed && mousePrev.RightButton == ButtonState.Released) - { - this.camera.Jump(this.original_point); - } -#endif #endregion input