diff options
Diffstat (limited to 'Assets/Scripts/AbilitySystem')
-rw-r--r-- | Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs | 4 | ||||
-rw-r--r-- | Assets/Scripts/AbilitySystem/Conditions/ConditionBase.cs | 72 |
2 files changed, 74 insertions, 2 deletions
diff --git a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs index b2d7356b..a2057900 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs @@ -45,9 +45,9 @@ public class MoveAbility : AbilityBase public override void OnUpdate()
{
- foreach (var trigger in m_AbilityTriggers)
+ foreach (var abilityTrigger in m_AbilityTriggers)
{
- if (trigger.Update())
+ if (abilityTrigger.Update())
break;
}
}
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;
+ }
+}
+
|