Additional functionality.

This commit is contained in:
Deukhoofd 2020-08-10 19:13:17 +02:00
parent 12ed340643
commit e4f8e46102
Signed by: Deukhoofd
GPG Key ID: F63E044490819F6F
22 changed files with 211 additions and 62 deletions

View File

@ -1,11 +1,13 @@
using System; using System;
using System.Collections;
using System.Collections.Generic;
using PkmnLibSharp.Utilities; using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Battling namespace PkmnLibSharp.Battling
{ {
public class PokemonParty : PointerWrapper public class PokemonParty : PointerWrapper, IEnumerable<Pokemon>
{ {
private ReadOnlyNativePtrArray<Pokemon>? _party; private ReadOnlyNativePtrArray<Pokemon?>? _party;
internal PokemonParty(IntPtr ptr) : base(ptr){} internal PokemonParty(IntPtr ptr) : base(ptr){}
@ -15,6 +17,8 @@ namespace PkmnLibSharp.Battling
public PokemonParty(Pokemon[] pokemon) : base( public PokemonParty(Pokemon[] pokemon) : base(
Creaturelib.Generated.CreatureParty.ConstructFromArray(pokemon.ArrayPtr(), (ulong) pokemon.Length)) Creaturelib.Generated.CreatureParty.ConstructFromArray(pokemon.ArrayPtr(), (ulong) pokemon.Length))
{} {}
public virtual Pokemon this[int i] => GetAtIndex((ulong) i);
public Pokemon GetAtIndex(ulong index) public Pokemon GetAtIndex(ulong index)
{ {
@ -41,19 +45,34 @@ namespace PkmnLibSharp.Battling
return Creaturelib.Generated.CreatureParty.HasAvailableCreatures(Ptr) == 1; return Creaturelib.Generated.CreatureParty.HasAvailableCreatures(Ptr) == 1;
} }
public ReadOnlyNativePtrArray<Pokemon> Party public ReadOnlyNativePtrArray<Pokemon?> Party
{ {
get get
{ {
if (_party != null) return _party; if (_party != null) return _party;
var ptr = Creaturelib.Generated.CreatureParty.GetParty(Ptr); var ptr = Creaturelib.Generated.CreatureParty.GetParty(Ptr);
_party = new ReadOnlyNativePtrArray<Pokemon>(ptr, (int) Length); _party = new ReadOnlyNativePtrArray<Pokemon?>(ptr, (int) Length);
return _party; return _party;
} }
} }
public ulong Length => Creaturelib.Generated.CreatureParty.GetLength(Ptr); public ulong Length => Creaturelib.Generated.CreatureParty.GetLength(Ptr);
public void PackParty()
{
Creaturelib.Generated.CreatureParty.PackParty(Ptr);
}
public IEnumerator<Pokemon?> GetEnumerator()
{
return Party.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
protected override void DeletePtr() protected override void DeletePtr()
{ {
Creaturelib.Generated.CreatureParty.Destruct(Ptr); Creaturelib.Generated.CreatureParty.Destruct(Ptr);
@ -64,8 +83,11 @@ namespace PkmnLibSharp.Battling
base.MarkAsDeleted(); base.MarkAsDeleted();
foreach (var pokemon in Party) foreach (var pokemon in Party)
{ {
pokemon.MarkAsDeleted(); pokemon?.MarkAsDeleted();
} }
} }
} }
} }

View File

@ -76,5 +76,12 @@ namespace Creaturelib.Generated
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_AttackLibrary_GetCount")] [DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_AttackLibrary_GetCount")]
internal static extern ulong GetCount(IntPtr p); internal static extern ulong GetCount(IntPtr p);
/// <param name="p">AttackLibrary *</param>
/// <param name="index">long unsigned int</param>
/// <param name="out">const AttackData * &</param>
/// <returns>unsigned char</returns>
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_AttackLibrary_GetAtIndex")]
internal static extern byte GetAtIndex(IntPtr p, ulong index, ref IntPtr @out);
} }
} }

View File

@ -36,6 +36,11 @@ namespace Creaturelib.Generated
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_CreatureParty_Switch")] [DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_CreatureParty_Switch")]
internal static extern byte Switch(IntPtr p, ulong a, ulong b); internal static extern byte Switch(IntPtr p, ulong a, ulong b);
/// <param name="p">CreatureParty *</param>
/// <returns>unsigned char</returns>
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_CreatureParty_PackParty")]
internal static extern byte PackParty(IntPtr p);
/// <param name="p">CreatureParty *</param> /// <param name="p">CreatureParty *</param>
/// <param name="index">long unsigned int</param> /// <param name="index">long unsigned int</param>
/// <param name="creature">Creature *</param> /// <param name="creature">Creature *</param>

View File

@ -13,9 +13,11 @@ namespace Creaturelib.Generated
/// <param name="genderRatio">float</param> /// <param name="genderRatio">float</param>
/// <param name="growthRate">const char *</param> /// <param name="growthRate">const char *</param>
/// <param name="captureRate">unsigned char</param> /// <param name="captureRate">unsigned char</param>
/// <param name="flags">const char * *</param>
/// <param name="flagsCount">long unsigned int</param>
/// <returns>unsigned char</returns> /// <returns>unsigned char</returns>
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_CreatureSpecies_Construct")] [DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_CreatureSpecies_Construct")]
internal static extern byte Construct(ref IntPtr @out, ushort id, IntPtr name, IntPtr defaultVariant, float genderRatio, IntPtr growthRate, byte captureRate); internal static extern byte Construct(ref IntPtr @out, ushort id, IntPtr name, IntPtr defaultVariant, float genderRatio, IntPtr growthRate, byte captureRate, IntPtr flags, ulong flagsCount);
/// <param name="p">const CreatureSpecies *</param> /// <param name="p">const CreatureSpecies *</param>
/// <returns>void</returns> /// <returns>void</returns>
@ -110,5 +112,11 @@ namespace Creaturelib.Generated
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_CreatureSpecies_GetVariants")] [DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_CreatureSpecies_GetVariants")]
internal static extern IntPtr GetVariants(IntPtr p); internal static extern IntPtr GetVariants(IntPtr p);
/// <param name="p">const CreatureSpecies *</param>
/// <param name="key">const char *</param>
/// <returns>bool</returns>
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_CreatureSpecies_HasFlag")]
internal static extern byte HasFlag(IntPtr p, IntPtr key);
} }
} }

View File

@ -75,5 +75,12 @@ namespace Creaturelib.Generated
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_ItemLibrary_GetCount")] [DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_ItemLibrary_GetCount")]
internal static extern ulong GetCount(IntPtr p); internal static extern ulong GetCount(IntPtr p);
/// <param name="p">ItemLibrary *</param>
/// <param name="index">long unsigned int</param>
/// <param name="out">const Item * &</param>
/// <returns>unsigned char</returns>
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_ItemLibrary_GetAtIndex")]
internal static extern byte GetAtIndex(IntPtr p, ulong index, ref IntPtr @out);
} }
} }

View File

@ -75,5 +75,12 @@ namespace Creaturelib.Generated
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_SpeciesLibrary_GetCount")] [DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_SpeciesLibrary_GetCount")]
internal static extern ulong GetCount(IntPtr p); internal static extern ulong GetCount(IntPtr p);
/// <param name="p">SpeciesLibrary *</param>
/// <param name="index">long unsigned int</param>
/// <param name="out">const CreatureSpecies * &</param>
/// <returns>unsigned char</returns>
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_SpeciesLibrary_GetAtIndex")]
internal static extern byte GetAtIndex(IntPtr p, ulong index, ref IntPtr @out);
} }
} }

View File

@ -23,9 +23,11 @@ namespace Creaturelib.Generated
/// <param name="secretTalents">const char * *</param> /// <param name="secretTalents">const char * *</param>
/// <param name="secretTalentsLength">long unsigned int</param> /// <param name="secretTalentsLength">long unsigned int</param>
/// <param name="attacks">const LearnableAttacks *</param> /// <param name="attacks">const LearnableAttacks *</param>
/// <param name="flags">const char * *</param>
/// <param name="flagsCount">long unsigned int</param>
/// <returns>SpeciesVariant *</returns> /// <returns>SpeciesVariant *</returns>
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_SpeciesVariant_Construct")] [DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_SpeciesVariant_Construct")]
internal static extern IntPtr Construct(IntPtr name, float height, float weight, uint baseExperience, IntPtr types, ulong typeLength, ushort baseHealth, ushort baseAttack, ushort baseDefense, ushort baseMagicalAttack, ushort baseMagicalDefense, ushort baseSpeed, IntPtr talents, ulong talentsLength, IntPtr secretTalents, ulong secretTalentsLength, IntPtr attacks); internal static extern IntPtr Construct(IntPtr name, float height, float weight, uint baseExperience, IntPtr types, ulong typeLength, ushort baseHealth, ushort baseAttack, ushort baseDefense, ushort baseMagicalAttack, ushort baseMagicalDefense, ushort baseSpeed, IntPtr talents, ulong talentsLength, IntPtr secretTalents, ulong secretTalentsLength, IntPtr attacks, IntPtr flags, ulong flagsCount);
/// <param name="p">SpeciesVariant *</param> /// <param name="p">SpeciesVariant *</param>
/// <returns>void</returns> /// <returns>void</returns>
@ -98,5 +100,11 @@ namespace Creaturelib.Generated
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_SpeciesVariant_GetRandomTalent")] [DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_SpeciesVariant_GetRandomTalent")]
internal static extern byte GetRandomTalent(IntPtr p, IntPtr rand); internal static extern byte GetRandomTalent(IntPtr p, IntPtr rand);
/// <param name="p">const SpeciesVariant *</param>
/// <param name="key">const char *</param>
/// <returns>bool</returns>
[DllImport("CreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_SpeciesVariant_HasFlag")]
internal static extern byte HasFlag(IntPtr p, IntPtr key);
} }
} }

View File

@ -16,9 +16,11 @@ namespace Pkmnlib.Generated
/// <param name="baseHappiness">unsigned char</param> /// <param name="baseHappiness">unsigned char</param>
/// <param name="eggGroupsRaw">const const char * *</param> /// <param name="eggGroupsRaw">const const char * *</param>
/// <param name="eggGroupsLength">long unsigned int</param> /// <param name="eggGroupsLength">long unsigned int</param>
/// <param name="flags">const char * *</param>
/// <param name="flagsCount">long unsigned int</param>
/// <returns>unsigned char</returns> /// <returns>unsigned char</returns>
[DllImport("pkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_PokemonSpecies_Construct")] [DllImport("pkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_PokemonSpecies_Construct")]
internal static extern byte Construct(ref IntPtr @out, ushort id, IntPtr name, IntPtr defaultForme, float genderRatio, IntPtr growthRate, byte captureRate, byte baseHappiness, IntPtr eggGroupsRaw, ulong eggGroupsLength); internal static extern byte Construct(ref IntPtr @out, ushort id, IntPtr name, IntPtr defaultForme, float genderRatio, IntPtr growthRate, byte captureRate, byte baseHappiness, IntPtr eggGroupsRaw, ulong eggGroupsLength, IntPtr flags, ulong flagsCount);
/// <param name="p">const PokemonSpecies *</param> /// <param name="p">const PokemonSpecies *</param>
/// <returns>void</returns> /// <returns>void</returns>

View File

@ -66,6 +66,19 @@ namespace PkmnLibSharp.Library.Items
_cache.Add(key, item); _cache.Add(key, item);
return item; return item;
} }
public IEnumerable<Item> GetEnumerator()
{
var count = Creaturelib.Generated.ItemLibrary.GetCount(Ptr);
var ptr = IntPtr.Zero;
for (ulong i = 0; i < count; i++)
{
Creaturelib.Generated.ItemLibrary.GetAtIndex(Ptr, i, ref ptr).Assert();
if (TryResolvePointer(ptr, out Item? item))
yield return item!;
yield return new Item(ptr);
}
}
protected internal override void MarkAsDeleted() protected internal override void MarkAsDeleted()
{ {

View File

@ -69,6 +69,19 @@ namespace PkmnLibSharp.Library.Moves
AttackLibrary.Construct(ref ptr, defaultCapacity).Assert(); AttackLibrary.Construct(ref ptr, defaultCapacity).Assert();
Initialize(ptr); Initialize(ptr);
} }
public IEnumerable<MoveData> GetEnumerator()
{
var count = AttackLibrary.GetCount(Ptr);
var ptr = IntPtr.Zero;
for (ulong i = 0; i < count; i++)
{
AttackLibrary.GetAtIndex(Ptr, i, ref ptr).Assert();
if (TryResolvePointer(ptr, out MoveData? move))
yield return move!;
yield return new MoveData(ptr);
}
}
protected internal override void MarkAsDeleted() protected internal override void MarkAsDeleted()
{ {

View File

@ -19,17 +19,19 @@ namespace PkmnLibSharp.Library
public Forme(string name, float height, float weight, uint baseExperience, byte[] types, public Forme(string name, float height, float weight, uint baseExperience, byte[] types,
ushort baseHealth, ushort baseAttack, ushort baseDefense, ushort baseSpecialAttack, ushort baseHealth, ushort baseAttack, ushort baseDefense, ushort baseSpecialAttack,
ushort baseSpecialDefense, ushort baseSpeed, IReadOnlyCollection<string> abilities, ushort baseSpecialDefense, ushort baseSpeed, IReadOnlyCollection<string> abilities,
IReadOnlyCollection<string> hiddenAbilities, IReadOnlyCollection<string> hiddenAbilities, LearnableMoves moves, IReadOnlyCollection<string> tags)
LearnableMoves moves)
{ {
var abilitiesConverted = abilities.Select(x => x.ToPtr()).ToArray(); var abilitiesConverted = abilities.Select(x => x.ToPtr()).ToArray();
var hiddenAbilitiesConverted = hiddenAbilities.Select(x => x.ToPtr()).ToArray(); var hiddenAbilitiesConverted = hiddenAbilities.Select(x => x.ToPtr()).ToArray();
var tagsConverted = tags.Select(x => x.ToPtr()).ToArray();
var ab = abilitiesConverted.ArrayPtr(); var ab = abilitiesConverted.ArrayPtr();
var hab = hiddenAbilitiesConverted.ArrayPtr(); var hab = hiddenAbilitiesConverted.ArrayPtr();
var tagsPtr = tagsConverted.ArrayPtr();
var ptr = SpeciesVariant.Construct(name.ToPtr(), height, weight, baseExperience, types.ArrayPtr(), var ptr = SpeciesVariant.Construct(name.ToPtr(), height, weight, baseExperience, types.ArrayPtr(),
(ulong) types.Length, baseHealth, baseAttack, baseDefense, baseSpecialAttack, (ulong) types.Length, baseHealth, baseAttack, baseDefense, baseSpecialAttack,
baseSpecialDefense, baseSpeed, ab, (ulong) abilities.Count, hab, baseSpecialDefense, baseSpeed, ab, (ulong) abilities.Count, hab,
(ulong) hiddenAbilities.Count, moves.Ptr); (ulong) hiddenAbilities.Count, moves.Ptr, tagsPtr, (ulong) tags.Count);
foreach (var intPtr in abilitiesConverted) foreach (var intPtr in abilitiesConverted)
Marshal.FreeHGlobal(intPtr); Marshal.FreeHGlobal(intPtr);
foreach (var intPtr in hiddenAbilitiesConverted) foreach (var intPtr in hiddenAbilitiesConverted)
@ -129,7 +131,7 @@ namespace PkmnLibSharp.Library
} }
} }
public int GetPkmnType(int index) public byte GetPkmnType(int index)
{ {
return Types[index]; return Types[index];
} }
@ -139,6 +141,11 @@ namespace PkmnLibSharp.Library
return SpeciesVariant.GetRandomTalent(Ptr, rand.Ptr); return SpeciesVariant.GetRandomTalent(Ptr, rand.Ptr);
} }
public bool HasFlag(string flag)
{
return SpeciesVariant.HasFlag(Ptr, flag.ToPtr()) == 1;
}
protected internal override void MarkAsDeleted() protected internal override void MarkAsDeleted()
{ {
base.MarkAsDeleted(); base.MarkAsDeleted();

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using Creaturelib.Generated; using Creaturelib.Generated;
using Pkmnlib.Generated; using Pkmnlib.Generated;
using PkmnLibSharp.Utilities; using PkmnLibSharp.Utilities;
@ -15,12 +16,17 @@ namespace PkmnLibSharp.Library
} }
public Species(ushort id, string name, Forme defaultForme, float genderRatio, string growthRate, public Species(ushort id, string name, Forme defaultForme, float genderRatio, string growthRate,
byte captureRate, byte baseHappiness, string[] eggGroups) byte captureRate, byte baseHappiness, IReadOnlyCollection<string> eggGroups, IReadOnlyCollection<string> tags)
{ {
var ptr = IntPtr.Zero; var ptr = IntPtr.Zero;
var eggGroupsPtr = eggGroups.ArrayPtr(); var tagsConverted = tags.Select(x => x.ToPtr()).ToArray();
var eggGroupsConverted = eggGroups.Select(x => x.ToPtr()).ToArray();
var eggGroupsPtr = eggGroupsConverted.ArrayPtr();
var tagsPtr = tagsConverted.ArrayPtr();
PokemonSpecies.Construct(ref ptr, id, name.ToPtr(), defaultForme.Ptr, genderRatio, PokemonSpecies.Construct(ref ptr, id, name.ToPtr(), defaultForme.Ptr, genderRatio,
growthRate.ToPtr(), captureRate, baseHappiness, eggGroupsPtr, (ulong) eggGroups.Length).Assert(); growthRate.ToPtr(), captureRate, baseHappiness, eggGroupsPtr, (ulong) eggGroups.Count,
tagsPtr, (ulong) tags.Count).Assert();
_formeCache.Add("default", defaultForme); _formeCache.Add("default", defaultForme);
Initialize(ptr); Initialize(ptr);
} }
@ -31,6 +37,21 @@ namespace PkmnLibSharp.Library
public string Name => _name ??= CreatureSpecies.GetName(Ptr).PtrString()!; public string Name => _name ??= CreatureSpecies.GetName(Ptr).PtrString()!;
public string GrowthRate => _growthRate ??= CreatureSpecies.GetGrowthRate(Ptr).PtrString()!; public string GrowthRate => _growthRate ??= CreatureSpecies.GetGrowthRate(Ptr).PtrString()!;
public string[] EggGroups
{
get
{
if (_eggGroups != null) return _eggGroups;
var count = Pkmnlib.Generated.PokemonSpecies.GetEggGroupCount(Ptr);
_eggGroups = new string[count];
for (ulong i = 0; i < count; i++)
{
_eggGroups[i] = PokemonSpecies.GetEggGroup(Ptr, i).PtrString()!;
}
return _eggGroups;
}
}
public ReadOnlyNativePtrArray<Forme> Formes public ReadOnlyNativePtrArray<Forme> Formes
{ {
get get
@ -114,6 +135,11 @@ namespace PkmnLibSharp.Library
Pkmnlib.Generated.PokemonSpecies.AddEvolution(Ptr, evolutionData.Ptr); Pkmnlib.Generated.PokemonSpecies.AddEvolution(Ptr, evolutionData.Ptr);
} }
public bool HasFlag(string flag)
{
return CreatureSpecies.HasFlag(Ptr, flag.ToPtr()) == 1;
}
private string? _name; private string? _name;
private string? _growthRate; private string? _growthRate;
@ -122,6 +148,7 @@ namespace PkmnLibSharp.Library
private ReadOnlyNativePtrArray<EvolutionData>? _evolutions; private ReadOnlyNativePtrArray<EvolutionData>? _evolutions;
private ReadOnlyNativePtrArray<Forme>? _formes; private ReadOnlyNativePtrArray<Forme>? _formes;
private string[]? _eggGroups;
protected internal override void MarkAsDeleted() protected internal override void MarkAsDeleted()
{ {

View File

@ -54,6 +54,19 @@ namespace PkmnLibSharp.Library
return species; return species;
} }
public IEnumerable<Species> GetEnumerator()
{
var count = Creaturelib.Generated.SpeciesLibrary.GetCount(Ptr);
var ptr = IntPtr.Zero;
for (ulong i = 0; i < count; i++)
{
Creaturelib.Generated.SpeciesLibrary.GetAtIndex(Ptr, i, ref ptr).Assert();
if (TryResolvePointer(ptr, out Species? species))
yield return species!;
yield return new Species(ptr);
}
}
internal SpeciesLibrary(IntPtr ptr) : base(ptr) internal SpeciesLibrary(IntPtr ptr) : base(ptr)
{ {
} }

BIN
PkmnLibSharp/Native/libCreatureLib.so (Stored with Git LFS)

Binary file not shown.

BIN
PkmnLibSharp/Native/libpkmnLib.so (Stored with Git LFS)

Binary file not shown.

View File

@ -88,6 +88,16 @@ namespace PkmnLibSharp.Utilities
Cached.TryRemove(_ptr, out _); Cached.TryRemove(_ptr, out _);
} }
public static bool operator ==(PointerWrapper? a, PointerWrapper? b)
{
return a?._ptr == b?._ptr;
}
public static bool operator !=(PointerWrapper? a, PointerWrapper? b)
{
return !(a == b);
}
protected bool Equals(PointerWrapper other) protected bool Equals(PointerWrapper other)
{ {
return _ptr.Equals(other._ptr); return _ptr.Equals(other._ptr);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -28,8 +28,8 @@ namespace PkmnLibSharpTests.Battling
species.Insert("testSpecies", new Species(1, "testSpecies", species.Insert("testSpecies", new Species(1, "testSpecies",
new Forme("default", 10f, 10f, 100, new byte[] {0, 1}, 100, new Forme("default", 10f, 10f, 100, new byte[] {0, 1}, 100,
100, 100, 100, 100, 100, new[] {"testAbility", "testAbility2"}, 100, 100, 100, 100, 100, new[] {"testAbility", "testAbility2"},
new[] {"testHiddenAbility"}, new LearnableMoves(100)), 0.5f, "growthRate", new[] {"testHiddenAbility"}, new LearnableMoves(100), new string[0]), 0.5f, "growthRate",
20, 100, new[]{"testEggGroup"})); 20, 100, new[]{"testEggGroup"}, new string[0]));
var moves = new MoveLibrary(10); var moves = new MoveLibrary(10);
moves.Insert("testMove", new MoveData("testMove", 0, MoveCategory.Physical, 100, moves.Insert("testMove", new MoveData("testMove", 0, MoveCategory.Physical, 100,

View File

@ -9,7 +9,7 @@ namespace PkmnLibSharpTests.Library
public void ConstructDestruct() public void ConstructDestruct()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
forme.Dispose(); forme.Dispose();
} }
@ -17,7 +17,7 @@ namespace PkmnLibSharpTests.Library
public void GetName() public void GetName()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
Assert.AreEqual("foo", forme.Name); Assert.AreEqual("foo", forme.Name);
forme.Dispose(); forme.Dispose();
} }
@ -26,7 +26,7 @@ namespace PkmnLibSharpTests.Library
public void GetHeight() public void GetHeight()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
Assert.AreEqual(1f, forme.Height); Assert.AreEqual(1f, forme.Height);
forme.Dispose(); forme.Dispose();
} }
@ -35,7 +35,7 @@ namespace PkmnLibSharpTests.Library
public void GetWeight() public void GetWeight()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
Assert.AreEqual(2f, forme.Weight); Assert.AreEqual(2f, forme.Weight);
forme.Dispose(); forme.Dispose();
} }
@ -44,7 +44,7 @@ namespace PkmnLibSharpTests.Library
public void GetBaseExperience() public void GetBaseExperience()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
Assert.AreEqual(100, forme.BaseExperience); Assert.AreEqual(100, forme.BaseExperience);
forme.Dispose(); forme.Dispose();
} }
@ -53,12 +53,12 @@ namespace PkmnLibSharpTests.Library
public void GetTypes() public void GetTypes()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
Assert.AreEqual(0, forme.GetPkmnType(0)); Assert.AreEqual(0, forme.GetPkmnType(0));
forme.Dispose(); forme.Dispose();
forme = new Forme("foo", 1, 2, 100, new byte[] {0, 1}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, forme = new Forme("foo", 1, 2, 100, new byte[] {0, 1}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
Assert.AreEqual(0, forme.GetPkmnType(0)); Assert.AreEqual(0, forme.GetPkmnType(0));
Assert.AreEqual(1, forme.GetPkmnType(1)); Assert.AreEqual(1, forme.GetPkmnType(1));
forme.Dispose(); forme.Dispose();
@ -68,7 +68,7 @@ namespace PkmnLibSharpTests.Library
public void GetStats() public void GetStats()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 20, 30, 40, 50, 60, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 20, 30, 40, 50, 60, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
Assert.AreEqual(10, forme.BaseHealth); Assert.AreEqual(10, forme.BaseHealth);
Assert.AreEqual(20, forme.BaseAttack); Assert.AreEqual(20, forme.BaseAttack);
Assert.AreEqual(30, forme.BaseDefense); Assert.AreEqual(30, forme.BaseDefense);
@ -82,7 +82,7 @@ namespace PkmnLibSharpTests.Library
public void GetAbilities() public void GetAbilities()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
Assert.AreEqual("foo", forme.Abilities[0]); Assert.AreEqual("foo", forme.Abilities[0]);
forme.Dispose(); forme.Dispose();
} }
@ -91,7 +91,7 @@ namespace PkmnLibSharpTests.Library
public void GetHiddenAbilities() public void GetHiddenAbilities()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
Assert.AreEqual("bar", forme.HiddenAbilities[0]); Assert.AreEqual("bar", forme.HiddenAbilities[0]);
forme.Dispose(); forme.Dispose();
} }

View File

@ -17,8 +17,8 @@ namespace PkmnLibSharpTests.Library
public void Insert() public void Insert()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(0, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(0, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
var library = new SpeciesLibrary(100); var library = new SpeciesLibrary(100);
library.Insert("foobar", species); library.Insert("foobar", species);
Assert.AreEqual(1, library.Count); Assert.AreEqual(1, library.Count);
@ -29,8 +29,8 @@ namespace PkmnLibSharpTests.Library
public void Delete() public void Delete()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(0, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(0, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
var library = new SpeciesLibrary(100); var library = new SpeciesLibrary(100);
library.Insert("foobar", species); library.Insert("foobar", species);
Assert.AreEqual(1, library.Count); Assert.AreEqual(1, library.Count);
@ -43,8 +43,8 @@ namespace PkmnLibSharpTests.Library
public void Get() public void Get()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(0, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(0, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
var library = new SpeciesLibrary(100); var library = new SpeciesLibrary(100);
library.Insert("foobar", species); library.Insert("foobar", species);
Assert.AreEqual(1, library.Count); Assert.AreEqual(1, library.Count);
@ -61,8 +61,8 @@ namespace PkmnLibSharpTests.Library
public void TryGet() public void TryGet()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(0, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(0, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
var library = new SpeciesLibrary(100); var library = new SpeciesLibrary(100);
library.Insert("foobar", species); library.Insert("foobar", species);
Assert.AreEqual(1, library.Count); Assert.AreEqual(1, library.Count);

View File

@ -10,8 +10,8 @@ namespace PkmnLibSharpTests.Library
public void ConstructDestruct() public void ConstructDestruct()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(0, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(0, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
species.Dispose(); species.Dispose();
} }
@ -19,8 +19,8 @@ namespace PkmnLibSharpTests.Library
public void GetId() public void GetId()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
Assert.AreEqual(10, species.Id); Assert.AreEqual(10, species.Id);
species.Dispose(); species.Dispose();
} }
@ -28,8 +28,8 @@ namespace PkmnLibSharpTests.Library
public void GetGenderRate() public void GetGenderRate()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
Assert.AreEqual(0.5f, species.GenderRate); Assert.AreEqual(0.5f, species.GenderRate);
species.Dispose(); species.Dispose();
} }
@ -37,8 +37,8 @@ namespace PkmnLibSharpTests.Library
public void GetCaptureRate() public void GetCaptureRate()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
Assert.AreEqual(100, species.CaptureRate); Assert.AreEqual(100, species.CaptureRate);
species.Dispose(); species.Dispose();
} }
@ -46,8 +46,8 @@ namespace PkmnLibSharpTests.Library
public void GetName() public void GetName()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
Assert.AreEqual("testSpecies", species.Name); Assert.AreEqual("testSpecies", species.Name);
species.Dispose(); species.Dispose();
} }
@ -55,8 +55,8 @@ namespace PkmnLibSharpTests.Library
public void GetGrowthRate() public void GetGrowthRate()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
Assert.AreEqual("exponential", species.GrowthRate); Assert.AreEqual("exponential", species.GrowthRate);
species.Dispose(); species.Dispose();
} }
@ -64,8 +64,8 @@ namespace PkmnLibSharpTests.Library
public void HasForme() public void HasForme()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
Assert.True(species.HasForme("default")); Assert.True(species.HasForme("default"));
species.Dispose(); species.Dispose();
} }
@ -73,11 +73,11 @@ namespace PkmnLibSharpTests.Library
public void SetForme() public void SetForme()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
Assert.True(species.HasForme("default")); Assert.True(species.HasForme("default"));
forme = new Forme("bar", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, forme = new Forme("bar", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
species.SetForme("bar", forme); species.SetForme("bar", forme);
Assert.True(species.HasForme("bar")); Assert.True(species.HasForme("bar"));
species.Dispose(); species.Dispose();
@ -86,8 +86,8 @@ namespace PkmnLibSharpTests.Library
public void GetForme() public void GetForme()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
var f = species.GetForme("default"); var f = species.GetForme("default");
Assert.AreEqual(forme, f); Assert.AreEqual(forme, f);
Assert.Throws<NativeException>(() => Assert.Throws<NativeException>(() =>
@ -100,8 +100,8 @@ namespace PkmnLibSharpTests.Library
public void TrGetForme() public void TrGetForme()
{ {
var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"}, var forme = new Forme("foo", 1, 2, 100, new byte[] {0}, 10, 10, 10, 10, 10, 10, new[] {"foo"},
new[] {"bar"}, new LearnableMoves(100)); new[] {"bar"}, new LearnableMoves(100), new string[0]);
var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}); var species = new Species(10, "testSpecies", forme, 0.5f, "exponential", 100, 80, new[]{"testEggGroup"}, new string[0]);
Assert.True(species.TryGetForme("default", out var f)); Assert.True(species.TryGetForme("default", out var f));
Assert.AreEqual(forme, f); Assert.AreEqual(forme, f);
Assert.False(species.TryGetForme("non-existing", out f)); Assert.False(species.TryGetForme("non-existing", out f));