From ca34b22c8dbeecda5ac5f66ca24fbe69a617b4dd Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 25 May 2024 10:37:59 -0400 Subject: Added text entry --- AnodyneArchipelago/Menu/InputHandler.cs | 99 +++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 AnodyneArchipelago/Menu/InputHandler.cs (limited to 'AnodyneArchipelago/Menu/InputHandler.cs') diff --git a/AnodyneArchipelago/Menu/InputHandler.cs b/AnodyneArchipelago/Menu/InputHandler.cs new file mode 100644 index 0000000..65605a2 --- /dev/null +++ b/AnodyneArchipelago/Menu/InputHandler.cs @@ -0,0 +1,99 @@ +using AnodyneSharp.Input; +using Microsoft.Xna.Framework.Input; +using System.Collections.Generic; + +namespace AnodyneArchipelago.Menu +{ + internal class InputCharacter + { + private readonly string _upper; + private readonly string _lower; + private readonly Keys _code; + + public InputCharacter(string upper, string lower, Keys code) + { + _upper = upper; + _lower = lower; + _code = code; + } + + public string ReturnCharacter(bool shiftDown) + { + return shiftDown ? _upper : _lower; + } + + public Keys ReturnKey() + { + return _code; + } + } + + internal class InputHandler + { + private static List _characters = new(); + + static InputHandler() + { + _characters.Add(new InputCharacter("A", "a", Keys.A)); + _characters.Add(new InputCharacter("B", "b", Keys.B)); + _characters.Add(new InputCharacter("C", "c", Keys.C)); + _characters.Add(new InputCharacter("D", "d", Keys.D)); + _characters.Add(new InputCharacter("E", "e", Keys.E)); + _characters.Add(new InputCharacter("F", "f", Keys.F)); + _characters.Add(new InputCharacter("G", "g", Keys.G)); + _characters.Add(new InputCharacter("H", "h", Keys.H)); + _characters.Add(new InputCharacter("I", "i", Keys.I)); + _characters.Add(new InputCharacter("J", "j", Keys.J)); + _characters.Add(new InputCharacter("K", "k", Keys.K)); + _characters.Add(new InputCharacter("L", "l", Keys.L)); + _characters.Add(new InputCharacter("M", "m", Keys.M)); + _characters.Add(new InputCharacter("N", "n", Keys.N)); + _characters.Add(new InputCharacter("O", "o", Keys.O)); + _characters.Add(new InputCharacter("P", "p", Keys.P)); + _characters.Add(new InputCharacter("Q", "q", Keys.Q)); + _characters.Add(new InputCharacter("R", "r", Keys.R)); + _characters.Add(new InputCharacter("S", "s", Keys.S)); + _characters.Add(new InputCharacter("T", "t", Keys.T)); + _characters.Add(new InputCharacter("U", "u", Keys.U)); + _characters.Add(new InputCharacter("V", "v", Keys.V)); + _characters.Add(new InputCharacter("W", "w", Keys.W)); + _characters.Add(new InputCharacter("X", "x", Keys.X)); + _characters.Add(new InputCharacter("Y", "y", Keys.Y)); + _characters.Add(new InputCharacter("Z", "z", Keys.Z)); + + _characters.Add(new InputCharacter("!", "1", Keys.D1)); + _characters.Add(new InputCharacter("@", "2", Keys.D2)); + _characters.Add(new InputCharacter("#", "3", Keys.D3)); + _characters.Add(new InputCharacter("$", "4", Keys.D4)); + _characters.Add(new InputCharacter("%", "5", Keys.D5)); + _characters.Add(new InputCharacter("^", "6", Keys.D6)); + _characters.Add(new InputCharacter("&", "7", Keys.D7)); + _characters.Add(new InputCharacter("*", "8", Keys.D8)); + _characters.Add(new InputCharacter("(", "9", Keys.D9)); + _characters.Add(new InputCharacter(")", "0", Keys.D0)); + + _characters.Add(new InputCharacter(" ", " ", Keys.Space)); + _characters.Add(new InputCharacter("<", ",", Keys.OemComma)); + _characters.Add(new InputCharacter("+", "=", Keys.OemPlus)); + _characters.Add(new InputCharacter("?", "/", Keys.OemQuestion)); + _characters.Add(new InputCharacter(">", ".", Keys.OemPeriod)); + _characters.Add(new InputCharacter("_", "-", Keys.OemMinus)); + _characters.Add(new InputCharacter("{", "[", Keys.OemOpenBrackets)); + _characters.Add(new InputCharacter("|", "\"", Keys.OemBackslash)); + _characters.Add(new InputCharacter(":", ";", Keys.OemSemicolon)); + } + + public static string ReturnCharacter() + { + foreach (InputCharacter inputCharacter in _characters) + { + if (KeyInput.JustPressedKey(inputCharacter.ReturnKey())) + { + return inputCharacter.ReturnCharacter(KeyInput.IsKeyPressed(Keys.LeftShift) || KeyInput.IsKeyPressed(Keys.RightShift)); + } + } + + return ""; + } + } +} -- cgit 1.4.1