Roses/Assets/Scripts/Domain/CustomInput.cs
2024-04-17 17:21:28 +02:00

70 lines
No EOL
1.5 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Domain.Input;
namespace Domain {
public enum VKeyCode {
A = 0x41,
B = 0x42,
C = 0x43,
D = 0x44,
E = 0x45,
F = 0x46,
G = 0x47,
H = 0x48,
I = 0x49,
J = 0x4A,
K = 0x4B,
L = 0x4C,
M = 0x4D,
N = 0x4E,
O = 0x4F,
P = 0x50,
Q = 0x51,
R = 0x52,
S = 0x53,
T = 0x54,
U = 0x55,
V = 0x56,
W = 0x57,
X = 0x58,
Y = 0x59,
Z = 0x5A,
Interpunct = 0x33,
Cedilla = 0xBF,
AccentOpen = 0xBA,
AccentClosed = 0xDE,
Shift = 0x10
}
public class CustomInput {
private readonly List<InputReader> _readers = new();
private readonly KeyHistory _history;
public CustomInput() {
_history = new KeyHistory();
_readers.Add(new CedillaReader(_history));
_readers.Add(new GeminadaReader(_history));
_readers.Add(new TxReader(_history));
_readers.Add(new IxReader(_history));
_readers.Add(new NyReader(_history));
_readers.Add(new TgReader(_history));
_readers.Add(new TjReader(_history));
_readers.Add(new LlReader(_history));
_readers.Add(new SsReader(_history));
_readers.Add(new AObertaReader(_history));
_readers.Add(new EObertaReader(_history));
_readers.Add(new OObertaReader(_history));
_readers.Add(new IDieresiReader(_history));
}
public void UpdateInput() {
_history.CheckPresses();
foreach (InputReader reader in _readers)
reader.UpdateInput();
}
public bool AnyKeyDown() => _readers.Any(reader => reader.KeyDown());
}
}