From dcaad8044384bce4f4358522108bf9a2481ee4e0 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Oct 2020 12:44:29 +0800 Subject: *physics --- .../Scripts/AbilitySystem/Abilities/MoveAbility.cs | 4 +- .../AbilitySystem/Conditions/ConditionBase.cs | 72 ++++++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) (limited to 'Assets/Scripts/AbilitySystem') 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 } +/// +/// 两个condition都达成才会返回真 +/// +public sealed class ConditionMultiAnd : ConditionBase +{ + List m_Conditions; + + public ConditionMultiAnd(List conditions) + : base() + { + m_Conditions.AddRange(conditions); + } + + public override bool Evaluate() + { + foreach(var condition in m_Conditions) + { + if(!condition.Evaluate()) + return false; + } + return true; + } +} + +/// +/// 两个condition至少一个达成才会返回真 +/// +public sealed class ConditionMultiOr : ConditionBase +{ + List m_Conditions; + + public ConditionMultiOr(List conditions) + : base() + { + m_Conditions.AddRange(conditions); + } + + public override bool Evaluate() + { + foreach (var condition in m_Conditions) + { + if (condition.Evaluate()) + return true; + } + return false; + } +} + +/// +/// 两个condition都不达成才会返回真 +/// +public sealed class ConditionMultiNone : ConditionBase +{ + List m_Conditions; + + public ConditionMultiNone(List conditions) + : base() + { + m_Conditions.AddRange(conditions); + } + + public override bool Evaluate() + { + foreach (var condition in m_Conditions) + { + if (condition.Evaluate()) + return false; + } + return true; + } +} + -- cgit v1.1-26-g67d0