diff options
author | chai <chaifix@163.com> | 2020-10-14 12:44:29 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-10-14 12:44:29 +0800 |
commit | dcaad8044384bce4f4358522108bf9a2481ee4e0 (patch) | |
tree | fb6cf33d05c66356b0c5d533e266aaa341210a3e /Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs | |
parent | 4056f06baea18d3c5ae23c4a022fc6ae6b135bb2 (diff) |
*physics
Diffstat (limited to 'Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs')
-rw-r--r-- | Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs | 72 |
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;
+ }
+}
+
|