public override void ChangeState(EnemyStateType stateType) { switch (stateType) { case EnemyStateType.Idle: currentState = new Idle(animator, rigidbodyComponent); break; case EnemyStateType.Die: currentState = new Die(animator, DeadTimer, TimeToReturn, new DeadTimerCallback(EndDead)); break; case EnemyStateType.Damage: currentState = new Damage(animator); break; case EnemyStateType.Attack1: if (isAttackable[0]) { currentState = new Boss.Attack(animator, bossPhase, fireballLifeTimer, new TimerCallback(PushFireballTimer), TargetObject, transform, TimeToReturn, ObjectPoolManager.Instance.FireballQueue, FireBallSpeed, LaunchedFireballList, (int)Power); isAttackable[0] = false; Pattern1Timer = GameTimeManager.Instance.PopTimer(); Pattern1Timer.SetTimer(attack1Tick, false); Pattern1Timer.Callback = new TimerCallback(SetAttackable1); Pattern1Timer.StartTimer(); } break; case EnemyStateType.Attack2: if (isAttackable[1]) { currentState = new Boss.UseSkill(animator, explode, explodeLifeTimer, Power, explodeLifeTime, new TimerCallback(UseSkillEnd), bossPhase); isAttackable[1] = false; Pattern1Timer = GameTimeManager.Instance.PopTimer(); Pattern1Timer.SetTimer(attack2Tick, false); Pattern1Timer.Callback = new TimerCallback(SetAttackable2); Pattern1Timer.StartTimer(); } break; case EnemyStateType.Move: currentState = new Move(animator, transform, rigidbodyComponent, destinationPoint, currentPoint, MoveSpeed, currentTile); break; default: break; } base.ChangeState(stateType); }
public override void ChangeState(EnemyStateType stateType) { switch (stateType) { case EnemyStateType.Idle: currentState = new Idle(animator, rigidbodyComponent); break; case EnemyStateType.Die: currentState = new Die(animator, DeadTimer, TimeToReturn, new DeadTimerCallback(EndDead)); break; case EnemyStateType.Damage: currentState = new Damage(animator); break; case EnemyStateType.Attack1: if (isAttackable[0]) { currentState = new Normal.AttackPattern1(animator, transform, TargetObject, rigidbodyComponent); isAttackable[0] = false; Pattern1Timer = GameTimeManager.Instance.PopTimer(); Pattern1Timer.SetTimer(attack1Tick, false); Pattern1Timer.Callback = new TimerCallback(SetAttackable1); Pattern1Timer.StartTimer(); } break; case EnemyStateType.Attack2: if (isAttackable[1]) { currentState = new Normal.AttackPattern2( PopFireBall(), FireBallLifeTimer, animator, transform, rigidbodyComponent, TargetObject, currentPoint, FireBallSpeed, new TimerCallback(PushFireBall), new ChangeStateCallback(ChangeState), Power); isAttackable[1] = false; Pattern1Timer = GameTimeManager.Instance.PopTimer(); Pattern1Timer.SetTimer(attack1Tick, false); Pattern1Timer.Callback = new TimerCallback(SetAttackable2); Pattern1Timer.StartTimer(); } break; case EnemyStateType.Move: currentState = new Move( animator, transform, rigidbodyComponent, destinationPoint, currentPoint, MoveSpeed, currentTile); break; default: break; } base.ChangeState(stateType); }