PkmnLibSharp/PkmnLibSharp/Battling/Library/AngelScriptResolver.cs

53 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using PkmnLibSharp.Library.Items;
using PkmnLibSharp.Utilities;
namespace PkmnLibSharp.Battling
{
public class AngelScriptResolver : ScriptResolver
{
public AngelScriptResolver() : base(Pkmnlib.Generated.AngelScriptResolver.Construct())
{
}
internal AngelScriptResolver(IntPtr ptr) : base(ptr)
{
}
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();
}
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();
}
public void FinalizeModule()
{
Pkmnlib.Generated.AngelScriptResolver.FinalizeModule(Ptr).Assert();
}
protected override void DeletePtr()
{
Pkmnlib.Generated.AngelScriptResolver.Destruct(Ptr).Assert();
}
}
}