Implements PokemonLibrary

This commit is contained in:
2020-05-19 14:25:21 +02:00
parent 4f249de34e
commit 61b5bd710e
8 changed files with 290 additions and 7 deletions

View File

@@ -1,3 +1,4 @@
using System;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Library.GrowthRates
@@ -28,7 +29,7 @@ namespace PkmnLibSharp.Library.GrowthRates
{
Creatureliblibrary.Generated.GrowthRateLibrary.AddGrowthRate(Ptr, name.ToPtr(), gr.Ptr).Assert();
}
protected override void DeletePtr()
{
Creatureliblibrary.Generated.GrowthRateLibrary.Destruct(Ptr);

View File

@@ -1,3 +1,4 @@
using System;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Library.GrowthRates

View File

@@ -54,6 +54,10 @@ namespace PkmnLibSharp.Library.Items
return item;
}
internal ItemLibrary(IntPtr ptr) : base(ptr)
{
}
public ItemLibrary(ulong initialCapacity) : base(
Creatureliblibrary.Generated.ItemLibrary.Construct(initialCapacity))
{

View File

@@ -1,3 +1,4 @@
using System;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Library
@@ -7,7 +8,15 @@ namespace PkmnLibSharp.Library
public byte MaximalLevel => Creatureliblibrary.Generated.LibrarySettings.GetMaximalLevel(Ptr);
public byte MaximalMoves => Creatureliblibrary.Generated.LibrarySettings.GetMaximalMoves(Ptr);
public ushort ShinyRate => Pkmnlib.Generated.LibrarySettings.GetShinyRate(Ptr);
internal LibrarySettings()
{
}
internal LibrarySettings(IntPtr ptr) : base(ptr)
{
}
public LibrarySettings(byte maximalLevel, byte maximalMoves, ushort shinyRate) : base(
Pkmnlib.Generated.LibrarySettings.Construct(maximalLevel, maximalMoves, shinyRate))
{

View File

@@ -0,0 +1,63 @@
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);
}
}
}

View File

@@ -54,6 +54,10 @@ namespace PkmnLibSharp.Library
return species;
}
internal SpeciesLibrary(IntPtr ptr) : base(ptr)
{
}
public SpeciesLibrary(ulong initialCapacity) : base(
Creatureliblibrary.Generated.SpeciesLibrary.Construct(initialCapacity))
{