private void BattleHandler_OnWaveLost(object sender, BattleEventArgs e) { foreach (Bunny bunny in e.bunnies) { UnsubscribeFromBunnyEvents(bunny); } }
private void BattleHandler_OnBunniesInitialized(object sender, BattleEventArgs e) { foreach (Bunny bunny in e.bunnies) { SubscribeToBunnyEvents(bunny); } }
private void BattleHandler_OnEnemiesInitialized(object sender, BattleEventArgs e) { foreach (Enemy enemy in e.enemies) { SubscribeToEnemyEvents(enemy); } }
/// <summary> /// Lose the current enemy wave and exit the battle scene. /// </summary> private void LoseWave() { battleState = BattleState.Idle; sceneTransition.SaveAndLoadScene("AreaSelect"); BattleEventArgs args = new BattleEventArgs(currentBunnies, currentEnemies, null, null, IsBossWave); OnWaveLost?.Invoke(this, args); }
/// <summary> /// Win the current enemy wave and set the battle state accordingly. /// </summary> private void WinWave() { battleState = BattleState.Idle; bool isFinalWave = IsBossWave; if (IsBossWave) { int areasUnlocked = SaveData.current.areasUnlocked; if (areasUnlocked == (int)gameManager.BattleArea && areasUnlocked < (int)Globals.Area.CarrotTop) { // Unlock next area SaveData.current.areasUnlocked++; } else if (gameManager.BattleArea == Globals.Area.Final2) { // Complete game SaveData.current.isGameComplete = true; } // Area is clear if (gameManager.cutsceneFileName.HasValue()) { sceneTransition.SaveAndLoadScene("Cutscene"); } else { sceneTransition.SaveAndLoadScene("AreaSelect"); } } else { // Revive defeated bunnies foreach (Bunny bunny in GetDefeatedBunnies()) { bunny.Revive(); } // Move to next wave wave++; if (IsBossWave && gameManager.cutsceneFileName.HasValue()) { sceneTransition.SaveAndLoadScene("Cutscene"); isFinalWave = true; } else { InitializeWave(); } StartTravel(); } BattleEventArgs args = new BattleEventArgs(currentBunnies, currentEnemies, null, null, isFinalWave); OnWaveWon?.Invoke(this, args); }
private void BattleHandler_OnSelectedBunnyChanged(object sender, BattleEventArgs e) { if (e.selectedBunny == null) { ShowTurnPanel(); } else { SetOptions(e.selectedBunny); } }
private void BattleHandler_OnEnemiesInitialized(object sender, BattleEventArgs e) { if (e.isFinalWave) { // Start boss battle music bossReached = true; bool isFinalBattle = GameManager.Instance.BattleArea == Globals.Area.Final2; PlayMusic(isFinalBattle ? finalBossBattleMusic : bossBattleMusic); } else if (!audioSource.isPlaying) { // Start regular enemy battle music bool isFinalArea = GameManager.Instance.BattleArea == Globals.Area.CarrotTop; PlayMusic(isFinalArea ? finalAreaBattleMusic : regularBattleMusic); } }
/// <summary> /// Perform each turn in the turn collection. Sets the battle state once all turns have been performed. /// </summary> private IEnumerator HandleTurns() { WaitForSeconds turnDelay = new WaitForSeconds(turnTime); while (!turnCollection.IsEmpty) { // Perform turn Turn turn = turnCollection.Pop(); turn.turnAction?.Invoke(); BattleEventArgs args = new BattleEventArgs(currentBunnies, currentEnemies, null, turn, IsBossWave); OnTurnPerformed?.Invoke(this, args); yield return(turnDelay); } HandleEndOfTurns(); }
private void InitializeBunnies(Bunny[] bunnies) { currentBunnies = bunnies; for (int i = 0; i < bunnies.Length; i++) { bunnyActors[i].Fighter = bunnies[i]; } BattleEventArgs args = new BattleEventArgs(bunnies, currentEnemies, null, null, IsBossWave); OnBunniesInitialized?.Invoke(this, args); // Subscribe to events foreach (Bunny bunny in bunnies) { bunny.OnDefeat += Bunny_OnDefeat; bunny.OnLevelUp += Bunny_OnLevelUp; } }
private void InitializeEnemies(Enemy[] enemies) { // Create copies of enemies and assign to actors currentEnemies = new Enemy[enemies.Length]; for (int i = 0; i < enemies.Length; i++) { currentEnemies[i] = enemies[i].ShallowCopy(); enemyActors[i].Fighter = currentEnemies[i]; } BattleEventArgs args = new BattleEventArgs(currentBunnies, currentEnemies, null, null, IsBossWave); OnEnemiesInitialized?.Invoke(this, args); // Subscribe to events foreach (Enemy enemy in currentEnemies) { enemy.OnDefeat += Enemy_OnDefeat; } }
/// <summary> /// Find the next bunny to get input for. /// </summary> private void NextInput() { // Find next bunny do { inputCount++; }while (inputCount <= bunnyActors.Length && !SelectedBunny.IsAlive); // Raise event BattleEventArgs args; if (inputCount <= bunnyActors.Length) { args = new BattleEventArgs(currentBunnies, currentEnemies, SelectedBunny, null, IsBossWave); } else { args = new BattleEventArgs(currentBunnies, currentEnemies, null, null, IsBossWave); } OnSelectedBunnyChanged?.Invoke(this, args); }
private void BattleHandler_OnTurnPerformed(object sender, BattleEventArgs e) { SetTurnText(e.currentTurn.message); SetPlayerStatText(e.bunnies); }
private void BattleHandler_OnSettingUpInput(object sender, BattleEventArgs e) { SetCanvasEnabled(true); ShowPlayerInputPanel(); SetEnemyButtons(e.enemies); }
private void BattleHandler_OnBunniesInitialized(object sender, BattleEventArgs e) { SetPlayerStatText(e.bunnies); }
private void BattleHandler_OnWaveLost(object sender, BattleEventArgs e) { SetCanvasEnabled(false); }
private void BattleHandler_OnWaveWon(object sender, BattleEventArgs e) { SetCanvasEnabled(false); SetPlayerStatText(e.bunnies); }