Beispiel #1
0
    IEnumerator EndCoroutine()
    {
        if (playerWon)
        {
            AudioManager.instance.PlaySoundAndAtenuateMusic(victory);
        }
        else
        {
            AudioManager.instance.PlaySoundAndAtenuateMusic(defeat);
        }

        yield return(StartCoroutine(combat3DUI.ShowTitle(playerWon)));

        foreach (var f in GetListOfAliveFighters())
        {
            yield return(StartCoroutine(f.GetDotManager().DoTurn(HotDot.callType.combatEnd)));
        }

        foreach (var f in teamA)
        {
            f.ClearDots();
        }

        foreach (var f in teamB)
        {
            f.ClearDots();
        }

        // ------- Events ------ //
        EventManager.CombatEvent eventParam = new EventManager.CombatEvent();
        EventManager.TriggerEvent(EventManager.combatEvents.combatEnd, eventParam);
        while (runningEvents > 0)
        {
            yield return(0);
        }
        // --------------------- //


        if (playerWon)
        {
            yield return(StartCoroutine(ExperienceManager.instance.GiveExperience()));
        }


        if (climate != null)
        {
            climate.End();
        }

        foreach (var f in teamA)
        {
            f.CombatReset();
        }

        foreach (var f in teamB)
        {
            f.CombatReset();
        }

        GameManager.instance.EndOfCombat(playerWon);
    }