|
- 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.Commands;
- using TechbloxModdingAPI.Utility;
-
- namespace TechbloxModdingAPI.Engines
- {
- [HarmonyPatch]
- static class GameLoadedTimeStoppedEnginePatch
- {
- 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;
- // register command engines
- /*CommandLineCompositionRoot.Compose(contextHolder, stateSyncReg.enginesRoot, reloadGame, multiplayerParameters,
- stateSyncReg); - uREPL C# compilation not supported anymore */
- CommandManager.RegisterEngines(stateSyncReg.enginesRoot);
- }
-
- public static MethodBase TargetMethod()
- {
- return AccessTools.Method(typeof(MainGameCompositionRoot), "DeterministicTimeStoppedCompose").MakeGenericMethod(typeof(object));
- }
- }
-
- [HarmonyPatch]
- static class GameLoadedTimeRunningEnginePatch
- {
- public static EntitiesSubmissionScheduler Scheduler { get; private set; }
- public static void Postfix(StateSyncRegistrationHelper stateSyncReg)
- {
- GameLoadedTimeStoppedEnginePatch.Postfix(stateSyncReg);
- }
-
- public static MethodBase TargetMethod()
- {
- return AccessTools.Method(typeof(MainGameCompositionRoot), "DeterministicTimeRunningCompose").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));
- }
- }
- }
|