From c83b9abffe8988f9322a027b7fefd68e7f3fa6ba Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 18 Oct 2020 00:48:13 +0800 Subject: =?UTF-8?q?+dash=20=E5=8A=A8=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Conditions/ConditionCommandSeq.cs | 40 ++++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) (limited to 'Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs') diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs index 8c955400..71a7dbf3 100644 --- a/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs @@ -7,14 +7,48 @@ using UnityEngine; /// public class ConditionCommandSeq : ConditionBase { + List m_CommandSeq = new List(); + float m_DeltaTime = 0; + List m_LastCmdID = new List(); - public ConditionCommandSeq(List commandSeq, float maxDeltaTime) - { + List id = new List(); + public ConditionCommandSeq(List commandSeq, float maxDeltaTime) + { + m_CommandSeq.AddRange(commandSeq); + m_DeltaTime = maxDeltaTime; } public override bool Evaluate() { - throw new System.NotImplementedException(); + List commandRecord = InputManager.Instance.CommandRecord; + if (commandRecord == null || commandRecord.Count < m_CommandSeq.Count) + return false; + id.Clear(); + for (int i = 1; i < m_CommandSeq.Count; ++i) + { + GamepadButton button = m_CommandSeq[i]; + GamepadButton preButton = m_CommandSeq[i-1]; + int j = commandRecord.Count - m_CommandSeq.Count + i; + Command cmd = commandRecord[j]; + Command preCmd = commandRecord[j-1]; + if (preCmd.code != preButton || cmd.code != button) + return false; + if (cmd.time - preCmd.time > m_DeltaTime) + return false; + id.Add(preCmd.id); + if (j == commandRecord.Count - 1) + id.Add(cmd.id); + } + + //for (int i = 0; i < id.Count; ++i) + //{ + // if (m_LastCmdID.Contains(id[i])) + // return false; + //} + //m_LastCmdID.Clear(); + //m_LastCmdID.AddRange(id); + + return true; } } -- cgit v1.1-26-g67d0