using Godot; using TheLegendOfGustav.Entities.Actors.AI; using TheLegendOfGustav.Map; namespace TheLegendOfGustav.Entities.Actors; /// /// Um inimigo é uma espécie de ator que é /// hostil ao jogador. Inimigos são controlados por IA. /// public partial class Enemy : Actor { private EnemyDefinition definition; public Enemy(Vector2I initialPosition, MapData map, EnemyDefinition definition) : base(initialPosition, map, definition) { this.definition = definition; SetDefinition(definition); } /// /// A alma do ator. Gera ações que são executadas todo turno. /// public BaseAI Soul { get; private set; } /// /// 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(this.definition); // Definimos qual IA utilizar. switch (definition.AI) { case AIType.None: break; case AIType.DefaultHostile: Soul = new HostileEnemyAI(); AddChild(Soul); break; } } public override void Die() { Soul.QueueFree(); Soul = null; base.Die(); } }