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