using Godot; using TheLegendOfGustav.Entities.Actors; using TheLegendOfGustav.Map; namespace TheLegendOfGustav.Entities.Actions; /// /// Ação direcionada. Esta ação é acompanhada com um vetor que representa uma /// distância tendo como ponto de partida o ator. /// public abstract partial class DirectionalAction : Action { public DirectionalAction(Actor actor, Vector2I offset) : base(actor) { Offset = offset; } /// /// Direção/distância do ator da ação. /// Seu significado depende da ação que implementará esta classe. /// public Vector2I Offset { get; private set; } /// /// Coordenada do alvo da ação. /// public Vector2I Destination { get => Actor.GridPosition + Offset; } /// /// Função que obtém o alvo da ação, se houver. /// /// O ator alvo da ação, nulo se não houver. protected Entity GetTarget() { return MapData.GetBlockingEntityAtPosition(Destination); } }