PkmnLibSharp/PkmnLibSharp/Battling/Battle/BattleParty.cs

49 lines
1.4 KiB
C#

using System;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Battling
{
public class BattleParty : PointerWrapper
{
public BattleParty(){}
public BattleParty(PokemonParty party, byte[] responsibleIndices)
{
var ptr = IntPtr.Zero;
Creaturelib.Generated.BattleParty.Construct(ref ptr, party.Ptr, responsibleIndices.ArrayPtr(),
(ulong) responsibleIndices.Length / 2).Assert();
Initialize(ptr);
}
private PokemonParty? _party;
public PokemonParty Party
{
get
{
if (_party != null) return _party;
var ptr = Creaturelib.Generated.BattleParty.GetParty(Ptr);
if (TryResolvePointer(ptr, out _party))
return _party!;
_party = new PokemonParty(ptr);
return _party;
}
}
public bool IsResponsibleForIndex(byte side, byte index)
{
byte result = 0;
Creaturelib.Generated.BattleParty.IsResponsibleForIndex(ref result, Ptr, side, index).Assert();
return result == 1;
}
public bool HasPokemonNotInField()
{
return Creaturelib.Generated.BattleParty.HasCreaturesNotInField(Ptr) == 1;
}
protected override void DeletePtr()
{
Creaturelib.Generated.BattleParty.Destruct(Ptr);
}
}
}