private void EndCombat(CombatUtil.CombatOutcome outcome) { _playerInstance.Disconnect(nameof(BaseEntity.HealthChanged), _combatMenu, nameof(_combatMenu.UpdatePlayerHealthValue)); _enemyInstance.Disconnect(nameof(BaseEntity.HealthChanged), _combatMenu, nameof(_combatMenu.UpdateEnemyHealthValue)); EmitSignal(nameof(CombatDone), outcome, _enemyInstance); }
private void OnCombat_CombatDone(CombatUtil.CombatOutcome outcome, BaseEnemy enemyInstance) { switch (outcome) { case CombatUtil.CombatOutcome.CombatWin: AudioSystem.StopAllMusic(); AudioSystem.PlayMusic(AudioSystem.MusicCollection.BattleVictoryJingle); enemyInstance.Die(); _combatMenu.Visible = false; _droppedItemsGUI.DropItems(enemyInstance.enemyName, _player); break; case CombatUtil.CombatOutcome.CombatLose: enemyInstance.Die(); GetTree().Paused = false; GameOver(); break; case CombatUtil.CombatOutcome.CombatFlee: AudioSystem.StopAllMusic(); AudioSystem.PlayMusic(AudioSystem.MusicCollection.Overworld); enemyInstance.Die(); GetTree().Paused = false; if (_player.Health <= 0) { GameOver(); } else { _combatMenu.Visible = false; } break; default: throw new ArgumentOutOfRangeException(nameof(outcome), outcome, null); } }