Implements more functionality.

This commit is contained in:
2020-08-11 21:48:41 +02:00
parent e4f8e46102
commit e08be5c013
13 changed files with 163 additions and 9 deletions

View File

@@ -14,15 +14,59 @@ namespace PkmnLibSharp.Library
public LearnableMoves(byte maxLevel)
{
var ptr = IntPtr.Zero;
LearnableAttacks.Construct(ref ptr, maxLevel);
Pkmnlib.Generated.LearnableMoves.Construct(ref ptr, maxLevel);
Initialize(ptr);
}
public ReadOnlyNativePtrArray<MoveData> DistinctLevelMoves
{
get
{
if (_distinctLevelMoves != null) return _distinctLevelMoves;
var count = LearnableAttacks.GetDistinctLevelAttacksCount(Ptr);
var ptr = LearnableAttacks.GetDistinctLevelAttacks(Ptr);
_distinctLevelMoves = new ReadOnlyNativePtrArray<MoveData>(ptr, (int) count);
return _distinctLevelMoves;
}
}
public ReadOnlyNativePtrArray<MoveData> EggMoves
{
get
{
if (_eggMoves != null) return _eggMoves;
var count = Pkmnlib.Generated.LearnableMoves.GetEggMovesCount(Ptr);
var ptr = Pkmnlib.Generated.LearnableMoves.GetEggMoves(Ptr);
_eggMoves = new ReadOnlyNativePtrArray<MoveData>(ptr, (int) count);
return _eggMoves;
}
}
public void AddLevelAttack(byte level, MoveData move)
public ReadOnlyNativePtrArray<MoveData> GetMovesForLevel(byte level)
{
if (LearnableAttacks.HasAttacksForLevel(Ptr, level) != 1)
{
return new ReadOnlyNativePtrArray<MoveData>();
}
var count = LearnableAttacks.GetAttacksForLevelCount(Ptr, level);
var ptr = LearnableAttacks.GetAttacksForLevel(Ptr, level);
return new ReadOnlyNativePtrArray<MoveData>(ptr, (int) count);
}
public void AddLevelMove(byte level, MoveData move)
{
LearnableAttacks.AddLevelAttack(Ptr, level, move.Ptr);
}
public void AddEggMove(MoveData move)
{
Pkmnlib.Generated.LearnableMoves.AddEggMove(Ptr, move.Ptr);
}
private ReadOnlyNativePtrArray<MoveData>? _distinctLevelMoves;
private ReadOnlyNativePtrArray<MoveData>? _eggMoves;
protected override void DeletePtr()
{
LearnableAttacks.Destruct(Ptr);