Пример #1
0
    IEnumerator takeTurn()
    {
        yield return(null);

        CombatLogger.instance.logEffectString(EncountersManager.instance.currentEncounter.into);
        yield return(CombatLogger.instance.isDisplaying());

        while (!isCombatOver())
        {
            TurnManagerGUI.instance.updateTurnOrder(getNext3Orders());
            current = turnOrder.Dequeue();
            while (current.health.isDead())
            {
                current = turnOrder.Dequeue();
            }
            TurnManagerGUI.instance.setCurrentCharacter(current.name);
            StatsPanelGUI.instance.initStatsPanel(current.stats);
            yield return(current.health.resolveEffects());


            target  = null;
            ability = null;
            if (!current.skipTurn && !current.health.isDead())
            {
                yield return(current.takeTurn(target, ability));

                Debug.Log(current.name + " targeted " + target.name);
                ability.useAbilty(target);
            }
            else
            {
                current.skipTurn = false;
            }

            yield return(CombatLogger.instance.isDisplaying());

            turnOrder.Enqueue(current);
            TurnManagerGUI.instance.updateTurnOrder(getNext3Orders());
            yield return(null);
        }
        for (int i = 0; i < PartyGUI.instance.party.Count; i++)
        {
            PartyGUI.instance.party[i].health.clearStatuses();
        }
        Debug.Log("Combat over");
        if (onCombatOver != null)
        {
            onCombatOver();
        }
    }