From 71c03c717b189ee0ff0e62d219f02b8ab336c40a Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 13 Oct 2020 17:20:14 +0800 Subject: +ability system --- .../AbilitySystem/Conditions/ConditionBase.cs | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs (limited to 'Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs') diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs new file mode 100644 index 00000000..c14624ad --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs @@ -0,0 +1,105 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// 触发条件基类 +/// +public abstract class ConditionBase +{ + + public ConditionBase() + { + } + + public abstract bool Evaluate(); + +} + + +/// +/// 总是满足 +/// +public sealed class ConditionAlways : ConditionBase +{ + public override bool Evaluate() + { + return true; + } +} + +/// +/// 总是不满足 +/// +public sealed class ConditionAlwaysNot : ConditionBase +{ + public override bool Evaluate() + { + return false; + } +} + +/// +/// 两个condition都达成才会返回真 +/// +public sealed class ConditionAnd : ConditionBase +{ + ConditionBase m_FirstCondition, m_LastCondition; + + + public ConditionAnd(ConditionBase first, ConditionBase last) + : base() + { + m_FirstCondition = first; + m_LastCondition = last; + } + + public override bool Evaluate() + { + return m_FirstCondition.Evaluate() && m_LastCondition.Evaluate(); + } +} + +/// +/// 两个condition至少一个达成才会返回真 +/// +public sealed class ConditionOr : ConditionBase +{ + ConditionBase m_FirstCondition, m_LastCondition; + + + public ConditionOr(ConditionBase first, ConditionBase last) + : base() + { + m_FirstCondition = first; + m_LastCondition = last; + } + + public override bool Evaluate() + { + return m_FirstCondition.Evaluate() || m_LastCondition.Evaluate(); + } +} + + +/// +/// 两个condition都不达成才会返回真 +/// +public sealed class ConditionNone : ConditionBase +{ + ConditionBase m_FirstCondition, m_LastCondition; + + public ConditionNone(ConditionBase first, ConditionBase last) + : base() + { + m_FirstCondition = first; + m_LastCondition = last; + } + + public override bool Evaluate() + { + return !m_FirstCondition.Evaluate() && !m_LastCondition.Evaluate(); + } +} + + -- cgit v1.1-26-g67d0