Exemplo n.º 1
0
    IEnumerator SetupBattle()
    {
        var petLevel = Controller.instance.data.productionUpgradeLevel;

        for (int i = 0; i < 3; i++)
        {
            //int friendlyLevel = ((petLevel[friendlyMonsterStatsList[0].MonsterID] + petLevel[friendlyMonsterStatsList[1].MonsterID] + petLevel[friendlyMonsterStatsList[2].MonsterID]) * 1) / 3;

            GameObject   friendlyGO   = Instantiate(friendlyPrefab, playerBattleStations[i]);
            MonsterStats friendlyUnit = friendlyGO.GetComponent <MonsterStats>();

            friendlyUnit.MonsterID          = TeamSelectManager.instance.ChosenMonsters[i];
            friendlyUnit.MonsterMaxHP       = (int)(Math.Pow(Controller.instance.data.productionUpgradeLevel[friendlyUnit.MonsterID], 1.1) * 5);
            friendlyUnit.MonsterCurrentHP   = (int)(Math.Pow(Controller.instance.data.productionUpgradeLevel[friendlyUnit.MonsterID], 1.1) * 5);
            friendlyUnit.MonsterAttackPower = (int)(Math.Pow(Controller.instance.data.productionUpgradeLevel[friendlyUnit.MonsterID], 1.1) * 1.3 + 1);
            friendlyUnit.MonsterAnimator.runtimeAnimatorController = friendlyAnimators[friendlyUnit.MonsterID].runtimeAnimatorController;
            friendlyUnit.MonsterHPText.text = $"HP {friendlyUnit.MonsterCurrentHP}/{friendlyUnit.MonsterMaxHP}";

            friendlyUnit.hpSlider.maxValue = friendlyUnit.MonsterMaxHP;
            friendlyUnit.hpSlider.value    = friendlyUnit.MonsterCurrentHP;

            friendlyMonsterStatsList.Add(friendlyUnit);
            allUnits.Add(friendlyGO);
        }

        for (int i = 0; i < 3; i++)
        {
            int          enemyType  = Random.Range(0, 4);
            int          enemyLevel = ((petLevel[friendlyMonsterStatsList[0].MonsterID] + petLevel[friendlyMonsterStatsList[1].MonsterID] + petLevel[friendlyMonsterStatsList[2].MonsterID]) * 5) / 12 + (i - 1);
            GameObject   enemyGO    = Instantiate(enemyPrefab, enemyBattleStation);
            MonsterStats enemyUnit  = enemyGO.GetComponent <MonsterStats>();

            enemyUnit.MonsterMaxHP       = (int)(Math.Pow(enemyLevel, 1.1) * 5) + 1;
            enemyUnit.MonsterCurrentHP   = (int)(Math.Pow(enemyLevel, 1.1) * 5) + 1;
            enemyUnit.MonsterAttackPower = (int)(Math.Pow(enemyLevel, 1.1) * 1 + 0);
            enemyUnit.MonsterAnimator.runtimeAnimatorController = enemyAnimators[enemyType].runtimeAnimatorController;

            enemyUnit.hpSlider.maxValue  = enemyUnit.MonsterMaxHP;
            enemyUnit.hpSlider.value     = enemyUnit.MonsterCurrentHP;
            enemyUnit.MonsterHPText.text = $"HP {enemyUnit.MonsterCurrentHP}/{enemyUnit.MonsterMaxHP}";
            enemyUnit.Monster.SetActive(false);

            enemyMonsterStatsList.Add(enemyUnit);
            allUnits.Add(enemyGO);
        }
        enemyMonsterStatsList[0].Monster.SetActive(true);
        currentEnemy    = 0;
        currentFriendly = 0;

        friendlyAlive = new[] { true, true, true };
        enemyAlive    = new[] { true, true, true };

        outcomeReward = (int)Controller.instance.AutoClicksPerSecond() * 100;
        battleHUD.SetBattleHUD();
        battleHUD.currentEnemyText.text = $"Enemy {currentEnemy + 1} / 3";

        yield return(new WaitForSeconds(2f));

        state = BattleState.PLAYERTURN;
        StartCoroutine(PlayerTurn());
    }