2021-04-25 00:06:47 +00:00
|
|
|
|
using System;
|
2019-12-14 04:42:55 +00:00
|
|
|
|
using System.Reflection;
|
2019-12-16 00:35:59 +00:00
|
|
|
|
|
2020-05-03 19:31:09 +00:00
|
|
|
|
using HarmonyLib;
|
2019-12-14 04:42:55 +00:00
|
|
|
|
using Svelto.Context;
|
|
|
|
|
using Svelto.ECS;
|
2021-04-25 00:06:47 +00:00
|
|
|
|
using RobocraftX.CR.MainGame;
|
|
|
|
|
using RobocraftX.Multiplayer;
|
|
|
|
|
using RobocraftX.StateSync;
|
2019-12-14 04:42:55 +00:00
|
|
|
|
|
|
|
|
|
namespace GamecraftModdingAPI.Commands
|
|
|
|
|
{
|
2019-12-15 07:20:20 +00:00
|
|
|
|
/// <summary>
|
2021-04-25 00:06:47 +00:00
|
|
|
|
/// Patch of RobocraftX.CR.MainGame.MainGameCompositionRoot.DeterministicCompose<T>()
|
|
|
|
|
/// Initializes existing and custom commands
|
2019-12-15 07:20:20 +00:00
|
|
|
|
/// </summary>
|
2020-01-26 18:49:51 +00:00
|
|
|
|
[HarmonyPatch]
|
2019-12-19 20:42:50 +00:00
|
|
|
|
static class CommandPatch
|
2019-12-14 04:42:55 +00:00
|
|
|
|
{
|
2021-04-25 00:06:47 +00:00
|
|
|
|
public static void Postfix(Action reloadGame, MultiplayerInitParameters multiplayerParameters,
|
|
|
|
|
StateSyncRegistrationHelper stateSyncReg)
|
2019-12-14 04:42:55 +00:00
|
|
|
|
{
|
2021-04-25 00:06:47 +00:00
|
|
|
|
/*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")));
|
|
|
|
|
|
2019-12-15 07:20:20 +00:00
|
|
|
|
CommandManager.RegisterEngines(enginesRoot);
|
2019-12-14 04:42:55 +00:00
|
|
|
|
}
|
|
|
|
|
|
2021-04-25 00:06:47 +00:00
|
|
|
|
public static MethodInfo TargetMethod()
|
2019-12-14 04:42:55 +00:00
|
|
|
|
{
|
2021-04-25 00:06:47 +00:00
|
|
|
|
return AccessTools.Method(typeof(MainGameCompositionRoot), "DeterministicCompose")
|
|
|
|
|
.MakeGenericMethod(typeof(UnityContext<MainGameCompositionRoot>));
|
2019-12-14 04:42:55 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2021-04-25 00:06:47 +00:00
|
|
|
|
}
|