using Godot; using System; /// /// Enum das diferentes IAs disponíveis. /// public enum AIType { None, DefaultHostile }; /// /// Um inimigo é uma espécie de ator que é /// hostil ao jogador. Inimigos são controlados por IA. /// public partial class Enemy : Actor { /// /// A alma do ator. Gera ações que são executadas todo turno. /// public BaseAI Soul { get; private set; } /// /// Enquanto a alma controlar o corpo, o ser continua vivo. /// public bool IsAlive { get => Soul != null; } public Enemy(Vector2I initialPosition, MapData map, EnemyDefinition definition) : base(initialPosition, map, definition) { SetDefinition(definition); } /// /// Além de definir as características gerais de um ator, /// também define qual IA utilizar. /// /// Definição do inimigo. public void SetDefinition(EnemyDefinition definition) { // Definimos as características do ator. base.SetDefinition(definition); // Definimos qual IA utilizar. switch(definition.AI) { case AIType.None: break; case AIType.DefaultHostile: Soul = new HostileEnemyAI(); AddChild(Soul); break; } } }