using Godot; using TheLegendOfGustav.Entities.Actors; using TheLegendOfGustav.Map; namespace TheLegendOfGustav.Entities.Actions; /// /// Action representa uma ação no jogo efetuada por um ator. /// Ações são geradas pelo jogador e pela IA, elas regem os atores do jogo. /// public abstract partial class Action : RefCounted { private Actor actor; private int cost; public Action(Actor actor) { Actor = actor; // Custo base, subclasses podem sobreescrever isto se quiserem. Cost = 10; } /// /// O ator que realiza a ação. /// public Actor Actor { get => actor; private set { actor = value; } } /// /// O custo da ação. /// protected int Cost { get => cost; set { cost = value; } } /// /// É conveniente ter acesso ao mapa dentro de uma ação. /// protected MapData MapData { get => actor.MapData; } /// /// Método que executa a ação. Subclasses da ação devem implementar este método. /// /// Exemplo: /// /// Action action = new Action(actor); /// /* . . . */ /// action.Perform(); /// /// /// /// Se a ação foi executada ou não. public abstract bool Perform(); }