示例#1
0
    private void enterAttacking()
    {
        _switchState = false;
        this.SubBosses.Shuffle();
        _eyeAutoFire.Paused = false;
        _timedCallbacks.AddCallback(this, eyeSpeedUp, this.DelayBeforeEyeSpeedup);
        _attacksToFinish = 0;

        if (this.AttackTargets.Count == 0)
        {
            _switchState = true;
        }
        else
        {
            for (int i = 0; i < this.SubBosses.Count; ++i)
            {
                ++_attacksToFinish;
                BossWeakSubBehavior subBoss      = this.SubBosses[i].GetComponent <BossWeakSubBehavior>();
                Transform           randomTarget = this.AttackTargets[Random.Range(0, this.AttackTargets.Count)];
                subBoss.ScheduleAttack(randomTarget, this.AttackSpeed, i * this.DelayBetweenAttacks, this.DelayBeforeAttack, this.DelayBeforeReturn);
            }

            if (_attacksToFinish == 0)
            {
                _timedCallbacks.AddCallback(this, switchState, this.DelayAfterAttackPhase);
            }
        }
    }
示例#2
0
    private void SubBossKilled(Damagable died)
    {
        this.SubBosses.Remove(died.gameObject);
        BossWeakSubBehavior sub = died.GetComponent <BossWeakSubBehavior>();

        _ogPositionsToSpawn.Add(sub.OGPosition);

        if (!sub.AttackFinished)
        {
            --_attacksToFinish;

            if (_attacksToFinish == 0 && _stateMachine.CurrentState == ATTACKING_STATE)
            {
                _timedCallbacks.AddCallback(this, switchState, this.DelayAfterAttackPhase);
            }
        }
    }