using System; using PkmnLibSharp.Utilities; namespace PkmnLibSharp.Library.Evolution { public class EvolutionData : PointerWrapper { private EvolutionData(IntPtr ptr) : base(ptr) { } public static EvolutionData CreateLevelEvolution(byte level, Species into) { return new EvolutionData(Pkmnlib.Generated.EvolutionData.CreateLevelEvolution(level, into.Ptr)); } public EvolutionMethod Method => (EvolutionMethod) Pkmnlib.Generated.EvolutionData.GetMethod(Ptr); public Species NewSpecies { get { if (_species != null) return _species; var ptr = Pkmnlib.Generated.EvolutionData.GetNewSpecies(Ptr); if (TryResolvePointer(ptr, out _species)) return _species!; _species = new Species(ptr); return _species; } } public ulong DataLength => Pkmnlib.Generated.EvolutionData.GetDataCount(Ptr); public EffectParameter GetData(ulong index) { var ptr = IntPtr.Zero; Pkmnlib.Generated.EvolutionData.GetData(Ptr, index, ref ptr).Assert(); if (TryResolvePointer(ptr, out EffectParameter? parameter)) return parameter!; return new EffectParameter(ptr); } private Species? _species; protected override void DeletePtr() { throw new NotImplementedException(); } } }