summaryrefslogtreecommitdiff
path: root/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-10-14 12:44:29 +0800
committerchai <chaifix@163.com>2020-10-14 12:44:29 +0800
commitdcaad8044384bce4f4358522108bf9a2481ee4e0 (patch)
treefb6cf33d05c66356b0c5d533e266aaa341210a3e /Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs
parent4056f06baea18d3c5ae23c4a022fc6ae6b135bb2 (diff)
*physics
Diffstat (limited to 'Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs')
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs72
1 files changed, 72 insertions, 0 deletions
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs
index c14624ad..e63bedb0 100644
--- a/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs
@@ -103,3 +103,75 @@ public sealed class ConditionNone : ConditionBase
}
+/// <summary>
+/// 两个condition都达成才会返回真
+/// </summary>
+public sealed class ConditionMultiAnd : ConditionBase
+{
+ List<ConditionBase> m_Conditions;
+
+ public ConditionMultiAnd(List<ConditionBase> conditions)
+ : base()
+ {
+ m_Conditions.AddRange(conditions);
+ }
+
+ public override bool Evaluate()
+ {
+ foreach(var condition in m_Conditions)
+ {
+ if(!condition.Evaluate())
+ return false;
+ }
+ return true;
+ }
+}
+
+/// <summary>
+/// 两个condition至少一个达成才会返回真
+/// </summary>
+public sealed class ConditionMultiOr : ConditionBase
+{
+ List<ConditionBase> m_Conditions;
+
+ public ConditionMultiOr(List<ConditionBase> conditions)
+ : base()
+ {
+ m_Conditions.AddRange(conditions);
+ }
+
+ public override bool Evaluate()
+ {
+ foreach (var condition in m_Conditions)
+ {
+ if (condition.Evaluate())
+ return true;
+ }
+ return false;
+ }
+}
+
+/// <summary>
+/// 两个condition都不达成才会返回真
+/// </summary>
+public sealed class ConditionMultiNone : ConditionBase
+{
+ List<ConditionBase> m_Conditions;
+
+ public ConditionMultiNone(List<ConditionBase> conditions)
+ : base()
+ {
+ m_Conditions.AddRange(conditions);
+ }
+
+ public override bool Evaluate()
+ {
+ foreach (var condition in m_Conditions)
+ {
+ if (condition.Evaluate())
+ return false;
+ }
+ return true;
+ }
+}
+