|
- using System.Reflection;
- using HarmonyLib;
- using RobocraftX;
- using RobocraftX.CR.MainGame;
- using RobocraftX.FrontEnd;
- using RobocraftX.StateSync;
- using Svelto.ECS;
- using Svelto.ECS.Schedulers;
- using TechbloxModdingAPI.Utility;
-
- namespace TechbloxModdingAPI.Engines
- {
- [HarmonyPatch]
- class GameLoadedEnginePatch
- {
- public static EntitiesSubmissionScheduler Scheduler { get; private set; }
- public static void Postfix(StateSyncRegistrationHelper stateSyncReg)
- {
- // register all game engines, including deterministic
- GameEngineManager.RegisterEngines(stateSyncReg);
- Scheduler = stateSyncReg.enginesRoot.scheduler;
- }
-
- 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));
- }
- }
- }
|