From e9e97dae39ba23f4ac1116486043b749bfda599b Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Sat, 26 May 2012 18:36:11 -0500 Subject: [PATCH] Updating support for XNACC Note: It is only for Windows currently --HG-- branch : xnacc-integration --- axios/Axios_Windows.csproj.user | 2 +- axios/Axios_settings.cs | 1 + axios/ScreenSystem/InputState.cs | 64 ++++++++++++++++++++ axios/XNACC/CommandConsoleBase.cs | 4 +- axios/XNACC/CommandConsoleBaseSharedTypes.cs | 2 +- 5 files changed, 69 insertions(+), 4 deletions(-) diff --git a/axios/Axios_Windows.csproj.user b/axios/Axios_Windows.csproj.user index 566c009..76fe5a5 100644 --- a/axios/Axios_Windows.csproj.user +++ b/axios/Axios_Windows.csproj.user @@ -1,6 +1,6 @@  - ShowAllFiles + ProjectFiles \ No newline at end of file diff --git a/axios/Axios_settings.cs b/axios/Axios_settings.cs index b4f4453..003fd61 100644 --- a/axios/Axios_settings.cs +++ b/axios/Axios_settings.cs @@ -91,6 +91,7 @@ * - Fixing bug where loadrecentangleitem wouldn't be called by Gleed2D library * - Changing AxiosTitleFile.GetStream() to return Stream instead of FileStream * - Changing IAxiosFile.GetStream() to return Stream instead of FileStream + * - Adding support for XNACC * */ #endregion diff --git a/axios/ScreenSystem/InputState.cs b/axios/ScreenSystem/InputState.cs index 7fa2520..1ca51d7 100644 --- a/axios/ScreenSystem/InputState.cs +++ b/axios/ScreenSystem/InputState.cs @@ -15,6 +15,11 @@ using Microsoft.Xna.Framework.Input.Touch; using FarseerPhysics.SamplesFramework; using Microsoft.Xna.Framework.Graphics; using System; +#if WINDOWS +using XNACC.BaseTypes; +#endif +using System.Linq; + namespace GameStateManagement { @@ -37,8 +42,46 @@ namespace GameStateManagement /// query methods for high level input actions such as "move up through the menu" /// or "pause the game". /// +#if WINDOWS + public class InputState : IConsoleKeyboard +#else public class InputState +#endif { + +#if WINDOWS + #region XNACC + /* + * These are needed for XNACC + * -- Nathan Adams [adamsna@datanethost.net] - 5/26/2012 + */ + + private KeyboardState KeyState; + private List newlyPressedKeys = new List(); + private List heldKeys = new List(); + private Keys[] oldPressedKeys; + private Keys[] newPressedKeys; + + public KeyboardState CurrentKeyboardState + { + get { return KeyState; } + } + + public IList NewlyPressedKeys + { + get { return newlyPressedKeys; } + } + + public IList HeldKeys + { + get { return heldKeys; } + } + + /* + * End XNACC variables + */ + #endregion +#endif public const int MaxInputs = 4; public readonly KeyboardState[] CurrentKeyboardStates; @@ -270,6 +313,27 @@ namespace GameStateManagement /// public void Update(GameTime gameTime) { + +#if WINDOWS + #region XNACC + KeyState = Keyboard.GetState(); + + oldPressedKeys = newPressedKeys; + newPressedKeys = KeyState.GetPressedKeys(); + + newlyPressedKeys.Clear(); + heldKeys.Clear(); + + foreach (Keys key in newPressedKeys) + { + if (oldPressedKeys.Contains(key)) + heldKeys.Add(key); + else + newlyPressedKeys.Add(key); + } + #endregion +#endif + //PlayerIndex p; _lastMouseState = _currentMouseState; if (_handleVirtualStick) diff --git a/axios/XNACC/CommandConsoleBase.cs b/axios/XNACC/CommandConsoleBase.cs index 604b95e..c9930d6 100644 --- a/axios/XNACC/CommandConsoleBase.cs +++ b/axios/XNACC/CommandConsoleBase.cs @@ -11,7 +11,7 @@ using System.Threading; using System.IO; using System.ComponentModel; using System.Reflection; -using JRTS.XNA.Console.BaseTypes; +using XNACC.BaseTypes; using System.Diagnostics; #endif #endregion @@ -71,7 +71,7 @@ using System.Diagnostics; //NA: Seriously Microsoft? #if WINDOWS /// Namespace that contains code related to the XNACC (CommandConsole) component -namespace JRTS.XNA.Console +namespace XNACC.Console { /// Base functionality of the XNACC (CommandConsole) component public class CommandConsoleBase : DrawableGameComponent diff --git a/axios/XNACC/CommandConsoleBaseSharedTypes.cs b/axios/XNACC/CommandConsoleBaseSharedTypes.cs index 4b49338..e417d3d 100644 --- a/axios/XNACC/CommandConsoleBaseSharedTypes.cs +++ b/axios/XNACC/CommandConsoleBaseSharedTypes.cs @@ -6,7 +6,7 @@ using Microsoft.Xna.Framework.Input; #if WINDOWS /// Namespace that contains shared types related to the XNACC (CommandConsole) component -namespace JRTS.XNA.Console.BaseTypes +namespace XNACC.BaseTypes { #region IConsoleKeyboard /// Basic keyboard/input functionality required by the CommandConsole(Base) class