using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Harmony; using RobocraftX; using Svelto.ECS; using GamecraftModdingAPI.Utility; namespace GamecraftModdingAPI.Events { /// /// Patch of RobocraftX.FullGameCompositionRoot.ActivateGame() /// [HarmonyPatch(typeof(FullGameCompositionRoot), "ActivateGame")] class GameActivatedPatch { public static void Postfix(ref EnginesRoot ____mainGameEnginesRoot) { // register custom game engines GameEngineManager.RegisterEngines(____mainGameEnginesRoot); // register custom command engines GamecraftModdingAPI.Commands.CommandManager.RegisterEngines(____mainGameEnginesRoot); // A new EnginesRoot is always created when ActivateGame is called // so all event emitters and handlers must be re-registered. EventManager.RegisterEngines(____mainGameEnginesRoot); Logging.Log("Dispatching Game Activated event"); EventManager.GetEventEmitter("GamecraftModdingAPIGameActivatedEventEmitter").Emit(); } } }