PkmnLibSharp/PkmnLibSharp/Library/PokemonLibrary.cs

63 lines
2.3 KiB
C#

using System;
using Creatureliblibrary.Generated;
using PkmnLibSharp.Library.Moves;
using PkmnLibSharp.Utilities;
using GrowthRateLibrary = PkmnLibSharp.Library.GrowthRates.GrowthRateLibrary;
using ItemLibrary = PkmnLibSharp.Library.Items.ItemLibrary;
namespace PkmnLibSharp.Library
{
public class PokemonLibrary : PointerWrapper
{
private LibrarySettings _settings;
public LibrarySettings Settings =>
_settings ??= ResolveOrCreatePtr<LibrarySettings>(DataLibrary.GetSettings(Ptr));
private SpeciesLibrary _species;
public SpeciesLibrary SpeciesLibrary =>
_species ??= ResolveOrCreatePtr<SpeciesLibrary>(DataLibrary.GetSpeciesLibrary(Ptr));
private MoveLibrary _moves;
public MoveLibrary MoveLibrary => _moves ??= ResolveOrCreatePtr<MoveLibrary>(DataLibrary.GetAttackLibrary(Ptr));
private ItemLibrary _items;
public ItemLibrary ItemLibrary => _items ??= ResolveOrCreatePtr<ItemLibrary>(DataLibrary.GetItemLibrary(Ptr));
private GrowthRateLibrary _growthRateLibrary;
public GrowthRateLibrary GrowthRateLibrary => _growthRateLibrary ??=
ResolveOrCreatePtr<GrowthRateLibrary>(DataLibrary.GetGrowthRates(Ptr));
private TypeLibrary _typeLibrary;
public TypeLibrary TypeLibrary =>
_typeLibrary ??= ResolveOrCreatePtr<TypeLibrary>(DataLibrary.GetTypeLibrary(Ptr));
private NatureLibrary _natureLibrary;
public NatureLibrary NatureLibrary => _natureLibrary ??=
ResolveOrCreatePtr<NatureLibrary>(Pkmnlib.Generated.PokemonLibrary.GetNatureLibrary(Ptr));
internal PokemonLibrary(IntPtr ptr) : base(ptr)
{
}
public static PokemonLibrary Create(LibrarySettings settings, SpeciesLibrary species, MoveLibrary moves,
ItemLibrary items,
GrowthRateLibrary growthRates, TypeLibrary types, NatureLibrary natures)
{
var ptr = IntPtr.Zero;
Pkmnlib.Generated.PokemonLibrary.Construct(ref ptr, settings.Ptr, species.Ptr, moves.Ptr, items.Ptr,
growthRates.Ptr, types.Ptr, natures.Ptr).Assert();
return new PokemonLibrary(ptr);
}
protected override void DeletePtr()
{
Pkmnlib.Generated.PokemonLibrary.Destruct(Ptr);
}
}
}