diff options
author | chai <chaifix@163.com> | 2020-11-16 08:30:54 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-11-16 08:30:54 +0800 |
commit | f325841eff10ae492ce6c634d4b07cf058a068c6 (patch) | |
tree | 980d81a4b87d571fcb893fc44f8809af97466bca /Assets/Scripts/Avatar/Avatar.cs | |
parent | be3ca8b172f22ce7c4c4316745e0df05de58b069 (diff) |
*state system
Diffstat (limited to 'Assets/Scripts/Avatar/Avatar.cs')
-rw-r--r-- | Assets/Scripts/Avatar/Avatar.cs | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/Assets/Scripts/Avatar/Avatar.cs b/Assets/Scripts/Avatar/Avatar.cs index 1f3990a9..601fafab 100644 --- a/Assets/Scripts/Avatar/Avatar.cs +++ b/Assets/Scripts/Avatar/Avatar.cs @@ -16,14 +16,14 @@ public partial class Avatar : MonoBehaviour, IInteractable public Hitbox[] m_Hitbox;
public Hurtbox[] m_Hurtbox;
- protected AbilitySystem m_AbilitySystem = new AbilitySystem();
+ protected StateSystem m_StateSystem = new StateSystem();
- // 预定义的ability,角色必须定义的
- protected AbilityBase m_AbilityLightHurt;
- protected AbilityBase m_AbilityMidiumHurt;
- protected AbilityBase m_AbilityHeavyHurt;
- protected AbilityBase m_AbilityGroundHurt;
- protected AbilityBase m_AbilityAirHurt;
+ // 预定义的state,角色必须定义的
+ protected StateBase m_StateLightHurt;
+ protected StateBase m_StateMidiumHurt;
+ protected StateBase m_StateHeavyHurt;
+ protected StateBase m_StateGroundHurt;
+ protected StateBase m_StateAirHurt;
public PhysicsBody Body
{
@@ -84,13 +84,13 @@ public partial class Avatar : MonoBehaviour, IInteractable public void OnUpdate()
{
- m_AbilitySystem.OnUpdate();
+ m_StateSystem.OnUpdate();
}
// 在物理模拟之后调用
public void OnPhysicsUpdate()
{
- m_AbilitySystem.OnPhysicsUpdate();
+ m_StateSystem.OnPhysicsUpdate();
}
public virtual Vector3 GetEffectPosition()
@@ -101,13 +101,13 @@ public partial class Avatar : MonoBehaviour, IInteractable // 获得当前击打如果有的话
public Hit GetHit()
{
- return m_AbilitySystem.GetHit();
+ return m_StateSystem.GetHit();
}
public virtual void OnHit(HitInfo hitInfo)
{
//Debug.Log("Hit");
- m_AbilitySystem.OnHit(hitInfo);
+ m_StateSystem.OnHit(hitInfo);
}
public virtual void OnHurt(HurtInfo hurtInfo)
@@ -116,7 +116,34 @@ public partial class Avatar : MonoBehaviour, IInteractable HitDefination hitDef = hurtInfo.hitDef;
if (hitDef != null)
ApplyHit(hitDef);
- m_AbilitySystem.OnHurt(hurtInfo);
+ m_StateSystem.OnHurt(hurtInfo);
}
+
+ protected ConditionBase Not(ConditionBase cond)
+ {
+ return new ConditionNot(cond);
+ }
+
+ protected ConditionBase And(ConditionBase c1, ConditionBase c2)
+ {
+ return new ConditionAnd(c1, c2);
+ }
+
+ protected ConditionBase Ands(params ConditionBase[] cond)
+ {
+ List<ConditionBase> conditions = new List<ConditionBase>();
+ for (int i = 0; i < cond.Length; ++i)
+ {
+ conditions.Add(cond[i]);
+ }
+ ConditionMultiAnd and = new ConditionMultiAnd(conditions);
+ return and;
+ }
+
+ protected ConditionBase Or(ConditionBase c1, ConditionBase c2)
+ {
+ return new ConditionOr(c1, c2);
+ }
+
}
|