diff options
| author | Matheus <matheus.guedes.mg.m@gmail.com> | 2025-08-28 17:46:54 -0300 |
|---|---|---|
| committer | Matheus <matheus.guedes.mg.m@gmail.com> | 2025-08-28 17:46:54 -0300 |
| commit | 2ed63124ef044a223fc9c7b660100c91af6f39b0 (patch) | |
| tree | ea0887e9aec0f88cea1979877f325faf6024a444 /scripts/Game.cs | |
| parent | e17510951f1136f4afeb2afbf76c47df151b299b (diff) | |
Mudança no sistema de turnos.
Diffstat (limited to 'scripts/Game.cs')
| -rw-r--r-- | scripts/Game.cs | 23 |
1 files changed, 20 insertions, 3 deletions
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(); + } } } } |
