|
- using Game.DataLoader;
- using HarmonyLib;
- using Svelto.DataStructures;
- using Svelto.ECS;
-
- namespace CLre_server.API.Engines
- {
- public abstract class ServerEnginePreBuild : ICLreEngine
- {
- public ServerEnginePreBuild()
- {
- MainGameServer_BuildDeprecatedEngines_Patch.beforeBuildEngines.Add(this);
- }
-
- public abstract void Ready();
- public abstract IEntitiesDB entitiesDB { get; set; }
- public abstract IEntityFactory entityFactory { get; set; }
- public IDataDB dataDB { get; set; }
- }
-
- public abstract class ServerEnginePostBuild : ICLreEngine
- {
- public ServerEnginePostBuild()
- {
- MainGameServer_BuildDeprecatedEngines_Patch.afterBuildEngines.Add(this);
- }
-
- public abstract void Ready();
- public abstract IEntitiesDB entitiesDB { get; set; }
- public abstract IEntityFactory entityFactory { get; set; }
- public IDataDB dataDB { get; set; }
- }
-
- [HarmonyPatch(typeof(GameServer.GameFramework.MainGameServer), "BuildDeprecatedEngines")]
- class MainGameServer_BuildDeprecatedEngines_Patch
- {
- internal static FasterList<ICLreEngine> beforeBuildEngines = new FasterList<ICLreEngine>();
-
- internal static FasterList<ICLreEngine> afterBuildEngines = new FasterList<ICLreEngine>();
-
- [HarmonyPrefix]
- public static void BeforeMethodCall(GameServer.GameFramework.MainGameServer __instance, IEntityFactory ____entityFactory)
- {
- foreach (ICLreEngine e in beforeBuildEngines)
- {
- e.entityFactory = ____entityFactory;
- __instance.AddEngine(e);
- }
- }
-
- [HarmonyPostfix]
- public static void AfterMethodCall(GameServer.GameFramework.MainGameServer __instance, IEntityFactory ____entityFactory)
- {
- foreach (ICLreEngine e in afterBuildEngines)
- {
- e.entityFactory = ____entityFactory;
- __instance.AddEngine(e);
- }
- }
- }
- }
|