63 lines
2.3 KiB
C#
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);
|
|
}
|
|
}
|
|
} |