using PkmnLib.Dynamic.Models;

namespace PkmnLib.Dynamic.Events;

/// <summary>
/// Event triggered when a move hits.
/// </summary>
public class MoveHitEvent : IEventData
{
    /// <summary>
    /// The move that is being executed.
    /// </summary>
    public IExecutingMove ExecutingMove { get; }

    /// <summary>
    /// Data about the hit.
    /// </summary>
    public IHitData HitData { get; }

    /// <summary>
    /// The target of the move.
    /// </summary>
    public IPokemon Target { get; }

    /// <inheritdoc cref="MoveHitEvent"/>
    public MoveHitEvent(IExecutingMove executingMove, IHitData hitData, IPokemon target)
    {
        ExecutingMove = executingMove;
        HitData = hitData;
        Target = target;
    }

    /// <inheritdoc />
    public EventBatchId BatchId { get; init; }
}