From 2ed63124ef044a223fc9c7b660100c91af6f39b0 Mon Sep 17 00:00:00 2001 From: Matheus Date: Thu, 28 Aug 2025 17:46:54 -0300 Subject: Mudança no sistema de turnos. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/Game.cs | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'scripts/Game.cs') diff --git a/scripts/Game.cs b/scripts/Game.cs index 3a70e0c..b47c154 100644 --- a/scripts/Game.cs +++ b/scripts/Game.cs @@ -53,10 +53,21 @@ public partial class Game : Node { // Se realmente houve uma ação, computamos um turno. if (action != null) { Vector2I previousPlayerPos = player.GridPosition; + + // Início do turno, o jogador recebe um pouco de energia. + if (player.Energy <= 0) { + player.RechargeEnergy(); + } + // Primeiro executamos a ação do jogador action.Perform(); - // Depois computamos os turnos dos outros atores. - HandleEnemyTurns(); + + // Se o jogador ainda tem energia, ele poderá fazer + // mais um turno sem interrupções. + if (player.Energy <= 0) { + // Depois computamos os turnos dos outros atores. + HandleEnemyTurns(); + } // Por fim, se o jogador mudou de lugar, atualizamos seu campo de visão. if (player.GridPosition != previousPlayerPos) { Map.UpdateFOV(player.GridPosition); @@ -73,7 +84,13 @@ public partial class Game : Node { // Se o ator for um inimigo e estiver vivo, deixamos // que sua IA faça um turno. if (actor is Enemy enemy && enemy.IsAlive) { - enemy.Soul.Perform(); + // Início do turno, inimigo recebe energia. + enemy.RechargeEnergy(); + + // O inimigo poderá fazer quantos turnos sua energia deixar. + while (enemy.Energy > 0) { + enemy.Soul.Perform(); + } } } } -- cgit v1.2.3