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

namespace PkmnLib.Dynamic.Events;

public record EvolutionEvent : IEventData
{
    public IPokemon Pokemon { get; }
    public ISpecies Species { get; }
    public IForm OriginalForm { get; }
    public ISpecies NewSpecies { get; }
    public IForm NewForm { get; }
    public IEvolution Evolution { get; }

    public EvolutionEvent(IPokemon pokemon, ISpecies species, IForm originalForm, ISpecies newSpecies, IForm newForm,
        IEvolution evolution)
    {
        Pokemon = pokemon;
        Species = species;
        NewSpecies = newSpecies;
        Evolution = evolution;
        OriginalForm = originalForm;
        NewForm = newForm;
    }

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