about summary refs log tree commit diff stats
path: root/AnodyneArchipelago/Menu/InputHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'AnodyneArchipelago/Menu/InputHandler.cs')
-rw-r--r--AnodyneArchipelago/Menu/InputHandler.cs99
1 files changed, 99 insertions, 0 deletions
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 @@
1using AnodyneSharp.Input;
2using Microsoft.Xna.Framework.Input;
3using System.Collections.Generic;
4
5namespace AnodyneArchipelago.Menu
6{
7 internal class InputCharacter
8 {
9 private readonly string _upper;
10 private readonly string _lower;
11 private readonly Keys _code;
12
13 public InputCharacter(string upper, string lower, Keys code)
14 {
15 _upper = upper;
16 _lower = lower;
17 _code = code;
18 }
19
20 public string ReturnCharacter(bool shiftDown)
21 {
22 return shiftDown ? _upper : _lower;
23 }
24
25 public Keys ReturnKey()
26 {
27 return _code;
28 }
29 }
30
31 internal class InputHandler
32 {
33 private static List<InputCharacter> _characters = new();
34
35 static InputHandler()
36 {
37 _characters.Add(new InputCharacter("A", "a", Keys.A));
38 _characters.Add(new InputCharacter("B", "b", Keys.B));
39 _characters.Add(new InputCharacter("C", "c", Keys.C));
40 _characters.Add(new InputCharacter("D", "d", Keys.D));
41 _characters.Add(new InputCharacter("E", "e", Keys.E));
42 _characters.Add(new InputCharacter("F", "f", Keys.F));
43 _characters.Add(new InputCharacter("G", "g", Keys.G));
44 _characters.Add(new InputCharacter("H", "h", Keys.H));
45 _characters.Add(new InputCharacter("I", "i", Keys.I));
46 _characters.Add(new InputCharacter("J", "j", Keys.J));
47 _characters.Add(new InputCharacter("K", "k", Keys.K));
48 _characters.Add(new InputCharacter("L", "l", Keys.L));
49 _characters.Add(new InputCharacter("M", "m", Keys.M));
50 _characters.Add(new InputCharacter("N", "n", Keys.N));
51 _characters.Add(new InputCharacter("O", "o", Keys.O));
52 _characters.Add(new InputCharacter("P", "p", Keys.P));
53 _characters.Add(new InputCharacter("Q", "q", Keys.Q));
54 _characters.Add(new InputCharacter("R", "r", Keys.R));
55 _characters.Add(new InputCharacter("S", "s", Keys.S));
56 _characters.Add(new InputCharacter("T", "t", Keys.T));
57 _characters.Add(new InputCharacter("U", "u", Keys.U));
58 _characters.Add(new InputCharacter("V", "v", Keys.V));
59 _characters.Add(new InputCharacter("W", "w", Keys.W));
60 _characters.Add(new InputCharacter("X", "x", Keys.X));
61 _characters.Add(new InputCharacter("Y", "y", Keys.Y));
62 _characters.Add(new InputCharacter("Z", "z", Keys.Z));
63
64 _characters.Add(new InputCharacter("!", "1", Keys.D1));
65 _characters.Add(new InputCharacter("@", "2", Keys.D2));
66 _characters.Add(new InputCharacter("#", "3", Keys.D3));
67 _characters.Add(new InputCharacter("$", "4", Keys.D4));
68 _characters.Add(new InputCharacter("%", "5", Keys.D5));
69 _characters.Add(new InputCharacter("^", "6", Keys.D6));
70 _characters.Add(new InputCharacter("&", "7", Keys.D7));
71 _characters.Add(new InputCharacter("*", "8", Keys.D8));
72 _characters.Add(new InputCharacter("(", "9", Keys.D9));
73 _characters.Add(new InputCharacter(")", "0", Keys.D0));
74
75 _characters.Add(new InputCharacter(" ", " ", Keys.Space));
76 _characters.Add(new InputCharacter("<", ",", Keys.OemComma));
77 _characters.Add(new InputCharacter("+", "=", Keys.OemPlus));
78 _characters.Add(new InputCharacter("?", "/", Keys.OemQuestion));
79 _characters.Add(new InputCharacter(">", ".", Keys.OemPeriod));
80 _characters.Add(new InputCharacter("_", "-", Keys.OemMinus));
81 _characters.Add(new InputCharacter("{", "[", Keys.OemOpenBrackets));
82 _characters.Add(new InputCharacter("|", "\"", Keys.OemBackslash));
83 _characters.Add(new InputCharacter(":", ";", Keys.OemSemicolon));
84 }
85
86 public static string ReturnCharacter()
87 {
88 foreach (InputCharacter inputCharacter in _characters)
89 {
90 if (KeyInput.JustPressedKey(inputCharacter.ReturnKey()))
91 {
92 return inputCharacter.ReturnCharacter(KeyInput.IsKeyPressed(Keys.LeftShift) || KeyInput.IsKeyPressed(Keys.RightShift));
93 }
94 }
95
96 return "";
97 }
98 }
99}