Example #1
0
        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);
        }
Example #2
0
        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);
        }