mirror of
https://github.com/soarqin/DSP_Mods.git
synced 2026-03-22 15:53:28 +08:00
84 lines
2.2 KiB
C#
84 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using BepInEx;
|
|
using BepInEx.Logging;
|
|
using HarmonyLib;
|
|
using Newtonsoft.Json.Linq;
|
|
using NLua;
|
|
|
|
namespace LuaScriptEngine;
|
|
|
|
[BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)]
|
|
public class LuaScriptEngine : BaseUnityPlugin
|
|
{
|
|
public new static readonly ManualLogSource Logger =
|
|
BepInEx.Logging.Logger.CreateLogSource(PluginInfo.PLUGIN_NAME);
|
|
|
|
private Harmony _harmony;
|
|
|
|
private static readonly LuaState State = new();
|
|
|
|
private void Awake()
|
|
{
|
|
_harmony = Harmony.CreateAndPatchAll(typeof(Patches));
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
_harmony?.UnpatchSelf();
|
|
State.Dispose();
|
|
}
|
|
|
|
private static class Patches
|
|
{
|
|
[HarmonyPostfix]
|
|
[HarmonyPatch(typeof(VFPreload), nameof(VFPreload.InvokeOnLoadWorkEnded))]
|
|
private static void VFPreload_InvokeOnLoadWorkEnded_Postfix()
|
|
{
|
|
State.PostDataLoaded();
|
|
}
|
|
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(typeof(GameMain), nameof(GameMain.FixedUpdate))]
|
|
private static void GameMain_FixedUpdate_Prefix()
|
|
{
|
|
State.PreUpdate();
|
|
}
|
|
|
|
[HarmonyPostfix]
|
|
[HarmonyPatch(typeof(GameMain), nameof(GameMain.FixedUpdate))]
|
|
private static void GameMain_FixedUpdate_Postfix()
|
|
{
|
|
State.PostUpdate();
|
|
}
|
|
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(typeof(GameMain), nameof(GameMain.Begin))]
|
|
private static void GameMain_Begin_Prefix()
|
|
{
|
|
State.PreGameBegin();
|
|
}
|
|
|
|
[HarmonyPostfix]
|
|
[HarmonyPatch(typeof(GameMain), nameof(GameMain.Begin))]
|
|
private static void GameMain_Begin_Postfix()
|
|
{
|
|
State.PostGameBegin();
|
|
}
|
|
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(typeof(GameMain), nameof(GameMain.End))]
|
|
private static void GameMain_End_Prefix()
|
|
{
|
|
State.PreGameEnd();
|
|
}
|
|
|
|
[HarmonyPostfix]
|
|
[HarmonyPatch(typeof(GameMain), nameof(GameMain.End))]
|
|
private static void GameMain_End_Postfix()
|
|
{
|
|
State.PostGameEnd();
|
|
}
|
|
}
|
|
} |