/// <summary> /// Applied to GeneratedBuildings to register PLib buildings. /// </summary> private static void LoadGeneratedBuildings_Prefix() { PBuilding.AddAllStrings(); }
/// <summary> /// Applies all patches. /// </summary> /// <param name="instance">The Harmony instance to use when patching.</param> private static void PatchAll(HarmonyInstance instance) { if (instance == null) { throw new ArgumentNullException("instance"); } // ColonyAchievementStatus if (ACHIEVEMENT_SERIALIZE != null) { #if DEBUG PUtil.LogDebug("Applying ColonyAchievementRequirement.Serialize patch"); #endif // TODO Vanilla/DLC code instance.Patch(typeof(ColonyAchievementStatus), nameof(ColonyAchievementStatus. Serialize), PatchMethod(nameof(Serialize_Prefix)), null); } // Db instance.Patch(typeof(Db), nameof(Db.Initialize), PatchMethod(nameof( Initialize_Prefix)), PatchMethod(nameof(Initialize_Postfix))); // Game instance.Patch(typeof(Game), "DestroyInstances", null, PatchMethod(nameof( Game_DestroyInstances_Postfix))); instance.Patch(typeof(Game), "OnPrefabInit", null, PatchMethod(nameof( Game_OnPrefabInit_Postfix))); // GameInputMapping instance.Patch(typeof(GameInputMapping), nameof(GameInputMapping. SetDefaultKeyBindings), null, PatchMethod(nameof( SetDefaultKeyBindings_Postfix))); // GameUtil instance.Patch(typeof(GameUtil), nameof(GameUtil.GetKeycodeLocalized), PatchMethod(nameof(GetKeycodeLocalized_Prefix)), null); // KInputController instance.PatchConstructor(typeof(KInputController.KeyDef), new Type[] { typeof(KKeyCode), typeof(Modifier) }, null, PatchMethod(nameof(CKeyDef_Postfix))); instance.Patch(typeof(KInputController), nameof(KInputController.IsActive), PatchMethod(nameof(IsActive_Prefix)), null); instance.Patch(typeof(KInputController), nameof(KInputController.QueueButtonEvent), PatchMethod(nameof(QueueButtonEvent_Prefix)), null); if (PLightManager.InitInstance()) { // DiscreteShadowCaster instance.Patch(typeof(DiscreteShadowCaster), nameof(DiscreteShadowCaster. GetVisibleCells), PatchMethod(nameof(GetVisibleCells_Prefix)), null); // Light2D instance.Patch(typeof(Light2D), "AddToScenePartitioner", PatchMethod(nameof(AddToScenePartitioner_Prefix)), null); instance.Patch(typeof(Light2D), nameof(Light2D.RefreshShapeAndPosition), null, PatchMethod(nameof(RefreshShapeAndPosition_Postfix))); // LightGridEmitter instance.Patch(typeof(LightGridEmitter), nameof(LightGridEmitter.AddToGrid), null, PatchMethod(nameof(AddToGrid_Postfix))); instance.Patch(typeof(LightGridEmitter), "ComputeLux", PatchMethod(nameof(ComputeLux_Prefix)), null); instance.Patch(typeof(LightGridEmitter), nameof(LightGridEmitter. RemoveFromGrid), null, PatchMethod(nameof(RemoveFromGrid_Postfix))); instance.Patch(typeof(LightGridEmitter), nameof(LightGridEmitter. UpdateLitCells), PatchMethod(nameof(UpdateLitCells_Prefix)), null); // LightGridManager instance.Patch(typeof(LightGridManager), nameof(LightGridManager. CreatePreview), PatchMethod(nameof(CreatePreview_Prefix)), null); // LightShapePreview instance.Patch(typeof(LightShapePreview), "Update", PatchMethod(nameof(LightShapePreview_Update_Prefix)), null); // Rotatable instance.Patch(typeof(Rotatable), "OrientVisualizer", null, PatchMethod(nameof(OrientVisualizer_Postfix))); } // MainMenu instance.Patch(typeof(MainMenu), "OnSpawn", null, PatchMethod( nameof(MainMenu_OnSpawn_Postfix))); // PBuilding instance.Patch(typeof(BuildingTemplates), nameof(BuildingTemplates. CreateBuildingDef), null, PatchMethod(nameof(CreateBuildingDef_Postfix))); instance.Patch(typeof(EquipmentTemplates), nameof(EquipmentTemplates. CreateEquipmentDef), null, PatchMethod(nameof(CreateEquipmentDef_Postfix))); if (PBuilding.CheckBuildings()) { instance.Patch(typeof(GeneratedBuildings), nameof(GeneratedBuildings. LoadGeneratedBuildings), PatchMethod(nameof( LoadGeneratedBuildings_Prefix)), null); } // PCodex instance.Patch(typeof(CodexCache), nameof(CodexCache.CollectEntries), null, PatchMethod(nameof(CollectEntries_Postfix))); instance.Patch(typeof(CodexCache), nameof(CodexCache.CollectSubEntries), null, PatchMethod(nameof(CollectSubEntries_Postfix))); // PLocalization var locale = Localization.GetLocale(); if (locale != null) { PLocalization.LocalizeAll(locale); PLocalizationItself.LocalizeItself(locale); } // ModsScreen POptions.Init(); instance.Patch(typeof(ModsScreen), "BuildDisplay", null, PatchMethod(nameof( BuildDisplay_Postfix))); // SteamUGCService var ugc = PPatchTools.GetTypeSafe("SteamUGCService", "Assembly-CSharp"); if (ugc != null) { try { instance.PatchTranspile(ugc, "LoadPreviewImage", PatchMethod(nameof( LoadPreviewImage_Transpile))); } catch (Exception e) { PUtil.LogExcWarn(e); } } // TMPro.TMP_InputField var tmpType = PPatchTools.GetTypeSafe("TMPro.TMP_InputField"); if (tmpType != null) { try { instance.Patch(tmpType, "AssignPositioningIfNeeded", PatchMethod(nameof(AssignPositioningIfNeeded_Prefix)), null); instance.Patch(tmpType, "OnEnable", null, PatchMethod( nameof(OnEnable_Postfix))); } catch (Exception) { PUtil.LogWarning("Unable to patch TextMeshPro bug, text fields may " + "display improperly inside scroll areas"); } } // Postload, legacy and normal PPatchManager.ExecuteLegacyPostload(); PPatchManager.RunAll(RunAt.AfterModsLoad); }
/// <summary> /// Applied to Db to register PLib buildings. /// </summary> private static void Initialize_Prefix() { PBuilding.AddAllTechs(); }
public ScrubberCheckpoint() : base() { buildingLayer = (int)PBuilding.GetObjectLayer(nameof(ObjectLayer.Building), ObjectLayer.Building); }