From 2fb787a744d4f7a37d81233d2913a5ef39122f73 Mon Sep 17 00:00:00 2001 From: Matheus Date: Thu, 28 Aug 2025 00:38:48 -0300 Subject: Comentarios --- scripts/Game.cs | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'scripts/Game.cs') diff --git a/scripts/Game.cs b/scripts/Game.cs index 818b064..3a70e0c 100644 --- a/scripts/Game.cs +++ b/scripts/Game.cs @@ -1,9 +1,22 @@ using Godot; -using System; + +/// +/// Classe principal do jogo. +/// Lar da lógica central do jogo. +/// public partial class Game : Node { + /// + /// Definição de um jogador. + /// private static readonly ActorDefinition playerDefinition = GD.Load("res://assets/definitions/actor/Player.tres"); + /// + /// O jogo possui o mapa. + /// private Map Map; + /// + /// Objeto para obter input do usuário. + /// private InputHandler inputHandler; public override void _Ready() { @@ -13,6 +26,7 @@ public partial class Game : Node { inputHandler = GetNode("InputHandler"); + // O jogador é criado pelo jogo. Player player = new Player(Vector2I.Zero, null, playerDefinition); Camera2D camera = GetNode("Camera2D"); RemoveChild(camera); @@ -24,26 +38,40 @@ public partial class Game : Node { Map.UpdateFOV(player.GridPosition); } + /// + /// Método executa aproximadamente 60 vezes por segundo. + /// + /// public override void _PhysicsProcess(double delta) { base._PhysicsProcess(delta); Player player = Map.Map_Data.Player; + // Pegamos uma ação do usuário Action action = inputHandler.GetAction(player); + // Se realmente houve uma ação, computamos um turno. if (action != null) { Vector2I previousPlayerPos = player.GridPosition; + // Primeiro executamos a ação do jogador action.Perform(); + // 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); } } } + /// + /// Executa um turno para cada ator no mapa. + /// private void HandleEnemyTurns() { foreach (Actor actor in Map.Map_Data.Actors) { if (actor is Player) continue; + // 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(); } -- cgit v1.2.3