using System.Reflection; using HarmonyLib; using RobocraftX; using RobocraftX.CR.MainGame; using RobocraftX.FrontEnd; using RobocraftX.StateSync; using Svelto.ECS; using TechbloxModdingAPI.Utility; namespace TechbloxModdingAPI.Engines { [HarmonyPatch] class GameLoadedEnginePatch { public static void Postfix(StateSyncRegistrationHelper stateSyncReg) { // register all game engines, including deterministic GameEngineManager.RegisterEngines(stateSyncReg); } public static MethodBase TargetMethod() { return AccessTools.Method(typeof(MainGameCompositionRoot), "DeterministicCompose").MakeGenericMethod(typeof(object)); } } [HarmonyPatch] class MenuLoadedEnginePatch { public static void Postfix(EnginesRoot enginesRoot) { // register menu engines MenuEngineManager.RegisterEngines(enginesRoot); } public static MethodBase TargetMethod() { return AccessTools.Method(typeof(FrontEndCompositionRoot), "Compose").MakeGenericMethod(typeof(object)); } } [HarmonyPatch] class FullGameCreatedEnginePatch { public static void Postfix(FullGameCompositionRoot __instance) { FullGameFields.Init(__instance); } public static MethodBase TargetMethod() { return AccessTools.DeclaredConstructor(typeof(FullGameCompositionRoot)); } } }