summaryrefslogtreecommitdiff
path: root/scripts/Game.cs
diff options
context:
space:
mode:
authorMatheus <matheus.guedes.mg.m@gmail.com>2025-08-28 17:46:54 -0300
committerMatheus <matheus.guedes.mg.m@gmail.com>2025-08-28 17:46:54 -0300
commit2ed63124ef044a223fc9c7b660100c91af6f39b0 (patch)
treeea0887e9aec0f88cea1979877f325faf6024a444 /scripts/Game.cs
parente17510951f1136f4afeb2afbf76c47df151b299b (diff)
Mudança no sistema de turnos.
Diffstat (limited to 'scripts/Game.cs')
-rw-r--r--scripts/Game.cs23
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();
+ }
}
}
}