// Update is called once per frame void FixedUpdate() { Debug.Log(currentState); if (!waitActive) //Só lê o próximo estado estado, ou seja, só avança o game state se não tiver que esperar por algo, seja la o que for { switch (currentState) { case (BattleStates.START): //Apresentar os inimigos, ativa o hud e tals battleStartscript.PrepareBattle(); //A CD aumenta para cada inimigo na lista. por enquanto sempre vai ser 3 turnLogText = "Falsas memórias foram encontradas!"; cd = cd * inimigosList.Count; waitActive = true; break; case (BattleStates.PLAYERCHOICE): CameraParaJogador(); turnLogText = "Sua vez!"; currentActor = BattleStates.PLAYERCHOICE; //armazenando que o ator é o jogador break; case (BattleStates.PLAYERANIM): break; case (BattleStates.ENEMYCHOICE): //colocar IA aqui currentActor = BattleStates.ENEMYCHOICE; //checa cada inimigo na lista para ver se ele já agiu int inimIndex = 0; //sempre reseta para o primeiro, porém ... foreach (Inimigo inimstat in inimigosList) { if (inimstat.Agiu) { inimIndex++; //...sempre que encontra um inimigo que já agiu ele adiciona 1 no indexador inimigoTerminouTurno = true; } else { //e quando encontra um que não agiu, significa que o turno dos inimigos ainda não acabou inimigoTerminouTurno = false; } } if (inimigoTerminouTurno == false) //só entra aqui se cada inimigo na lista ainda não agiu { battleStateEnemyChoicescript.EnemyCompleteTurn(inimIndex); enemyActionCamera.transform.position = inimigodavez.cameraPos.transform.position; CameraParaInimigo(); } else { DecidirProximoAtor(); } break; case (BattleStates.ENEMYANIM): //faz os paranaue de animar la break; case (BattleStates.CALCDAMAGE): Debug.Log("CALCULANDO DANO"); if (currentActor == BattleStates.PLAYERCHOICE) //se é o turno do jogador e ele escolheu alguma ação { battleCalcScript.CalculateTotalPlayerDMG(playerUsedAction, inimAlvo); } if (currentActor == BattleStates.ENEMYCHOICE && inimigodavez != null) //calcula o dano se o inimigo ainda não agiu { battleCalcScript.CalculateTotalEnemyDMG(enemyUsedAction, inimigodavez); inimigodavez.Agiu = true; } DecidirProximoAtor(); // Depois de calcular todo o dano, vai retornar para o turno dos inimigos se algum deles não terminou o turno; break; case (BattleStates.ADDSTATUSEFFECT): //Adicionar status no alvo, se houver algum battleAddEffectscript.CheckActionStatus(playerUsedAction); break; case (BattleStates.ENDROUND): totalRoundCounter += 1; jogadorTerminouTurno = false; inimigoTerminouTurno = false; DecidirProximoAtor(); CameraParaJogador(); turnLogText = "Fim da rodada"; waitActive = true; break; case (BattleStates.WIN): //Código que mostra resultados da batalha como XP e itens aqui if (!xprecebido) { battleResultsPanel.SetActive(true); int xpDado = IncreaseExperience.AddExperience(cd); xprecebido = true; expPointsDados.text = " " + xpDado; if (jogPassouNivel) { lvlupwarnTxt.SetActive(true); } } break; case (BattleStates.LOSE): break; } } else { waitTime -= Time.deltaTime; if (waitTime <= 0) { waitActive = false; waitTime = startWaitTime; } } turnLogBox.GetComponent <TextMeshProUGUI>().text = turnLogText; }