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); } } }