GrowthRate wrappers.
This commit is contained in:
32
PkmnLibSharp/Library/GrowthRates/ExternGrowthRate.cs
Normal file
32
PkmnLibSharp/Library/GrowthRates/ExternGrowthRate.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace PkmnLibSharp.Library.GrowthRates
|
||||
{
|
||||
public class ExternGrowthRate : GrowthRate
|
||||
{
|
||||
public delegate uint CalculateExperienceDelegate(byte level);
|
||||
|
||||
public delegate byte CalculateLevelDelegate(uint experience);
|
||||
|
||||
private ExternGrowthRate(IntPtr ptr) : base(ptr)
|
||||
{
|
||||
}
|
||||
|
||||
public static ExternGrowthRate Create(CalculateLevelDelegate levelFunc,
|
||||
CalculateExperienceDelegate experienceFunc)
|
||||
{
|
||||
var ptr = IntPtr.Zero;
|
||||
Creatureliblibrary.Generated.ExternGrowthRate.Construct(ref ptr,
|
||||
Marshal.GetFunctionPointerForDelegate(levelFunc),
|
||||
Marshal.GetFunctionPointerForDelegate(experienceFunc)
|
||||
);
|
||||
return new ExternGrowthRate(ptr);
|
||||
}
|
||||
|
||||
protected override void DeletePtr()
|
||||
{
|
||||
Creatureliblibrary.Generated.ExternGrowthRate.Destruct(Ptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
26
PkmnLibSharp/Library/GrowthRates/GrowthRate.cs
Normal file
26
PkmnLibSharp/Library/GrowthRates/GrowthRate.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using PkmnLibSharp.Utilities;
|
||||
|
||||
namespace PkmnLibSharp.Library.GrowthRates
|
||||
{
|
||||
public abstract class GrowthRate : PointerWrapper
|
||||
{
|
||||
internal GrowthRate(IntPtr ptr) : base(ptr)
|
||||
{
|
||||
}
|
||||
|
||||
public byte CalculateLevel(uint experience)
|
||||
{
|
||||
byte b = 0;
|
||||
Creatureliblibrary.Generated.GrowthRate.CalculateLevel(ref b, Ptr, experience).Assert();
|
||||
return b;
|
||||
}
|
||||
|
||||
public uint CalculateExperience(byte level)
|
||||
{
|
||||
uint i = 0;
|
||||
Creatureliblibrary.Generated.GrowthRate.CalculateExperience(ref i, Ptr, level).Assert();
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
PkmnLibSharp/Library/GrowthRates/LookupGrowthRate.cs
Normal file
18
PkmnLibSharp/Library/GrowthRates/LookupGrowthRate.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using PkmnLibSharp.Utilities;
|
||||
|
||||
namespace PkmnLibSharp.Library.GrowthRates
|
||||
{
|
||||
public class LookupGrowthRate : GrowthRate
|
||||
{
|
||||
public LookupGrowthRate(uint[] experiencePerLevel) : base(
|
||||
Creatureliblibrary.Generated.LookupGrowthRate.Construct(experiencePerLevel.ArrayPtr(),
|
||||
(ulong) experiencePerLevel.Length))
|
||||
{
|
||||
}
|
||||
|
||||
protected override void DeletePtr()
|
||||
{
|
||||
Creatureliblibrary.Generated.LookupGrowthRate.Destruct(Ptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user