Implements more functionality.
This commit is contained in:
13 files changed
+163
-9
No files matched your search
@@ -60,6 +60,7 @@ namespace PkmnLibSharp.Battling
|
||||
public byte WinningSide => Creaturelib.Generated.Battle.GetWinningSide(Ptr);
|
||||
public ulong SidesCount => Creaturelib.Generated.Battle.GetSidesCount(Ptr);
|
||||
public ulong PartiesCount => Creaturelib.Generated.Battle.GetPartiesCount(Ptr);
|
||||
public ulong MonsPerSide => Creaturelib.Generated.Battle.GetCreaturesPerSide(Ptr);
|
||||
|
||||
public ReadOnlyNativePtrArray<BattleSide> Sides
|
||||
{
|
||||
|
||||
@@ -6,6 +6,15 @@ namespace PkmnLibSharp.Battling
|
||||
public class BattleSide : PointerWrapper
|
||||
{
|
||||
internal BattleSide(IntPtr ptr) : base(ptr){}
|
||||
|
||||
public byte SideIndex => Creaturelib.Generated.BattleSide.GetSideIndex(Ptr);
|
||||
|
||||
public byte IndexOf(Pokemon pokemon)
|
||||
{
|
||||
byte b = 0;
|
||||
Creaturelib.Generated.BattleSide.GetCreatureIndex(ref b, Ptr, pokemon.Ptr).Assert();
|
||||
return b;
|
||||
}
|
||||
|
||||
protected override void DeletePtr()
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace PkmnLibSharp.Battling.Events
|
||||
{
|
||||
}
|
||||
|
||||
Pokemon Pokemon
|
||||
public Pokemon Pokemon
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
@@ -57,6 +57,11 @@ namespace Creaturelib.Generated
|
||||
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_Battle_GetCurrentTurn")]
|
||||
internal static extern uint GetCurrentTurn(IntPtr p);
|
||||
|
||||
/// <param name="p">Battle *</param>
|
||||
/// <returns>unsigned int</returns>
|
||||
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_Battle_GetCreaturesPerSide")]
|
||||
internal static extern uint GetCreaturesPerSide(IntPtr p);
|
||||
|
||||
/// <param name="p">const Battle *</param>
|
||||
/// <returns>ChoiceQueue *</returns>
|
||||
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_Battle_GetCurrentTurnQueue")]
|
||||
|
||||
@@ -30,11 +30,27 @@ namespace Creaturelib.Generated
|
||||
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_LearnableAttacks_GetAttacksForLevel")]
|
||||
internal static extern IntPtr GetAttacksForLevel(IntPtr p, byte level);
|
||||
|
||||
/// <param name="p">LearnableAttacks *</param>
|
||||
/// <param name="level">unsigned char</param>
|
||||
/// <returns>bool</returns>
|
||||
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_LearnableAttacks_HasAttacksForLevel")]
|
||||
internal static extern byte HasAttacksForLevel(IntPtr p, byte level);
|
||||
|
||||
/// <param name="p">LearnableAttacks *</param>
|
||||
/// <param name="level">unsigned char</param>
|
||||
/// <returns>long unsigned int</returns>
|
||||
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_LearnableAttacks_GetAttacksForLevelCount")]
|
||||
internal static extern ulong GetAttacksForLevelCount(IntPtr p, byte level);
|
||||
|
||||
/// <param name="p">LearnableAttacks *</param>
|
||||
/// <returns>long unsigned int</returns>
|
||||
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_LearnableAttacks_GetDistinctLevelAttacksCount")]
|
||||
internal static extern ulong GetDistinctLevelAttacksCount(IntPtr p);
|
||||
|
||||
/// <param name="p">LearnableAttacks *</param>
|
||||
/// <returns>const const AttackData * *</returns>
|
||||
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_LearnableAttacks_GetDistinctLevelAttacks")]
|
||||
internal static extern IntPtr GetDistinctLevelAttacks(IntPtr p);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -28,5 +28,11 @@ namespace Pkmnlib.Generated
|
||||
[DllImport("pkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_PokemonLibrary_GetNatureLibrary")]
|
||||
internal static extern IntPtr GetNatureLibrary(IntPtr p);
|
||||
|
||||
/// <param name="p">const SpeciesLibrary *</param>
|
||||
/// <param name="species">const PokemonSpecies *</param>
|
||||
/// <returns>const PokemonSpecies *</returns>
|
||||
[DllImport("pkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_PokemonLibrary_FindPreEvolution")]
|
||||
internal static extern IntPtr FindPreEvolution(IntPtr p, IntPtr species);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -11,6 +11,13 @@ namespace PkmnLibSharp.Utilities
|
||||
private T?[] _cache;
|
||||
private Type _type = typeof(T);
|
||||
|
||||
internal ReadOnlyNativePtrArray()
|
||||
{
|
||||
_ptr = IntPtr.Zero;
|
||||
Count = 0;
|
||||
_cache = new T[Count];
|
||||
}
|
||||
|
||||
internal ReadOnlyNativePtrArray(IntPtr ptr, int length)
|
||||
{
|
||||
_ptr = ptr;
|
||||
@@ -68,6 +75,8 @@ namespace PkmnLibSharp.Utilities
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
if (index >= Count)
|
||||
throw new IndexOutOfRangeException();
|
||||
// Where's your god now?
|
||||
// (We add the offset of the index to the pointer, then dereference the pointer pointer to get the actual pointer to the object we want.)
|
||||
var p = new IntPtr(*(void**)IntPtr.Add(_ptr, index * IntPtr.Size).ToPointer());
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"enums":[{"byteSize":1,"filename":"CreatureLib","name":"ScriptCategory","values":{"0":"Attack","1":"Talent","2":"Status","3":"Creature","4":"Battle","5":"Side"}},{"byteSize":1,"filename":"CreatureLib","name":"Statistic","values":{"0":"Health","1":"PhysicalAttack","2":"PhysicalDefense","3":"MagicalAttack","4":"MagicalDefense","5":"Speed"}},{"byteSize":1,"filename":"CreatureLib","name":"Gender","values":{"0":"Male","1":"Female","2":"Genderless"}},{"byteSize":1,"filename":"CreatureLib","name":"ItemCategory","values":{"0":"MiscItem","1":"CaptureDevice","2":"Medicine","3":"Berry","4":"MoveLearner","5":"VariantChanger","6":"KeyItem","7":"Mail"}},{"byteSize":1,"filename":"CreatureLib","name":"BattleItemCategory","values":{"0":"None","1":"Healing","2":"StatusHealing","3":"CaptureDevice","4":"MiscBattleItem"}},{"byteSize":1,"filename":"CreatureLib","name":"DamageSource","values":{"0":"AttackDamage"}},{"byteSize":1,"filename":"CreatureLib","name":"EventDataKind","values":{"0":"Damage","1":"Heal","2":"Faint","3":"Switch","4":"TurnStart","5":"TurnEnd","6":"ExperienceGain","7":"DisplayText"}},{"byteSize":4,"filename":"CreatureLib","name":"AttackLearnMethod","values":{"0":"Unknown","1":"Level"}},{"byteSize":1,"filename":"CreatureLib","name":"TurnChoiceKind","values":{"0":"Pass","1":"Attack","2":"Item","3":"Switch","4":"Flee"}},{"byteSize":1,"filename":"CreatureLib","name":"EffectParameterType","values":{"0":"None","1":"Bool","2":"Int","3":"Float","4":"String"}},{"byteSize":1,"filename":"CreatureLib","name":"AttackCategory","values":{"0":"Physical","1":"Magical","2":"Status"}},{"byteSize":1,"filename":"CreatureLib","name":"AttackTarget","values":{"0":"Adjacent","1":"AdjacentAlly","10":"RandomOpponent","11":"Self","2":"AdjacentAllySelf","3":"AdjacentOpponent","4":"All","5":"AllAdjacent","6":"AllAdjacentOpponent","7":"AllAlly","8":"AllOpponent","9":"Any"}}],"functions":[{"filename":"CreatureLib","name":"CreatureLib_Battle_Construct","parameters":[{"name":"out","type":"Battle * &"},{"name":"library","type":"const BattleLibrary *"},{"name":"partyArr","type":"BattleParty * *"},{"name":"numberOfParties","type":"long unsigned int"},{"name":"canFlee","type":"bool"},{"name":"numberOfSides","type":"unsigned char"},{"name":"creaturesPerSide","type":"unsigned char"},{"name":"randomSeed","type":"long unsigned int"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_Destruct","parameters":[{"name":"p","type":"const Battle *"}],"returns":"void"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetLibrary","parameters":[{"name":"p","type":"const Battle *"}],"returns":"const BattleLibrary *"},{"filename":"CreatureLib","name":"CreatureLib_Battle_CanUse","parameters":[{"name":"out","type":"bool &"},{"name":"p","type":"Battle *"},{"name":"turnChoice","type":"BaseTurnChoice *"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_TrySetChoice","parameters":[{"name":"out","type":"bool &"},{"name":"p","type":"Battle *"},{"name":"turnChoice","type":"BaseTurnChoice *"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_CanFlee","parameters":[{"name":"p","type":"const Battle *"}],"returns":"bool"},{"filename":"CreatureLib","name":"CreatureLib_Battle_CheckChoicesSetAndRun","parameters":[{"name":"p","type":"Battle *"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetCurrentTurn","parameters":[{"name":"p","type":"Battle *"}],"returns":"unsigned int"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetCurrentTurnQueue","parameters":[{"name":"p","type":"const Battle *"}],"returns":"ChoiceQueue *"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetRandom","parameters":[{"name":"p","type":"Battle *"}],"returns":"BattleRandom *"},{"filename":"CreatureLib","name":"CreatureLib_Battle_CreatureInField","parameters":[{"name":"out","type":"bool &"},{"name":"p","type":"const Battle *"},{"name":"c","type":"Creature *"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetCreature","parameters":[{"name":"out","type":"Creature * &"},{"name":"p","type":"const Battle *"},{"name":"side","type":"unsigned char"},{"name":"target","type":"unsigned char"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_ForceRecall","parameters":[{"name":"p","type":"Battle *"},{"name":"side","type":"unsigned char"},{"name":"target","type":"unsigned char"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_SwitchCreature","parameters":[{"name":"p","type":"Battle *"},{"name":"side","type":"unsigned char"},{"name":"target","type":"unsigned char"},{"name":"c","type":"Creature *"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_CanSlotBeFilled","parameters":[{"name":"out","type":"bool &"},{"name":"p","type":"const Battle *"},{"name":"side","type":"unsigned char"},{"name":"target","type":"unsigned char"}],"returns":"unsigned char"},{"Line truncated
|
||||
{"enums":[{"byteSize":1,"filename":"CreatureLib","name":"ScriptCategory","values":{"0":"Attack","1":"Talent","2":"Status","3":"Creature","4":"Battle","5":"Side"}},{"byteSize":1,"filename":"CreatureLib","name":"Statistic","values":{"0":"Health","1":"PhysicalAttack","2":"PhysicalDefense","3":"MagicalAttack","4":"MagicalDefense","5":"Speed"}},{"byteSize":1,"filename":"CreatureLib","name":"Gender","values":{"0":"Male","1":"Female","2":"Genderless"}},{"byteSize":1,"filename":"CreatureLib","name":"ItemCategory","values":{"0":"MiscItem","1":"CaptureDevice","2":"Medicine","3":"Berry","4":"MoveLearner","5":"VariantChanger","6":"KeyItem","7":"Mail"}},{"byteSize":1,"filename":"CreatureLib","name":"BattleItemCategory","values":{"0":"None","1":"Healing","2":"StatusHealing","3":"CaptureDevice","4":"MiscBattleItem"}},{"byteSize":1,"filename":"CreatureLib","name":"DamageSource","values":{"0":"AttackDamage"}},{"byteSize":1,"filename":"CreatureLib","name":"EventDataKind","values":{"0":"Damage","1":"Heal","2":"Faint","3":"Switch","4":"TurnStart","5":"TurnEnd","6":"ExperienceGain","7":"DisplayText"}},{"byteSize":4,"filename":"CreatureLib","name":"AttackLearnMethod","values":{"0":"Unknown","1":"Level"}},{"byteSize":1,"filename":"CreatureLib","name":"TurnChoiceKind","values":{"0":"Pass","1":"Attack","2":"Item","3":"Switch","4":"Flee"}},{"byteSize":1,"filename":"CreatureLib","name":"EffectParameterType","values":{"0":"None","1":"Bool","2":"Int","3":"Float","4":"String"}},{"byteSize":1,"filename":"CreatureLib","name":"AttackCategory","values":{"0":"Physical","1":"Magical","2":"Status"}},{"byteSize":1,"filename":"CreatureLib","name":"AttackTarget","values":{"0":"Adjacent","1":"AdjacentAlly","10":"RandomOpponent","11":"Self","2":"AdjacentAllySelf","3":"AdjacentOpponent","4":"All","5":"AllAdjacent","6":"AllAdjacentOpponent","7":"AllAlly","8":"AllOpponent","9":"Any"}}],"functions":[{"filename":"CreatureLib","name":"CreatureLib_Battle_Construct","parameters":[{"name":"out","type":"Battle * &"},{"name":"library","type":"const BattleLibrary *"},{"name":"partyArr","type":"BattleParty * *"},{"name":"numberOfParties","type":"long unsigned int"},{"name":"canFlee","type":"bool"},{"name":"numberOfSides","type":"unsigned char"},{"name":"creaturesPerSide","type":"unsigned char"},{"name":"randomSeed","type":"long unsigned int"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_Destruct","parameters":[{"name":"p","type":"const Battle *"}],"returns":"void"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetLibrary","parameters":[{"name":"p","type":"const Battle *"}],"returns":"const BattleLibrary *"},{"filename":"CreatureLib","name":"CreatureLib_Battle_CanUse","parameters":[{"name":"out","type":"bool &"},{"name":"p","type":"Battle *"},{"name":"turnChoice","type":"BaseTurnChoice *"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_TrySetChoice","parameters":[{"name":"out","type":"bool &"},{"name":"p","type":"Battle *"},{"name":"turnChoice","type":"BaseTurnChoice *"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_CanFlee","parameters":[{"name":"p","type":"const Battle *"}],"returns":"bool"},{"filename":"CreatureLib","name":"CreatureLib_Battle_CheckChoicesSetAndRun","parameters":[{"name":"p","type":"Battle *"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetCurrentTurn","parameters":[{"name":"p","type":"Battle *"}],"returns":"unsigned int"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetCreaturesPerSide","parameters":[{"name":"p","type":"Battle *"}],"returns":"unsigned int"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetCurrentTurnQueue","parameters":[{"name":"p","type":"const Battle *"}],"returns":"ChoiceQueue *"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetRandom","parameters":[{"name":"p","type":"Battle *"}],"returns":"BattleRandom *"},{"filename":"CreatureLib","name":"CreatureLib_Battle_CreatureInField","parameters":[{"name":"out","type":"bool &"},{"name":"p","type":"const Battle *"},{"name":"c","type":"Creature *"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_GetCreature","parameters":[{"name":"out","type":"Creature * &"},{"name":"p","type":"const Battle *"},{"name":"side","type":"unsigned char"},{"name":"target","type":"unsigned char"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_ForceRecall","parameters":[{"name":"p","type":"Battle *"},{"name":"side","type":"unsigned char"},{"name":"target","type":"unsigned char"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_SwitchCreature","parameters":[{"name":"p","type":"Battle *"},{"name":"side","type":"unsigned char"},{"name":"target","type":"unsigned char"},{"name":"c","type":"Creature *"}],"returns":"unsigned char"},{"filename":"CreatureLib","name":"CreatureLib_Battle_CanSlotBeFilled","parameters":[{"name":"out","type":"bool &"},{Line truncated
|
||||
@@ -1 +1 @@
|
||||
{"enums":[{"byteSize":1,"filename":"pkmnLib","name":"ScriptCategory","values":{"0":"Attack","1":"Talent","2":"Status","3":"Creature","4":"Battle","5":"Side"}},{"byteSize":4,"filename":"pkmnLib","name":"asEObjTypeFlags","values":{"1":"asOBJ_REF","1024":"asOBJ_APP_CLASS_DESTRUCTOR","1048576":"asOBJ_IMPLICIT_HANDLE","1073741824":"asOBJ_APP_ALIGN16","128":"asOBJ_ASHANDLE","1280":"asOBJ_APP_CLASS_D","131072":"asOBJ_APP_CLASS_ALLFLOATS","134217728":"asOBJ_TEMPLATE_SUBTYPE","16":"asOBJ_NOHANDLE","16384":"asOBJ_APP_FLOAT","16777216":"asOBJ_FUNCDEF","1792":"asOBJ_APP_CLASS_CD","2":"asOBJ_VALUE","2048":"asOBJ_APP_CLASS_ASSIGNMENT","2097151":"asOBJ_MASK_VALID_FLAGS","2097152":"asOBJ_SCRIPT_OBJECT","2304":"asOBJ_APP_CLASS_A","256":"asOBJ_APP_CLASS","262144":"asOBJ_NOCOUNT","268435456":"asOBJ_TYPEDEF","2816":"asOBJ_APP_CLASS_CA","32":"asOBJ_SCOPED","32768":"asOBJ_APP_ARRAY","3328":"asOBJ_APP_CLASS_DA","33554432":"asOBJ_LIST_PATTERN","3840":"asOBJ_APP_CLASS_CDA","4":"asOBJ_GC","4096":"asOBJ_APP_CLASS_COPY_CONSTRUCTOR","4194304":"asOBJ_SHARED","4352":"asOBJ_APP_CLASS_K","4864":"asOBJ_APP_CLASS_CK","512":"asOBJ_APP_CLASS_CONSTRUCTOR","524288":"asOBJ_APP_CLASS_ALIGN8","536870912":"asOBJ_ABSTRACT","5376":"asOBJ_APP_CLASS_DK","5888":"asOBJ_APP_CLASS_CDK","64":"asOBJ_TEMPLATE","6400":"asOBJ_APP_CLASS_AK","65536":"asOBJ_APP_CLASS_ALLINTS","67108864":"asOBJ_ENUM","6912":"asOBJ_APP_CLASS_CAK","7424":"asOBJ_APP_CLASS_DAK","768":"asOBJ_APP_CLASS_C","7936":"asOBJ_APP_CLASS_CDAK","8":"asOBJ_POD","8192":"asOBJ_APP_PRIMITIVE","8388608":"asOBJ_NOINHERIT"}},{"byteSize":4,"filename":"pkmnLib","name":"asECallConvTypes","values":{"0":"asCALL_CDECL","1":"asCALL_STDCALL","2":"asCALL_THISCALL_ASGLOBAL","3":"asCALL_THISCALL","4":"asCALL_CDECL_OBJLAST","5":"asCALL_CDECL_OBJFIRST","6":"asCALL_GENERIC","7":"asCALL_THISCALL_OBJLAST","8":"asCALL_THISCALL_OBJFIRST"}},{"byteSize":1,"filename":"pkmnLib","name":"Statistic","values":{"0":"Health","1":"PhysicalAttack","2":"PhysicalDefense","3":"MagicalAttack","4":"MagicalDefense","5":"Speed"}},{"byteSize":1,"filename":"pkmnLib","name":"MoveCategory","values":{"0":"Physical","1":"Special","2":"Status"}},{"byteSize":1,"filename":"pkmnLib","name":"AttackTarget","values":{"0":"Adjacent","1":"AdjacentAlly","10":"RandomOpponent","11":"Self","2":"AdjacentAllySelf","3":"AdjacentOpponent","4":"All","5":"AllAdjacent","6":"AllAdjacentOpponent","7":"AllAlly","8":"AllOpponent","9":"Any"}},{"byteSize":1,"filename":"pkmnLib","name":"EffectParameterType","values":{"0":"None","1":"Bool","2":"Int","3":"Float","4":"String"}},{"byteSize":4,"filename":"pkmnLib","name":"AttackLearnMethod","values":{"0":"Unknown","1":"Level"}},{"byteSize":1,"filename":"pkmnLib","name":"Gender","values":{"0":"Male","1":"Female","2":"Genderless"}},{"byteSize":1,"filename":"pkmnLib","name":"ItemCategory","values":{"0":"MiscItem","1":"CaptureDevice","2":"Medicine","3":"Berry","4":"MoveLearner","5":"VariantChanger","6":"KeyItem","7":"Mail"}},{"byteSize":1,"filename":"pkmnLib","name":"BattleItemCategory","values":{"0":"None","1":"Healing","2":"StatusHealing","3":"CaptureDevice","4":"MiscBattleItem"}},{"byteSize":1,"filename":"pkmnLib","name":"EvolutionMethod","values":{"0":"Level","1":"HighFriendship","10":"TradeWithHeldItem","11":"TradeWithSpecificPokemon","12":"Custom","2":"KnownMove","3":"LocationBased","4":"TimeBased","5":"HoldsItem","6":"IsGenderAndLevel","7":"EvolutionItemUse","8":"EvolutionItemUseWithGender","9":"Trade"}},{"byteSize":1,"filename":"pkmnLib","name":"TimeOfDay","values":{"0":"Night","1":"Morning","2":"Afternoon","3":"Evening"}},{"byteSize":4,"filename":"pkmnLib","name":"asETypeIdFlags","values":{"0":"asTYPEID_VOID","1":"asTYPEID_BOOL","10":"asTYPEID_FLOAT","1073741824":"asTYPEID_OBJHANDLE","11":"asTYPEID_DOUBLE","134217728":"asTYPEID_SCRIPTOBJECT","2":"asTYPEID_INT8","268435456":"asTYPEID_TEMPLATE","3":"asTYPEID_INT16","4":"asTYPEID_INT32","469762048":"asTYPEID_MASK_OBJECT","5":"asTYPEID_INT64","536870912":"asTYPEID_HANDLETOCONST","6":"asTYPEID_UINT8","67108863":"asTYPEID_MASK_SEQNBR","67108864":"asTYPEID_APPOBJECT","7":"asTYPEID_UINT16","8":"asTYPEID_UINT32","9":"asTYPEID_UINT64"}},{"byteSize":4,"filename":"pkmnLib","name":"asEContextState","values":{"0":"asEXECUTION_FINISHED","1":"asEXECUTION_SUSPENDED","2":"asEXECUTION_ABORTED","3":"asEXECUTION_EXCEPTION","4":"asEXECUTION_PREPARED","5":"asEXECUTION_UNINITIALIZED","6":"asEXECUTION_ACTIVE","7":"asEXECUTION_ERROR"}},{"byteSize":4,"filename":"pkmnLib","name":"asERetCodes","values":{"-1":"asERROR","-10":"asINVALID_DECLARATION","-11":"asINVALID_OBJECT","-12":"asINVALID_TYPE","-13":"asALREADY_REGISTERED","-14":"asMULTIPLE_FUNCTIONS","-15":"asNO_MODULE","-16":"asNO_GLOBAL_VAR","-17":"asINVALID_CONFIGURATION","-18":"asINVALID_INTERFACE","-19":"asCANT_BIND_ALL_FUNCTIONS","-2":"asCONTEXT_ACTIVE","-20":"asLOWER_ARRAY_DIMENSION_NOT_REGISTERED","-21":"asWRONG_CONFIG_GROUP","-22":"asCONFIG_GROUP_IS_IN_USE","-23":"asILLEGAL_BEHAVIOUR_FOR_TYPE","-24":"asWRONG_CALLING_CONV","-25":"asBUILD_IN_PLine truncated
|
||||
{"enums":[{"byteSize":1,"filename":"pkmnLib","name":"ScriptCategory","values":{"0":"Attack","1":"Talent","2":"Status","3":"Creature","4":"Battle","5":"Side"}},{"byteSize":4,"filename":"pkmnLib","name":"asEObjTypeFlags","values":{"1":"asOBJ_REF","1024":"asOBJ_APP_CLASS_DESTRUCTOR","1048576":"asOBJ_IMPLICIT_HANDLE","1073741824":"asOBJ_APP_ALIGN16","128":"asOBJ_ASHANDLE","1280":"asOBJ_APP_CLASS_D","131072":"asOBJ_APP_CLASS_ALLFLOATS","134217728":"asOBJ_TEMPLATE_SUBTYPE","16":"asOBJ_NOHANDLE","16384":"asOBJ_APP_FLOAT","16777216":"asOBJ_FUNCDEF","1792":"asOBJ_APP_CLASS_CD","2":"asOBJ_VALUE","2048":"asOBJ_APP_CLASS_ASSIGNMENT","2097151":"asOBJ_MASK_VALID_FLAGS","2097152":"asOBJ_SCRIPT_OBJECT","2304":"asOBJ_APP_CLASS_A","256":"asOBJ_APP_CLASS","262144":"asOBJ_NOCOUNT","268435456":"asOBJ_TYPEDEF","2816":"asOBJ_APP_CLASS_CA","32":"asOBJ_SCOPED","32768":"asOBJ_APP_ARRAY","3328":"asOBJ_APP_CLASS_DA","33554432":"asOBJ_LIST_PATTERN","3840":"asOBJ_APP_CLASS_CDA","4":"asOBJ_GC","4096":"asOBJ_APP_CLASS_COPY_CONSTRUCTOR","4194304":"asOBJ_SHARED","4352":"asOBJ_APP_CLASS_K","4864":"asOBJ_APP_CLASS_CK","512":"asOBJ_APP_CLASS_CONSTRUCTOR","524288":"asOBJ_APP_CLASS_ALIGN8","536870912":"asOBJ_ABSTRACT","5376":"asOBJ_APP_CLASS_DK","5888":"asOBJ_APP_CLASS_CDK","64":"asOBJ_TEMPLATE","6400":"asOBJ_APP_CLASS_AK","65536":"asOBJ_APP_CLASS_ALLINTS","67108864":"asOBJ_ENUM","6912":"asOBJ_APP_CLASS_CAK","7424":"asOBJ_APP_CLASS_DAK","768":"asOBJ_APP_CLASS_C","7936":"asOBJ_APP_CLASS_CDAK","8":"asOBJ_POD","8192":"asOBJ_APP_PRIMITIVE","8388608":"asOBJ_NOINHERIT"}},{"byteSize":4,"filename":"pkmnLib","name":"asECallConvTypes","values":{"0":"asCALL_CDECL","1":"asCALL_STDCALL","2":"asCALL_THISCALL_ASGLOBAL","3":"asCALL_THISCALL","4":"asCALL_CDECL_OBJLAST","5":"asCALL_CDECL_OBJFIRST","6":"asCALL_GENERIC","7":"asCALL_THISCALL_OBJLAST","8":"asCALL_THISCALL_OBJFIRST"}},{"byteSize":1,"filename":"pkmnLib","name":"Statistic","values":{"0":"Health","1":"PhysicalAttack","2":"PhysicalDefense","3":"MagicalAttack","4":"MagicalDefense","5":"Speed"}},{"byteSize":1,"filename":"pkmnLib","name":"MoveCategory","values":{"0":"Physical","1":"Special","2":"Status"}},{"byteSize":1,"filename":"pkmnLib","name":"AttackTarget","values":{"0":"Adjacent","1":"AdjacentAlly","10":"RandomOpponent","11":"Self","2":"AdjacentAllySelf","3":"AdjacentOpponent","4":"All","5":"AllAdjacent","6":"AllAdjacentOpponent","7":"AllAlly","8":"AllOpponent","9":"Any"}},{"byteSize":1,"filename":"pkmnLib","name":"EffectParameterType","values":{"0":"None","1":"Bool","2":"Int","3":"Float","4":"String"}},{"byteSize":4,"filename":"pkmnLib","name":"AttackLearnMethod","values":{"0":"Unknown","1":"Level"}},{"byteSize":1,"filename":"pkmnLib","name":"Gender","values":{"0":"Male","1":"Female","2":"Genderless"}},{"byteSize":1,"filename":"pkmnLib","name":"ItemCategory","values":{"0":"MiscItem","1":"CaptureDevice","2":"Medicine","3":"Berry","4":"MoveLearner","5":"VariantChanger","6":"KeyItem","7":"Mail"}},{"byteSize":1,"filename":"pkmnLib","name":"BattleItemCategory","values":{"0":"None","1":"Healing","2":"StatusHealing","3":"CaptureDevice","4":"MiscBattleItem"}},{"byteSize":1,"filename":"pkmnLib","name":"EvolutionMethod","values":{"0":"Level","1":"HighFriendship","10":"TradeWithHeldItem","11":"TradeWithSpecificPokemon","12":"Custom","2":"KnownMove","3":"LocationBased","4":"TimeBased","5":"HoldsItem","6":"IsGenderAndLevel","7":"EvolutionItemUse","8":"EvolutionItemUseWithGender","9":"Trade"}},{"byteSize":1,"filename":"pkmnLib","name":"TimeOfDay","values":{"0":"Night","1":"Morning","2":"Afternoon","3":"Evening"}},{"byteSize":4,"filename":"pkmnLib","name":"asETypeIdFlags","values":{"0":"asTYPEID_VOID","1":"asTYPEID_BOOL","10":"asTYPEID_FLOAT","1073741824":"asTYPEID_OBJHANDLE","11":"asTYPEID_DOUBLE","134217728":"asTYPEID_SCRIPTOBJECT","2":"asTYPEID_INT8","268435456":"asTYPEID_TEMPLATE","3":"asTYPEID_INT16","4":"asTYPEID_INT32","469762048":"asTYPEID_MASK_OBJECT","5":"asTYPEID_INT64","536870912":"asTYPEID_HANDLETOCONST","6":"asTYPEID_UINT8","67108863":"asTYPEID_MASK_SEQNBR","67108864":"asTYPEID_APPOBJECT","7":"asTYPEID_UINT16","8":"asTYPEID_UINT32","9":"asTYPEID_UINT64"}},{"byteSize":4,"filename":"pkmnLib","name":"asEContextState","values":{"0":"asEXECUTION_FINISHED","1":"asEXECUTION_SUSPENDED","2":"asEXECUTION_ABORTED","3":"asEXECUTION_EXCEPTION","4":"asEXECUTION_PREPARED","5":"asEXECUTION_UNINITIALIZED","6":"asEXECUTION_ACTIVE","7":"asEXECUTION_ERROR"}},{"byteSize":4,"filename":"pkmnLib","name":"asERetCodes","values":{"-1":"asERROR","-10":"asINVALID_DECLARATION","-11":"asINVALID_OBJECT","-12":"asINVALID_TYPE","-13":"asALREADY_REGISTERED","-14":"asMULTIPLE_FUNCTIONS","-15":"asNO_MODULE","-16":"asNO_GLOBAL_VAR","-17":"asINVALID_CONFIGURATION","-18":"asINVALID_INTERFACE","-19":"asCANT_BIND_ALL_FUNCTIONS","-2":"asCONTEXT_ACTIVE","-20":"asLOWER_ARRAY_DIMENSION_NOT_REGISTERED","-21":"asWRONG_CONFIG_GROUP","-22":"asCONFIG_GROUP_IS_IN_USE","-23":"asILLEGAL_BEHAVIOUR_FOR_TYPE","-24":"asWRONG_CALLING_CONV","-25":"asBUILD_IN_PLine truncated
|
||||
@@ -0,0 +1,64 @@
|
||||
using System.Linq;
|
||||
using NUnit.Framework;
|
||||
using PkmnLibSharp.Library;
|
||||
using PkmnLibSharp.Library.Moves;
|
||||
|
||||
namespace PkmnLibSharpTests.Library
|
||||
{
|
||||
public class LearnableMovesTests
|
||||
{
|
||||
private static MoveData CreateTestMove(string name)
|
||||
{
|
||||
return new MoveData(name, 0, MoveCategory.Physical, 100, 100, 5, MoveTarget.Any,
|
||||
0, 0, "", new EffectParameter[0], new string[0]);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AddLevelMoves()
|
||||
{
|
||||
var moves = new LearnableMoves(100);
|
||||
moves.AddLevelMove(1, CreateTestMove("foo"));
|
||||
moves.AddLevelMove(5, CreateTestMove("bar"));
|
||||
moves.Dispose();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AddAndGetLevelMoves()
|
||||
{
|
||||
var moves = new LearnableMoves(100);
|
||||
var fooMove = CreateTestMove("foo");
|
||||
var barMove = CreateTestMove("bar");
|
||||
moves.AddLevelMove(1, fooMove);
|
||||
moves.AddLevelMove(1, barMove);
|
||||
moves.AddLevelMove(5, barMove);
|
||||
|
||||
|
||||
Assert.AreEqual(2, moves.GetMovesForLevel(1).Count);
|
||||
Assert.AreEqual("foo", moves.GetMovesForLevel(1)[0].Name);
|
||||
Assert.AreEqual("bar", moves.GetMovesForLevel(1)[1].Name);
|
||||
Assert.AreEqual(1, moves.GetMovesForLevel(5).Count);
|
||||
Assert.AreEqual(0, moves.GetMovesForLevel(2).Count);
|
||||
|
||||
moves.Dispose();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetDistinctLevelMoves()
|
||||
{
|
||||
var moves = new LearnableMoves(100);
|
||||
var fooMove = CreateTestMove("foo");
|
||||
var barMove = CreateTestMove("bar");
|
||||
moves.AddLevelMove(1, fooMove);
|
||||
moves.AddLevelMove(1, barMove);
|
||||
moves.AddLevelMove(5, barMove);
|
||||
|
||||
var distinctMoves = moves.DistinctLevelMoves;
|
||||
Assert.AreEqual(2, distinctMoves.Count);
|
||||
Assert.AreEqual("foo", distinctMoves[0].Name);
|
||||
Assert.AreEqual("bar", distinctMoves[1].Name);
|
||||
|
||||
moves.Dispose();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user