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);
}
}