Exemple #1
0
    IEnumerator StartBattle(List <EnemyStats> enemies)
    {
        DisableCommandCanvas();

        // Reset values
        battleEnded = false;
        playerTeam.Clear();
        allAllies.Clear();
        enemyTeam.Clear();
        allEnemies.Clear();
        turnOrder.Clear();
        statsPanels.Clear();
        turnIndex = -1;
        foreach (Transform child in statsPanel)
        {
            Destroy(child.gameObject);
        }

        // Initialise party members
        foreach (PlayerStats player in PartyManager.instance.partyMembers)
        {
            PlayerStats temp = Instantiate(player);
            temp.InitialiseCharacter();

            CharacterPanel panel = Instantiate(statsPrefab, statsPanel).GetComponent <CharacterPanel>();
            panel.UpdateStats(temp);
            statsPanels[temp] = panel;
            allAllies.Add(temp);

            if (!player.isDead)
            {
                playerTeam.Add(temp);
            }
        }
        foreach (StatsBase player in playerTeam)
        {
            turnOrder.Add(player);
        }

        if (enemies != null)
        {
            AddSetEnemies(enemies);
        }
        else
        {
            AddRandomEnemies();
        }

        // Sort by agility
        turnOrder = turnOrder.OrderByDescending(stat => stat.currentAGI).ToList();

        // Generate first message
        messageText.text = "";

        for (int i = 0; i < enemyTeam.Count; i++)
        {
            if (enemyTeam.Count == 1)
            {
                messageText.text += "A ";
            }
            messageText.text += enemyTeam[i].characterName;
            if (i < enemyTeam.Count - 2)
            {
                messageText.text += ", ";
            }
            else if (i == enemyTeam.Count - 2)
            {
                messageText.text += " and ";
            }
        }
        if (enemyTeam.Count > 1)
        {
            messageText.text += " appear!";
        }
        else
        {
            messageText.text += " appears!";
        }

        UpdateAllStats();
        spriteManager.SetSprites(enemyTeam);

        while (!GameManager.instance.transition.textureHidden)
        {
            yield return(null);
        }

        yield return(new WaitForSeconds(timeToWait * Mathf.CeilToInt(enemyTeam.Count / 2)));

        NextTurn();
    }