Esempio n. 1
0
    IEnumerator GameLoop()
    {
        gameIsOn = true;
        // Disable cell editing for now
        cellSel.isOn = false;
        cellSel.TurnOffUI();
        while (gameIsOn)
        {
            if (currentWave >= waves.Length)
            {
                StartCoroutine(WinGame());
                break;
            }

            FindObjectOfType <SoundManager>().PlayTrack("Soundtrack");

            gameLoopText.text = "Inimigos irão invadir a colméia pelos buracos ao redor. Prepare-se!";
            enemyMan.ActivateHoles(waves[currentWave].holeQuantity);
            //REVEAL NEXT HOLES
            yield return(new WaitForSeconds(3));

            //Give the player 10 seconds to build base
            timer             = waves[currentWave].playerConstructionTime;
            gameLoopText.text = "Você tem " + timer + " segundos para organizar sua colméia.";
            cellSel.isOn      = true;
            //LET PLAYER BUILD BASE


            //Wait for player input
            while (!Input.anyKeyDown)
            {
                yield return(null);
            }
            //Begin countdown
            while (timer > 0)
            {
                yield return(new WaitForSeconds(1));

                timer--;
                gameLoopText.text = "Você tem " + timer + " segundos para organizar sua colméia.";
                yield return(null);
            }
            //TIME IS OUT


            //Turn off the cell GUI
            cellSel.isOn = false;
            cellSel.TurnOffUI();

            //RELEASE THE ENEMIES
            gameLoopText.text = "Sua colméia está em perigo!";
            enemyMan.isDone   = false;
            StartCoroutine(enemyMan.ReleaseEnemies(waves[currentWave].howManyTimes, waves[currentWave].howManyEnemies, waves[currentWave].timeBetweenSpawn));

            while (!enemyMan.isDone)
            {
                yield return(null);

                if (playerStats.stats.royalCellCount <= 0 && playerStats.stats.royalJelly <= 0)
                {
                    StartCoroutine(LoseGame());
                    break;
                }
            }
            CheckNextBake();
            ReplenishCellHP();
            currentWave++;
            yield return(null);
        }
        yield break;
    }