// executed both at startup and after a def reload private void LoadReloadInitialize() { try { EnumerateModAssemblies(); AttributeDetector.ProcessNewTypes(); // do detours and other attribute work for (newly) loaded mods EnumerateChildMods(); var initializationsThisRun = new List <string>(); for (int i = 0; i < childMods.Count; i++) { var childMod = childMods[i]; childMod.ModIsActive = assemblyContentPacks.ContainsKey(childMod.GetType().Assembly); if (initializedMods.Contains(childMod)) { continue; // no need to reinitialize already loaded mods } initializedMods.Add(childMod); var modId = childMod.ModIdentifier; try { childMod.Initialize(); } catch (Exception e) { Logger.ReportException(e, modId); } initializationsThisRun.Add(modId); } if (initializationsThisRun.Count > 0) { Logger.Message("v{0} initialized {1}", LibraryVersion, initializationsThisRun.ListElements()); } OnDefsLoaded(); } catch (Exception e) { Logger.ReportException(e); } }
private void ProcessAttributes() { AttributeDetector.ProcessNewTypes(); }