2021-01-31 11:48:02 +00:00
|
|
|
using System;
|
|
|
|
using System.Runtime.InteropServices;
|
2020-07-18 14:49:11 +00:00
|
|
|
using PkmnLibSharp.Utilities;
|
|
|
|
|
|
|
|
namespace PkmnLibSharp.Battling
|
|
|
|
{
|
|
|
|
public class AngelScriptResolver : ScriptResolver
|
|
|
|
{
|
|
|
|
public AngelScriptResolver() : base(Pkmnlib.Generated.AngelScriptResolver.Construct())
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
public void Initialize(BattleLibrary library)
|
|
|
|
{
|
|
|
|
Pkmnlib.Generated.AngelScriptResolver.Initialize(Ptr, library.Ptr).Assert();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void CreateScript(string name, string script)
|
|
|
|
{
|
|
|
|
Pkmnlib.Generated.AngelScriptResolver.CreateScript(Ptr, name.ToPtr(), script.ToPtr()).Assert();
|
|
|
|
}
|
|
|
|
|
2021-01-31 11:48:02 +00:00
|
|
|
public void LoadByteCodeFromMemory(byte[] data)
|
|
|
|
{
|
|
|
|
var pinnedArray = GCHandle.Alloc(data, GCHandleType.Pinned);
|
|
|
|
var pointer = pinnedArray.AddrOfPinnedObject();
|
|
|
|
Pkmnlib.Generated.AngelScriptResolver.LoadByteCodeFromMemory(Ptr, pointer, (ulong) data.Length).Assert();
|
|
|
|
pinnedArray.Free();
|
|
|
|
}
|
|
|
|
|
|
|
|
public unsafe delegate void* GlobalMethod(void* parameter);
|
|
|
|
public void RegisterGlobalMethod(string methodName, GlobalMethod method)
|
|
|
|
{
|
|
|
|
var methodPtr = Marshal.GetFunctionPointerForDelegate(method);
|
|
|
|
Pkmnlib.Generated.AngelScriptResolver.RegisterGlobalMethod(Ptr, methodName.ToPtr(), methodPtr).Assert();
|
|
|
|
}
|
|
|
|
|
2020-07-18 14:49:11 +00:00
|
|
|
public void FinalizeModule()
|
|
|
|
{
|
|
|
|
Pkmnlib.Generated.AngelScriptResolver.FinalizeModule(Ptr).Assert();
|
|
|
|
}
|
|
|
|
|
|
|
|
protected override void DeletePtr()
|
|
|
|
{
|
|
|
|
Pkmnlib.Generated.AngelScriptResolver.Destruct(Ptr).Assert();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|