using PkmnLib.Dynamic.Models;
using PkmnLib.Static.Species;

namespace PkmnLib.Dynamic.Events;

/// <summary>
/// Represents an event that occurs when a Pokémon changes to a different species.
/// </summary>
public class SpeciesChangeEvent : IEventData
{
    /// <summary>
    /// The Pokémon that changed species.
    /// </summary>
    public IPokemon Pokemon { get; }

    /// <summary>
    /// The new species of the Pokémon.
    /// </summary>
    public ISpecies Species { get; }

    /// <summary>
    /// The new form of the Pokémon, if applicable.
    /// </summary>
    public IForm Form { get; }

    /// <inheritdoc cref="SpeciesChangeEvent"/>
    public SpeciesChangeEvent(IPokemon pokemon, ISpecies species, IForm form)
    {
        Pokemon = pokemon;
        Species = species;
        Form = form;
    }

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