From 97da432c35b8c7aaf9dd2c39e2aa4b1f55f36065 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 27 Jan 2021 16:15:06 +0800 Subject: +behaviour designer --- .../AI/Conditionals/XAIConditionStatus.cs | 172 ++++++++++++++++ .../AI/Conditionals/XAIConditionStatus.cs.meta | 8 + .../AI/Conditionals/XAIConditionValue.cs | 216 +++++++++++++++++++++ .../AI/Conditionals/XAIConditionValue.cs.meta | 8 + 4 files changed, 404 insertions(+) create mode 100644 Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionStatus.cs create mode 100644 Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionStatus.cs.meta create mode 100644 Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionValue.cs create mode 100644 Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionValue.cs.meta (limited to 'Client/Assets/Behavior Designer/AI/Conditionals') diff --git a/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionStatus.cs b/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionStatus.cs new file mode 100644 index 00000000..bf5d06d0 --- /dev/null +++ b/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionStatus.cs @@ -0,0 +1,172 @@ +using UnityEngine; +using BehaviorDesigner.Runtime.Tasks; +using BehaviorDesigner.Runtime; + +internal enum XStateDefine +{ + XState_Idle = 0, + XState_Move, + XState_Jump, + XState_Fall, + XState_Freeze, + XState_BeHit, + XState_Death, + XState_Charge, +} + +public enum XQTEState +{ + None = 0, + HitBackPresent, + HitBackStraight, + HitBackGetup, + HitFlyPresent, + HitFlyLand, + HitFlyStraight, + HitFlyGetup, + HitRollPresent, + HitRollStraight, + HitRollGetup, + CanDash = 20, + DashState, + ChargeState, + DashAttackState, + StayInAir, + firedash, + onelight, + Any = 1000, +} + +public class StatusIdle : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsAtState(transform.gameObject, (int)XStateDefine.XState_Idle)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class StatusMove : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsAtState(transform.gameObject, (int)XStateDefine.XState_Move)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class StatusRotate : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsRotate(transform.gameObject)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class StatusBehit : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsAtState(transform.gameObject, (int)XStateDefine.XState_BeHit)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class StatusDeath : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsAtState(transform.gameObject, (int)XStateDefine.XState_Death)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class StatusFreeze : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsAtState(transform.gameObject, (int)XStateDefine.XState_Freeze)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class StatusSkill : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsCastSkill(transform.gameObject)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class StatusWoozy : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsWoozy(transform.gameObject)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class IsQTEState : Conditional +{ + public XQTEState mAIArgQTEState; + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().HasQTE(transform.gameObject, (int)mAIArgQTEState)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class TargetQTEState : Conditional +{ + public SharedTransform mAIArgTarget; + public XQTEState mAIArgQTEState; + + public override TaskStatus OnUpdate() + { + if (mAIArgTarget.Value == null) + return TaskStatus.Failure; + + if (AIMgrUtil.GetAIMgrInterface().HasQTE(mAIArgTarget.Value.gameObject, (int)mAIArgQTEState)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } + +} + +public class IsTargetImmortal : Conditional +{ + public SharedTransform mAIArgTarget; + + public override TaskStatus OnUpdate() + { + if (mAIArgTarget.Value == null) + return TaskStatus.Failure; + ulong id = ulong.Parse(mAIArgTarget.Value.gameObject.name); + if (AIMgrUtil.GetAIMgrInterface().IsTargetImmortal(id)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} \ No newline at end of file diff --git a/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionStatus.cs.meta b/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionStatus.cs.meta new file mode 100644 index 00000000..f62f1a28 --- /dev/null +++ b/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionStatus.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 23511b3fb9bca1841821dc6c4649523f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionValue.cs b/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionValue.cs new file mode 100644 index 00000000..6d998a81 --- /dev/null +++ b/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionValue.cs @@ -0,0 +1,216 @@ +using UnityEngine; +using BehaviorDesigner.Runtime.Tasks; +using BehaviorDesigner.Runtime; +using XUtliPoolLib; + +public class ValueHP : Conditional +{ + public int mAIArgMaxPercent; + public int mAIArgMinPercent; + + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsHPValue(transform, mAIArgMinPercent, mAIArgMaxPercent)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class ValueMP : Conditional +{ + public int mAIArgMaxPercent; + public int mAIArgMinPercent; + + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsMPValue(transform, mAIArgMinPercent, mAIArgMaxPercent)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class ValueFP : Conditional +{ + public int mAIArgMaxFP; + public int mAIArgMinFP; + + public override TaskStatus OnUpdate() + { + return TaskStatus.Success; + } +} + +public class ValueTarget : Conditional +{ + public SharedTransform mAIArgTarget; + + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsValid(mAIArgTarget.Value)) + return TaskStatus.Success; + else + { + AIMgrUtil.GetAIMgrInterface().ClearTarget(transform); + return TaskStatus.Failure; + } + } +} + +public class ValueDistance : Conditional +{ + public SharedTransform mAIArgTarget; + public SharedFloat mAIArgMaxDistance; + + public override TaskStatus OnUpdate() + { + if (mAIArgTarget.Value == null) + return TaskStatus.Failure; + + if ((transform.position - mAIArgTarget.Value.position).magnitude <= mAIArgMaxDistance.Value) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class IsOppoCastingSkill : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsOppoCastingSkill(transform)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class IsHurtOppo : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsHurtOppo(transform)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class IsFixedInCd : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsFixedInCd(transform)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class IsWander : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsWander(transform)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class IsCastingSkill : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsCastSkill(transform.gameObject)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class IsFighting : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsFighting(transform)) + return TaskStatus.Success; + else + { + AIMgrUtil.GetAIMgrInterface().ClearTarget(transform); + return TaskStatus.Failure; + } + } +} + +public class IsSkillChoosed : Conditional +{ + public override TaskStatus OnUpdate() + { + if (AIMgrUtil.GetAIMgrInterface().IsSkillChoosed(transform)) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class ConditionDist : Conditional +{ + public SharedTransform mAIArgTarget; + public SharedFloat mAIArgUpper; + public SharedFloat mAIArgLower; + + public override TaskStatus OnUpdate() + { + if (mAIArgTarget.Value == null) + return TaskStatus.Failure; + + float dist = (mAIArgTarget.Value.position - transform.position).magnitude; + + if (dist >= mAIArgLower.Value && dist <= mAIArgUpper.Value) + return TaskStatus.Success; + else + return TaskStatus.Failure; + } +} + +public class ConditionMonsterNum : Conditional +{ + public SharedInt mAIArgNum; + public int mAIArgMonsterId; + + public override TaskStatus OnUpdate() + { + return TaskStatus.Success; + } +} + +public class ConditionPlayerNum : Conditional +{ + + public int mAIArgPlayerBaseProf; + public int mAIArgPlayerDetailProf; + public int mAIArgWay; + public Vector3 mAIArgCenter; + public float mAIArgRadius; + public SharedInt mAIArgNum; + + public override TaskStatus OnUpdate() + { + int playerprof = AIMgrUtil.GetAIMgrInterface().GetPlayerProf(); + + if (mAIArgPlayerBaseProf == 0 && mAIArgPlayerDetailProf == 0) + mAIArgNum.Value = 1; + else + { + if (mAIArgPlayerBaseProf != 0 && playerprof % 10 == mAIArgPlayerBaseProf) + mAIArgNum.Value = 1; + + if (mAIArgPlayerDetailProf != 0 && playerprof == mAIArgPlayerDetailProf) + mAIArgNum.Value = 1; + } + + return TaskStatus.Success; + } +} \ No newline at end of file diff --git a/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionValue.cs.meta b/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionValue.cs.meta new file mode 100644 index 00000000..cdccdc95 --- /dev/null +++ b/Client/Assets/Behavior Designer/AI/Conditionals/XAIConditionValue.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53441264acbdd0542b20476fcdef876c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: -- cgit v1.1-26-g67d0