Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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);
            }
        }