diff --git a/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs b/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs index 126fd7d..218e310 100644 --- a/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs +++ b/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs @@ -29,8 +29,15 @@ using GamecraftModdingAPI.Blocks; using GamecraftModdingAPI.Input; using GamecraftModdingAPI.Interface.IMGUI; using GamecraftModdingAPI.Players; +using GamecraftModdingAPI.Tasks; using RobocraftX.Common.Input; +using RobocraftX.CR.MainGame; +using RobocraftX.GUI.CommandLine; +using RobocraftX.Multiplayer; +using RobocraftX.StateSync; +using Svelto.Context; using Svelto.DataStructures; +using Svelto.Services; using UnityEngine.AddressableAssets; using UnityEngine.AddressableAssets.ResourceLocators; using UnityEngine.ResourceManagement.AsyncOperations; @@ -493,6 +500,114 @@ namespace GamecraftModdingAPI.Tests } } + [HarmonyPatch] + public static class MainGamePatch + { + public static void Postfix(Transform mainGameTransform) + { + //CommandLineCompositionRoot.Init(mainGameTransform).RunOn(Scheduler.extraLeanRunner); - uREPL C# compilation not supported anymore + } + + public static MethodInfo TargetMethod() + { + return AccessTools.Method(typeof(MainGameCompositionRoot), "Init"); + } + } + + [HarmonyPatch] + public static class MainGamePatch2 + { + public static void Postfix(UnityContext contextHolder, + Action reloadGame, MultiplayerInitParameters multiplayerParameters, + StateSyncRegistrationHelper stateSyncReg) + { + /*CommandLineCompositionRoot.Compose(contextHolder, stateSyncReg.enginesRoot, reloadGame, multiplayerParameters, + stateSyncReg); - uREPL C# compilation not supported anymore */ + var enginesRoot = stateSyncReg.enginesRoot; + var entityFunctions = enginesRoot.GenerateEntityFunctions(); + var entityFactory = enginesRoot.GenerateEntityFactory(); + var entitySerializer = enginesRoot.GenerateEntitySerializer(); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteSetGravityCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteSetPhysicsPrecisionCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteSetPhysicsFrequencyCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName( + "RobocraftX.GUI.CommandLine.ExecuteClearAllPartsCommandEngine"), + entityFunctions)); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteHelpCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName( + "RobocraftX.GUI.CommandLine.ExecuteSetLinearRestingThresholdCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName( + "RobocraftX.GUI.CommandLine.ExecuteSetAngularRestingThresholdCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteEnableVisualProfilerCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteSetNetworkJitterFramesEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteSetSendConnectedEntitiesCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteSetMaxSimFramesEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.SetDebugDisplayExtraInfoCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.SetNetSyncBandwidthLimitCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ThrowExceptionCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.SetPriorityCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.TeleportCharacterCommandEngine"), + entityFactory)); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ChangeTextBlockTextCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.SetCharacterRunSpeedCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.SetCameraZoomDistanceCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.EditLightingSettingsCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.EditSkySettingsCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.EditFogSettingsCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.TeleportCharacterImplementationEngine"), + entityFunctions)); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteConnectToServerCommandEngine"), + entityFunctions, entitySerializer, reloadGame, multiplayerParameters)); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.SetInputBroadcastCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteSetJointInertiaTensorCommandEngine"))); + enginesRoot.AddEngine( + (IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.CommandLineInputEngine"))); + stateSyncReg.AddDeterministicEngine( + (IDeterministicEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ExecuteCommandEngine"))); + enginesRoot.AddEngine( + (IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.ChangeTeamCommandEngine"))); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.DamageCharacterCommandEngine"), entityFactory)); + enginesRoot.AddEngine((IEngine) Activator.CreateInstance( + AccessTools.TypeByName("RobocraftX.GUI.CommandLine.DisableCharacterDamageCommandEngine"))); + } + + public static MethodInfo TargetMethod() + { + return AccessTools.Method(typeof(MainGameCompositionRoot), "DeterministicCompose") + .MakeGenericMethod(typeof(UnityContext)); + } + } + [CustomBlock("customCatalog.json", "Assets/Prefabs/Cube.prefab", "strAluminiumCube", SortIndex = 12)] public class TestBlock : CustomBlock {