X-Git-Url: https://git.r.bdr.sh/rbdr/super-polarity/blobdiff_plain/6fceaa7b34f4d6efc497cda51679b37e530a61aa..d7a43ae2d3d4702bd199fa5d8ca84c7c6e78ed36:/SuperPolarityMac/InputController.cs?ds=sidebyside diff --git a/SuperPolarityMac/InputController.cs b/SuperPolarityMac/InputController.cs deleted file mode 100644 index c92bb9c..0000000 --- a/SuperPolarityMac/InputController.cs +++ /dev/null @@ -1,248 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Microsoft.Xna.Framework.Input; - -namespace SuperPolarity -{ - static class InputController - { - static Dictionary>> Listeners; - static Dictionary> RegisteredKeys; - static Dictionary> RegisteredButtons; - static List BlockedKeys; - static List BlockedButtons; - - static GamePadState InputGamePadState; - static KeyboardState InputKeyboardState; - - /* - * Registered Events. - * - * You register: name of the event (ie. attack) and a key associated with it. - * or button... Left Stick /always/ dispatches move event. - */ - - static InputController() - { - Listeners = new Dictionary>>(); - RegisteredButtons = new Dictionary>(); - RegisteredKeys = new Dictionary>(); - BlockedKeys = new List(); - BlockedButtons = new List(); - InputKeyboardState = new KeyboardState(); - InputGamePadState = new GamePadState(); - } - - public static void UpdateInput() - { - DispatchMoveEvents(); - DispatchRegisteredEvents(); - } - - public static void UpdateInput(bool highPriorityOnly) - { - Poll(); - DispatchPauseEvent(); - if (!highPriorityOnly) - { - UpdateInput(); - } - } - - public static void DispatchPauseEvent() - { - // OK THIS IS ALL KINDS OF WRONG. THIS IS A PLACEHOLDER BECAUSE DEMO! - var keyPressed = false; - if ((InputKeyboardState.IsKeyDown(Keys.Enter) || InputGamePadState.IsButtonDown(Buttons.Start))) { - keyPressed = true; - if(!BlockedButtons.Contains("pause") && !BlockedKeys.Contains("pause")) - { - BlockedButtons.Add("pause"); - BlockedKeys.Add("pause"); - Console.WriteLine("Dispatch"); - Dispatch("pause", 0); - } - } - - if (!keyPressed) - { - BlockedButtons.Remove("pause"); - BlockedKeys.Remove("pause"); - } - } - - private static void Poll() - { - InputGamePadState = GamePad.GetState(Microsoft.Xna.Framework.PlayerIndex.One); - InputKeyboardState = Keyboard.GetState(); - } - - public static void RegisterEventForKey(string eventName, Keys key) - { - List newKeyList; - if (!RegisteredKeys.ContainsKey(eventName)) - { - newKeyList = new List(); - RegisteredKeys.Add(eventName, newKeyList); - } - - RegisteredKeys.TryGetValue(eventName, out newKeyList); - - newKeyList.Add(key); - } - - public static void RegisterEventForButton(string eventName, Buttons button) - { - List newButtonList; - if (!RegisteredButtons.ContainsKey(eventName)) - { - newButtonList = new List(); - RegisteredButtons.Add(eventName, newButtonList); - } - - RegisteredButtons.TryGetValue(eventName, out newButtonList); - - newButtonList.Add(button); - } - - private static void DispatchRegisteredEvents() - { - var keyFired = false; - - foreach (KeyValuePair> entry in RegisteredKeys) { - keyFired = false; - foreach (Keys key in entry.Value) - { - if (InputKeyboardState.IsKeyDown(key)) - { - if (!BlockedKeys.Contains(entry.Key)) - { - BlockedKeys.Add(entry.Key); - Dispatch(entry.Key, 1); - } - keyFired = true; - break; - } - } - - if (!keyFired) - { - BlockedKeys.Remove(entry.Key); - } - } - - foreach (KeyValuePair> entry in RegisteredButtons) - { - keyFired = false; - foreach (Buttons button in entry.Value) - { - if (InputGamePadState.IsButtonDown(button)) - { - if (!BlockedButtons.Contains(entry.Key)) - { - BlockedButtons.Add(entry.Key); - Dispatch(entry.Key, 1); - } - keyFired = true; - break; - }; - } - - if (!keyFired) - { - BlockedButtons.Remove(entry.Key); - } - } - } - - private static void DispatchMoveEvents() - { - float xMovement = 0.0f; - float yMovement = 0.0f; - // Dispatch the moveX / MoveY events every frame. - - xMovement = InputGamePadState.ThumbSticks.Left.X; - yMovement = -InputGamePadState.ThumbSticks.Left.Y; - - if (InputKeyboardState.IsKeyDown(Keys.Left)) - { - xMovement = -1.0f; - } - - if (InputKeyboardState.IsKeyDown(Keys.Right)) - { - xMovement = 1.0f; - } - - if (InputKeyboardState.IsKeyDown(Keys.Up)) - { - yMovement = -1.0f; - } - - if (InputKeyboardState.IsKeyDown(Keys.Down)) - { - yMovement = 1.0f; - } - - Dispatch("moveX", xMovement); - Dispatch("moveY", yMovement); - } - - public static void Bind(string eventName, Action listener) - { - List> newListenerList; - List> listenerList; - bool foundListeners; - - if (!Listeners.ContainsKey(eventName)) { - newListenerList = new List>(); - Listeners.Add(eventName, newListenerList); - } - - foundListeners = Listeners.TryGetValue(eventName, out listenerList); - - listenerList.Add(listener); - } - - public static void Unbind(string eventName, Action listener) - { - List> listenerList; - bool foundListeners; - - if (!Listeners.ContainsKey(eventName)) - { - return; - } - - foundListeners = Listeners.TryGetValue(eventName, out listenerList); - - listenerList.Remove(listener); - } - - public static void Dispatch(string eventName, float value) - { - List> listenerList; - bool foundListeners; - - foundListeners = Listeners.TryGetValue(eventName, out listenerList); - - if (!foundListeners) - { - return; - } - - for (var i = listenerList.Count - 1; i >= 0; i--) - { - listenerList[i](value); - } - } - - public static void Unlock(string eventName) - { - BlockedButtons.Remove(eventName); - BlockedKeys.Remove(eventName); - } - } -}