using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class SoldierStateRun : BaseState { public override void EnterState(Type pLastState) { base.EnterState(pLastState); if (mMaster.AtkType == AttackType.Near) { if (mMaster.HasAttackableTarget) { ChangeState(typeof(SoldierStateAttack)); } else { mMaster.SetACTrigger(SoldierACTrigger.TriggerRun); } } else if (mMaster.AtkType == AttackType.Far) { mMaster.ShootTarget = mMaster.AgainstGroup.GetNearestTarget(mMaster.transform.position, mMaster.AtkDistance); if (mMaster.ShootTarget != null && !mMaster.ShootTarget.IsDead) { ChangeState(typeof(SoldierStateShoot)); } else { mMaster.SetACTrigger(SoldierACTrigger.TriggerRun); } } } public override void ExecuteState(float pDeltaTime) { base.ExecuteState(pDeltaTime); if (mMaster.AtkType == AttackType.Near) { if (mMaster.HasAttackableTarget) { ChangeState(typeof(SoldierStateAttack)); } else { if (mMaster.MoveTarget != null && !mMaster.MoveTarget.IsDead) { mMaster.MoveToTarget(pDeltaTime); } else { ChangeState(typeof(SoldierStateIdle)); } } } else if (mMaster.AtkType == AttackType.Far) { mMaster.ShootTarget = mMaster.AgainstGroup.GetNearestTarget(mMaster.transform.position, mMaster.AtkDistance); if (mMaster.ShootTarget != null && !mMaster.ShootTarget.IsDead) { ChangeState(typeof(SoldierStateShoot)); } else { if (mMaster.MoveTarget != null && !mMaster.MoveTarget.IsDead) { mMaster.MoveToTarget(pDeltaTime); } else { ChangeState(typeof(SoldierStateIdle)); } } } } public override void ExitState(Type pNextState) { base.ExitState(pNextState); } }