Beispiel #1
0
    private IEnumerator GameLoop()
    {
        turnNumber = 1;
        turnUI.Setup(maxTurnNumber);
        actionTimer.Setup(enemy.characterData.actionTime);
        playerHealthIndicator.SetHP(player.characterData.hp);
        enemyHealthIndicator.SetHP(enemy.characterData.hp);
        playerHealthIndicator.gameObject.SetActive(true);
        enemyHealthIndicator.gameObject.SetActive(true);
        actionTimer.gameObject.SetActive(true);
        turnUI.gameObject.SetActive(true);
        do
        {
            turnStartHintUI.SetTrigger("Play");
            turnUI.UpdateTurn(turnNumber);
            yield return(new WaitForSeconds(1f));

            isAnswerRight    = false;
            waitPlayerAnswer = true;
            int quizIndex = (int)Mathf.Repeat(turnNumber - 1, quizzes.Length);
            quizUI.Show(quizzes[quizIndex]);
            float timer = enemy.characterData.actionTime;
            while (timer > 0 && waitPlayerAnswer)
            {
                yield return(null);

                timer -= Time.deltaTime;
                actionTimer.UpdateTimer(timer);
            }
            yield return(new WaitForSeconds(1f));

            quizUI.gameObject.SetActive(false);
            if (isAnswerRight)
            {
                player.Attack(enemy);
            }
            else
            {
                enemy.Attack(player);
            }
            yield return(new WaitForSeconds(2f));

            turnNumber++;
        } while (turnNumber <= maxTurnNumber && player.characterData.hp > 0 && enemy.characterData.hp > 0);
    }
 private void Start()
 {
     player                 = GameObject.FindGameObjectWithTag("Player").GetComponent <CharacterControl>();
     playerData             = DataManager.Instance.playerData;
     playerData.onHPAdd    += OnPlayerHPAdd;
     playerData.onHPReduce += OnPlayerHPReduce;
     player.characterData   = playerData;
     playerHealthIndicator.SetHP(playerData.hp);
     allEnemies = FindObjectsOfType <EnemyInfo>();
     for (int i = 0; i < allEnemies.Length; i++)
     {
         CharacterData enemyData = DataManager.Instance.GetEnemyData(allEnemies[i].id, allEnemies[i].serialID);
         allEnemies[i].CharacterController.characterData = enemyData;
         if (enemyData.hp <= 0)
         {
             allEnemies[i].gameObject.SetActive(false);
         }
     }
     if (DataManager.Instance.playerLevelPosition != Vector3.one)
     {
         player.agent.Warp(DataManager.Instance.playerLevelPosition);
     }
     CheckGameOver();
 }