From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/XTriggerCondition.cs | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/XTriggerCondition.cs (limited to 'Client/Assets/Scripts/XMainClient/XTriggerCondition.cs') diff --git a/Client/Assets/Scripts/XMainClient/XTriggerCondition.cs b/Client/Assets/Scripts/XMainClient/XTriggerCondition.cs new file mode 100644 index 00000000..bdbb6d91 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/XTriggerCondition.cs @@ -0,0 +1,64 @@ +using System; +using UnityEngine; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class XTriggerCondition + { + private float m_LastTriggerTime; + + private float m_TriggerCD; + + private uint m_TriggerCount; + + private bool m_bCDWhenRandFail; + + public XTriggerCondition(BuffTable.RowData info) + { + this.m_LastTriggerTime = 0f; + this.m_TriggerCD = Math.Abs(info.BuffTriggerCD); + this.m_TriggerCount = (uint)info.BuffTriggerCount; + this.m_bCDWhenRandFail = (info.BuffTriggerCD < 0f); + bool flag = this.m_TriggerCount == 0u; + if (flag) + { + this.m_TriggerCount = uint.MaxValue; + } + } + + public bool CanTrigger() + { + return this._IsTriggerBuffCD() && this._HasTriggerCount(); + } + + public void OnTrigger() + { + this.m_LastTriggerTime = Time.time; + bool flag = this.m_TriggerCount != uint.MaxValue && this.m_TriggerCount > 0u; + if (flag) + { + this.m_TriggerCount -= 1u; + } + } + + public void OnRandFail() + { + bool bCDWhenRandFail = this.m_bCDWhenRandFail; + if (bCDWhenRandFail) + { + this.m_LastTriggerTime = Time.time; + } + } + + private bool _IsTriggerBuffCD() + { + return Time.time - this.m_LastTriggerTime > this.m_TriggerCD; + } + + private bool _HasTriggerCount() + { + return this.m_TriggerCount == uint.MaxValue || this.m_TriggerCount > 0u; + } + } +} -- cgit v1.1-26-g67d0