|
- using System;
- using System.Reflection;
-
- using HarmonyLib;
- using Svelto.Context;
- using Svelto.ECS;
- using RobocraftX.CR.MainGame;
- using RobocraftX.Multiplayer;
- using RobocraftX.StateSync;
-
- namespace GamecraftModdingAPI.Commands
- {
- /// <summary>
- /// Patch of RobocraftX.CR.MainGame.MainGameCompositionRoot.DeterministicCompose<T>()
- /// Initializes existing and custom commands
- /// </summary>
- [HarmonyPatch]
- static class CommandPatch
- {
- public static void Postfix(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.ChangeTeamCommandEngine")));
- enginesRoot.AddEngine((IEngine) Activator.CreateInstance(
- AccessTools.TypeByName("RobocraftX.GUI.CommandLine.DamageCharacterCommandEngine"), entityFactory));
- enginesRoot.AddEngine((IEngine) Activator.CreateInstance(
- AccessTools.TypeByName("RobocraftX.GUI.CommandLine.DisableCharacterDamageCommandEngine")));
-
- CommandManager.RegisterEngines(enginesRoot);
- }
-
- public static MethodInfo TargetMethod()
- {
- return AccessTools.Method(typeof(MainGameCompositionRoot), "DeterministicCompose")
- .MakeGenericMethod(typeof(UnityContext<MainGameCompositionRoot>));
- }
- }
- }
|