From 2cae1eced71e44b675441c48876d21e7c82be807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerard=20Gasc=C3=B3n?= <52170489+GerardGascon@users.noreply.github.com> Date: Wed, 17 Apr 2024 16:54:31 +0200 Subject: [PATCH] refactor: made all input readers sequential --- Assets/Scripts/Domain/CustomInput.cs | 2 +- Assets/Scripts/Domain/Input/AObertaReader.cs | 2 +- Assets/Scripts/Domain/Input/CedillaReader.cs | 6 ++- Assets/Scripts/Domain/Input/EObertaReader.cs | 2 +- Assets/Scripts/Domain/Input/GeminadaReader.cs | 2 +- Assets/Scripts/Domain/Input/IDieresiReader.cs | 2 +- Assets/Scripts/Domain/Input/InputReader.cs | 42 +++++++++++++++---- .../Scripts/Domain/Input/InputReader.cs.meta | 4 +- Assets/Scripts/Domain/Input/IxReader.cs | 2 +- Assets/Scripts/Domain/Input/LlReader.cs | 2 +- Assets/Scripts/Domain/Input/NyReader.cs | 2 +- Assets/Scripts/Domain/Input/OObertaReader.cs | 2 +- .../Domain/Input/SequentialInputReader.cs | 38 ----------------- .../Input/SequentialInputReader.cs.meta | 3 -- Assets/Scripts/Domain/Input/SsReader.cs | 2 +- Assets/Scripts/Domain/Input/TgReader.cs | 2 +- Assets/Scripts/Domain/Input/TjReader.cs | 2 +- Assets/Scripts/Domain/Input/TxReader.cs | 2 +- 18 files changed, 53 insertions(+), 66 deletions(-) delete mode 100644 Assets/Scripts/Domain/Input/SequentialInputReader.cs delete mode 100644 Assets/Scripts/Domain/Input/SequentialInputReader.cs.meta diff --git a/Assets/Scripts/Domain/CustomInput.cs b/Assets/Scripts/Domain/CustomInput.cs index 8bdf416..3e57876 100644 --- a/Assets/Scripts/Domain/CustomInput.cs +++ b/Assets/Scripts/Domain/CustomInput.cs @@ -10,7 +10,7 @@ namespace Domain { public CustomInput() { _history = new KeyHistory(); - _readers.Add(new CedillaReader()); + _readers.Add(new CedillaReader(_history)); _readers.Add(new GeminadaReader(_history)); _readers.Add(new TxReader(_history)); _readers.Add(new IxReader(_history)); diff --git a/Assets/Scripts/Domain/Input/AObertaReader.cs b/Assets/Scripts/Domain/Input/AObertaReader.cs index f813c91..53748c2 100644 --- a/Assets/Scripts/Domain/Input/AObertaReader.cs +++ b/Assets/Scripts/Domain/Input/AObertaReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class AObertaReader : SequentialInputReader { + public class AObertaReader : InputReader { public AObertaReader(KeyHistory history) : base(history, new List{ 0xBA, 0x41 }, 0x10, false) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/CedillaReader.cs b/Assets/Scripts/Domain/Input/CedillaReader.cs index 957159b..dd7aeae 100644 --- a/Assets/Scripts/Domain/Input/CedillaReader.cs +++ b/Assets/Scripts/Domain/Input/CedillaReader.cs @@ -1,5 +1,7 @@ -namespace Domain.Input { +using System.Collections.Generic; + +namespace Domain.Input { public class CedillaReader : InputReader { - protected override int Key { get; } = 0xBF; //VK_OEM_2 | cedilla + public CedillaReader(KeyHistory history) : base(history, new List{ 0xBF }) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/EObertaReader.cs b/Assets/Scripts/Domain/Input/EObertaReader.cs index ff2d530..a5a92b0 100644 --- a/Assets/Scripts/Domain/Input/EObertaReader.cs +++ b/Assets/Scripts/Domain/Input/EObertaReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class EObertaReader : SequentialInputReader { + public class EObertaReader : InputReader { public EObertaReader(KeyHistory history) : base(history, new List{ 0xBA, 0x45 }, 0x10, false) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/GeminadaReader.cs b/Assets/Scripts/Domain/Input/GeminadaReader.cs index 204b172..f4b3c4a 100644 --- a/Assets/Scripts/Domain/Input/GeminadaReader.cs +++ b/Assets/Scripts/Domain/Input/GeminadaReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class GeminadaReader : SequentialInputReader { + public class GeminadaReader : InputReader { public GeminadaReader(KeyHistory history) : base(history, new List{ 76, 0x33, 76 }) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/IDieresiReader.cs b/Assets/Scripts/Domain/Input/IDieresiReader.cs index 41817b2..34c1c09 100644 --- a/Assets/Scripts/Domain/Input/IDieresiReader.cs +++ b/Assets/Scripts/Domain/Input/IDieresiReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class IDieresiReader : SequentialInputReader { + public class IDieresiReader : InputReader { public IDieresiReader(KeyHistory history) : base(history, new List{ 0xDE, 0x49 }, 0x10, true) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/InputReader.cs b/Assets/Scripts/Domain/Input/InputReader.cs index 2f27dab..a205a2f 100644 --- a/Assets/Scripts/Domain/Input/InputReader.cs +++ b/Assets/Scripts/Domain/Input/InputReader.cs @@ -1,15 +1,41 @@ -namespace Domain.Input { +using System.Collections.Generic; +using UnityEngine; + +namespace Domain.Input { public abstract class InputReader { - protected bool WasPressed; - protected bool IsPressed; + private readonly KeyHistory _history; + private readonly List _desiredSequence; - protected abstract int Key { get; } + private readonly bool _useSpecial; + private readonly int _specialKey; + private readonly bool _mustContain; - public virtual void UpdateInput() { - WasPressed = IsPressed; - IsPressed = Win32API.GetAsyncKeyState(Key) != 0; + private bool _wasPressed; + private bool _isPressed; + + public bool KeyDown() => _isPressed && !_wasPressed; + + protected InputReader(KeyHistory history, List desiredSequence) { + _useSpecial = false; + _history = history; + _desiredSequence = desiredSequence; } - public bool KeyDown() => IsPressed && !WasPressed; + protected InputReader(KeyHistory history, List desiredSequence, int specialKey, bool mustContain) { + _useSpecial = true; + _history = history; + _desiredSequence = desiredSequence; + + _specialKey = specialKey; + _mustContain = mustContain; + } + + public void UpdateInput() { + _wasPressed = _isPressed; + if (_useSpecial) + _isPressed = _history.ContainsSequence(_desiredSequence, _specialKey, _mustContain); + else + _isPressed = _history.ContainsSequence(_desiredSequence); + } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/InputReader.cs.meta b/Assets/Scripts/Domain/Input/InputReader.cs.meta index 07e9c82..c05d45c 100644 --- a/Assets/Scripts/Domain/Input/InputReader.cs.meta +++ b/Assets/Scripts/Domain/Input/InputReader.cs.meta @@ -1,3 +1,3 @@ fileFormatVersion: 2 -guid: 3b3b656d6cb1415eab0de81628a5b54e -timeCreated: 1713112368 \ No newline at end of file +guid: 9350ce8df7844ae59d38cb2fe6aad68d +timeCreated: 1713129539 \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/IxReader.cs b/Assets/Scripts/Domain/Input/IxReader.cs index c2b9c84..6c2e20e 100644 --- a/Assets/Scripts/Domain/Input/IxReader.cs +++ b/Assets/Scripts/Domain/Input/IxReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class IxReader : SequentialInputReader { + public class IxReader : InputReader { public IxReader(KeyHistory history) : base(history, new List{ 0x49, 0x58 }) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/LlReader.cs b/Assets/Scripts/Domain/Input/LlReader.cs index 39800e8..888bb3c 100644 --- a/Assets/Scripts/Domain/Input/LlReader.cs +++ b/Assets/Scripts/Domain/Input/LlReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class LlReader : SequentialInputReader { + public class LlReader : InputReader { public LlReader(KeyHistory history) : base(history, new List{ 0x4C, 0x4C }) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/NyReader.cs b/Assets/Scripts/Domain/Input/NyReader.cs index 6df1493..d4da479 100644 --- a/Assets/Scripts/Domain/Input/NyReader.cs +++ b/Assets/Scripts/Domain/Input/NyReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class NyReader : SequentialInputReader { + public class NyReader : InputReader { public NyReader(KeyHistory history) : base(history, new List{ 0x4E, 0x59 }) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/OObertaReader.cs b/Assets/Scripts/Domain/Input/OObertaReader.cs index fd8074e..661a37c 100644 --- a/Assets/Scripts/Domain/Input/OObertaReader.cs +++ b/Assets/Scripts/Domain/Input/OObertaReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class OObertaReader : SequentialInputReader { + public class OObertaReader : InputReader { public OObertaReader(KeyHistory history) : base(history, new List{ 0xBA, 0x4F }, 0x10, false) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/SequentialInputReader.cs b/Assets/Scripts/Domain/Input/SequentialInputReader.cs deleted file mode 100644 index 871b91c..0000000 --- a/Assets/Scripts/Domain/Input/SequentialInputReader.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -namespace Domain.Input { - public abstract class SequentialInputReader : InputReader { - protected override int Key => 0; - - private readonly KeyHistory _history; - private readonly List _desiredSequence; - - private readonly bool _useSpecial; - private readonly int _specialKey; - private readonly bool _mustContain; - - protected SequentialInputReader(KeyHistory history, List desiredSequence) { - _useSpecial = false; - _history = history; - _desiredSequence = desiredSequence; - } - - protected SequentialInputReader(KeyHistory history, List desiredSequence, int specialKey, bool mustContain) { - _useSpecial = true; - _history = history; - _desiredSequence = desiredSequence; - - _specialKey = specialKey; - _mustContain = mustContain; - } - - public override void UpdateInput() { - WasPressed = IsPressed; - if (_useSpecial) - IsPressed = _history.ContainsSequence(_desiredSequence, _specialKey, _mustContain); - else - IsPressed = _history.ContainsSequence(_desiredSequence); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/SequentialInputReader.cs.meta b/Assets/Scripts/Domain/Input/SequentialInputReader.cs.meta deleted file mode 100644 index c05d45c..0000000 --- a/Assets/Scripts/Domain/Input/SequentialInputReader.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 9350ce8df7844ae59d38cb2fe6aad68d -timeCreated: 1713129539 \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/SsReader.cs b/Assets/Scripts/Domain/Input/SsReader.cs index 0bf6dd4..75cd350 100644 --- a/Assets/Scripts/Domain/Input/SsReader.cs +++ b/Assets/Scripts/Domain/Input/SsReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class SsReader : SequentialInputReader { + public class SsReader : InputReader { public SsReader(KeyHistory history) : base(history, new List{ 0x53, 0x53 }) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/TgReader.cs b/Assets/Scripts/Domain/Input/TgReader.cs index 7e9c932..83f2026 100644 --- a/Assets/Scripts/Domain/Input/TgReader.cs +++ b/Assets/Scripts/Domain/Input/TgReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class TgReader : SequentialInputReader { + public class TgReader : InputReader { public TgReader(KeyHistory history) : base(history, new List{ 0x54, 0x47 }) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/TjReader.cs b/Assets/Scripts/Domain/Input/TjReader.cs index 1ab5b31..29a343d 100644 --- a/Assets/Scripts/Domain/Input/TjReader.cs +++ b/Assets/Scripts/Domain/Input/TjReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class TjReader : SequentialInputReader { + public class TjReader : InputReader { public TjReader(KeyHistory history) : base(history, new List{ 0x54, 0x4A }) { } } } \ No newline at end of file diff --git a/Assets/Scripts/Domain/Input/TxReader.cs b/Assets/Scripts/Domain/Input/TxReader.cs index 3c60ec3..61e6674 100644 --- a/Assets/Scripts/Domain/Input/TxReader.cs +++ b/Assets/Scripts/Domain/Input/TxReader.cs @@ -2,7 +2,7 @@ using System.Linq; namespace Domain.Input { - public class TxReader : SequentialInputReader { + public class TxReader : InputReader { public TxReader(KeyHistory history) : base(history, new List{ 0x54, 0x58 }) { } } } \ No newline at end of file