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); } } }
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); } } }