Updates pkmnlib, adds wrappers for PkmnLib_ai

master
Deukhoofd 2 years ago
parent ced4524737
commit 12850e3771
Signed by: Deukhoofd
GPG Key ID: F63E044490819F6F
  1. 1
      PkmnLibSharp.sln.DotSettings
  2. 9
      PkmnLibSharp/AI/DepthSearchAI.cs
  3. 11
      PkmnLibSharp/AI/NaiveAI.cs
  4. 27
      PkmnLibSharp/AI/PokemonAI.cs
  5. 11
      PkmnLibSharp/AI/RandomAI.cs
  6. 19
      PkmnLibSharp/Battling/ChoiceTurn/BaseTurnChoice.cs
  7. 3
      PkmnLibSharp/Battling/ChoiceTurn/FleeTurnChoice.cs
  8. 5
      PkmnLibSharp/Battling/ChoiceTurn/SwitchTurnChoice.cs
  9. 8
      PkmnLibSharp/Generated/Creaturelib/BattleSide.cs
  10. 2
      PkmnLibSharp/Generated/Creaturelib/EventDataKind.cs
  11. 18
      PkmnLibSharp/Generated/PkmnLibAI/C.cs
  12. 14
      PkmnLibSharp/Generated/PkmnLibAI/DepthSearchAI.cs
  13. 14
      PkmnLibSharp/Generated/PkmnLibAI/NaiveAI.cs
  14. 23
      PkmnLibSharp/Generated/PkmnLibAI/PokemonAI.cs
  15. 14
      PkmnLibSharp/Generated/PkmnLibAI/RandomAI.cs
  16. 2
      PkmnLibSharp/Generated/Pkmnlib/EventDataKind.cs
  17. BIN
      PkmnLibSharp/Native/Linux/libArbutils.so
  18. BIN
      PkmnLibSharp/Native/Linux/libCreatureLib.so
  19. BIN
      PkmnLibSharp/Native/Linux/libpkmnLib.so
  20. BIN
      PkmnLibSharp/Native/Linux/libpkmnlib_ai.so
  21. BIN
      PkmnLibSharp/Native/Windows/libArbutils.dll
  22. BIN
      PkmnLibSharp/Native/Windows/libCreatureLib.dll
  23. BIN
      PkmnLibSharp/Native/Windows/libpkmnLib.dll
  24. 2
      PkmnLibSharp/arbutils.json
  25. 2
      PkmnLibSharp/creaturelib.json
  26. 16
      PkmnLibSharp/generator.py
  27. 2
      PkmnLibSharp/pkmnlib.json
  28. 1
      PkmnLibSharp/pkmnlibai.json

@ -1,2 +1,3 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AI/@EntryIndexedValue">AI</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Pkmn/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

@ -0,0 +1,9 @@
namespace PkmnLibSharp.AI
{
public class DepthSearchAI : PokemonAI
{
public DepthSearchAI() : base(PkmnLibAI.Generated.DepthSearchAI.Create())
{
}
}
}

@ -0,0 +1,11 @@
using System;
namespace PkmnLibSharp.AI
{
public class NaiveAI : PokemonAI
{
public NaiveAI() : base(PkmnLibAI.Generated.NaiveAI.Create())
{
}
}
}

@ -0,0 +1,27 @@
using System;
using PkmnLibSharp.Battling;
using PkmnLibSharp.Utilities;
using BaseTurnChoice = PkmnLibSharp.Battling.ChoiceTurn.BaseTurnChoice;
namespace PkmnLibSharp.AI
{
public abstract class PokemonAI : PointerWrapper
{
protected PokemonAI(IntPtr ptr) : base(ptr)
{
}
public BaseTurnChoice GetChoice(Battle battle, Pokemon user)
{
var ptr = IntPtr.Zero;
PkmnLibAI.Generated.PokemonAI.GetChoice(ref ptr, Ptr, battle.Ptr, user.Ptr).Assert();
return BaseTurnChoice.GetFromPointer(ptr);
}
protected override void DeletePtr()
{
PkmnLibAI.Generated.PokemonAI.Delete(Ptr);
}
}
}

@ -0,0 +1,11 @@
using System;
namespace PkmnLibSharp.AI
{
public class RandomAI : PokemonAI
{
public RandomAI() : base(PkmnLibAI.Generated.RandomAI.Create())
{
}
}
}

@ -6,8 +6,25 @@ namespace PkmnLibSharp.Battling.ChoiceTurn
public abstract class BaseTurnChoice : PointerWrapper
{
protected BaseTurnChoice(IntPtr ptr) : base(ptr){}
public static BaseTurnChoice GetFromPointer(IntPtr ptr)
{
var kind = (TurnChoiceKind) Creaturelib.Generated.BaseTurnChoice.GetKind(ptr);
switch (kind)
{
case TurnChoiceKind.Attack:
return new MoveTurnChoice(ptr);
case TurnChoiceKind.Switch:
return new SwitchTurnChoice(ptr);
case TurnChoiceKind.Flee:
return new FleeTurnChoice(ptr);
default:
throw new ArgumentOutOfRangeException();
}
}
public TurnChoiceKind Kind => (TurnChoiceKind) Creaturelib.Generated.BaseTurnChoice.GetKind(Ptr);
public Pokemon User
{

@ -1,3 +1,5 @@
using System;
namespace PkmnLibSharp.Battling.ChoiceTurn
{
public class FleeTurnChoice : BaseTurnChoice
@ -5,6 +7,7 @@ namespace PkmnLibSharp.Battling.ChoiceTurn
public FleeTurnChoice(Pokemon user) : base(Creaturelib.Generated.FleeTurnChoice.Construct(user.Ptr))
{
}
internal FleeTurnChoice(IntPtr ptr) : base(ptr){}
protected override void DeletePtr()
{

@ -1,3 +1,5 @@
using System;
namespace PkmnLibSharp.Battling.ChoiceTurn
{
public class SwitchTurnChoice : BaseTurnChoice
@ -6,6 +8,9 @@ namespace PkmnLibSharp.Battling.ChoiceTurn
Creaturelib.Generated.SwitchTurnChoice.Construct(user.Ptr, newPokemon.Ptr))
{
}
internal SwitchTurnChoice(IntPtr ptr) : base(ptr){}
protected override void DeletePtr()
{

@ -87,5 +87,13 @@ namespace Creaturelib.Generated
[DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_MarkAsFled")]
internal static extern void MarkAsFled(IntPtr p);
/// <param name="out">unsigned char &</param>
/// <param name="p">BattleSide *</param>
/// <param name="a">unsigned char</param>
/// <param name="b">unsigned char</param>
/// <returns>unsigned char</returns>
[DllImport("libCreatureLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "CreatureLib_BattleSide_SwapPositions")]
internal static extern byte SwapPositions(ref byte @out, IntPtr p, byte a, byte b);
}
}

@ -19,5 +19,7 @@ namespace Creaturelib
ChangeVariant = 10,
AttackUse = 11,
ChangeStatBoost = 12,
Fail = 13,
Swap = 14,
}
}

@ -0,0 +1,18 @@
// AUTOMATICALLY GENERATED, DO NOT EDIT
using System;
using System.Runtime.InteropServices;
namespace PkmnLibAI.Generated
{
internal static class C
{
/// <returns>const char *</returns>
[DllImport("libpkmnlib_ai", CallingConvention = CallingConvention.Cdecl, EntryPoint= "pkmnlibai_C_GetLastException")]
internal static extern IntPtr GetLastException();
/// <returns>const char *</returns>
[DllImport("libpkmnlib_ai", CallingConvention = CallingConvention.Cdecl, EntryPoint= "pkmnlibai_C_GetLastExceptionStacktrace")]
internal static extern IntPtr GetLastExceptionStacktrace();
}
}

@ -0,0 +1,14 @@
// AUTOMATICALLY GENERATED, DO NOT EDIT
using System;
using System.Runtime.InteropServices;
namespace PkmnLibAI.Generated
{
internal static class DepthSearchAI
{
/// <returns>DepthSearchAI *</returns>
[DllImport("libpkmnlib_ai", CallingConvention = CallingConvention.Cdecl, EntryPoint= "pkmnlibai_DepthSearchAI_Create")]
internal static extern IntPtr Create();
}
}

@ -0,0 +1,14 @@
// AUTOMATICALLY GENERATED, DO NOT EDIT
using System;
using System.Runtime.InteropServices;
namespace PkmnLibAI.Generated
{
internal static class NaiveAI
{
/// <returns>NaiveAI *</returns>
[DllImport("libpkmnlib_ai", CallingConvention = CallingConvention.Cdecl, EntryPoint= "pkmnlibai_NaiveAI_Create")]
internal static extern IntPtr Create();
}
}

@ -0,0 +1,23 @@
// AUTOMATICALLY GENERATED, DO NOT EDIT
using System;
using System.Runtime.InteropServices;
namespace PkmnLibAI.Generated
{
internal static class PokemonAI
{
/// <param name="p">PokemonAI *</param>
/// <returns>void</returns>
[DllImport("libpkmnlib_ai", CallingConvention = CallingConvention.Cdecl, EntryPoint= "pkmnlibai_PokemonAI_Delete")]
internal static extern void Delete(IntPtr p);
/// <param name="out">BaseTurnChoice * &</param>
/// <param name="p">PokemonAI *</param>
/// <param name="battle">Battle *</param>
/// <param name="user">Pokemon *</param>
/// <returns>unsigned char</returns>
[DllImport("libpkmnlib_ai", CallingConvention = CallingConvention.Cdecl, EntryPoint= "pkmnlibai_PokemonAI_GetChoice")]
internal static extern byte GetChoice(ref IntPtr @out, IntPtr p, IntPtr battle, IntPtr user);
}
}

@ -0,0 +1,14 @@
// AUTOMATICALLY GENERATED, DO NOT EDIT
using System;
using System.Runtime.InteropServices;
namespace PkmnLibAI.Generated
{
internal static class RandomAI
{
/// <returns>RandomAI *</returns>
[DllImport("libpkmnlib_ai", CallingConvention = CallingConvention.Cdecl, EntryPoint= "pkmnlibai_RandomAI_Create")]
internal static extern IntPtr Create();
}
}

@ -19,5 +19,7 @@ namespace Pkmnlib
ChangeVariant = 10,
AttackUse = 11,
ChangeStatBoost = 12,
Fail = 13,
Swap = 14,
}
}

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -8,15 +8,22 @@ def resolve_enum_size(size):
return "int"
raise Exception("Unknown size {}".format(size))
def clean_namespace(namespace):
if (namespace == "Pkmnlib_ai"):
return "PkmnLibAI"
return namespace
def write_enum(enum, enumNames):
namespace = str.capitalize(enum["filename"][3:])
if (namespace == "Pkmnlib_ai"):
return
if (enum["name"].startswith("bfd_")):
return
if (enum["name"].startswith("float_")):
return
if (enum["name"].startswith("as")):
return
filename = "Generated/{}/{}.cs".format(namespace, enum["name"])
filename = "Generated/{}/{}.cs".format(clean_namespace(namespace), enum["name"])
os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, "w") as f:
f.write("// AUTOMATICALLY GENERATED, DO NOT EDIT\n")
@ -94,18 +101,20 @@ def parse_type(type, enumSet):
def clean_name(name):
if (name == "out"):
return "@out"
if (name == "event"):
return "@event"
if (name == ""):
return "_"
return name
def write_class(c, enumSet):
filename = "Generated/{}/{}.cs".format(c.file[3:].capitalize(), c.name)
filename = "Generated/{}/{}.cs".format(clean_namespace(c.file[3:].capitalize()), c.name)
os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, "w") as f:
f.write("// AUTOMATICALLY GENERATED, DO NOT EDIT\n")
f.write("using System;\n")
f.write("using System.Runtime.InteropServices;\n\n")
f.write("namespace {}.Generated\n{{\n".format(c.namespace))
f.write("namespace {}.Generated\n{{\n".format(clean_namespace(c.namespace)))
f.write(" internal static class {}\n {{\n".format(c.name))
for function in c.functions:
for parameter in function.parameters:
@ -146,5 +155,6 @@ def main():
handle_file("arbutils.json")
handle_file("creaturelib.json")
handle_file("pkmnlib.json")
handle_file("pkmnlibai.json")
main()

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save