public override void AwakeBody() { KlyteUtils.doLog("Loading NonKCModsOverrides"); #region Suburb Styler foreach (var typeName in supportedClasses) { var type = Type.GetType(typeName); try { if (type != null) { KlyteUtils.SetPrivateStaticField("GetMainReference", type, new Func <UIComponent>(() => KlyteModsPanel.instance.mainPanel)); KlyteUtils.SetPrivateStaticField("ClosePanel", type, new OnButtonClicked(() => KlyteCommonsMod.CloseKCPanel())); KlyteUtils.SetPrivateStaticField("OpenPanel", type, new OnButtonClicked(() => KlyteModsPanel.instance.OpenAt((ModTab)Enum.Parse(typeof(ModTab), KlyteUtils.RunPrivateStaticMethod <string>(type, "GetEnumName"))))); MethodInfo createPanelOverride = typeof(NonKCModsOverrides).GetMethod("CreateMainPanelOverride", allFlags); AddRedirect(type.GetMethod("CreateMainPanel", allFlags), createPanelOverride); } } catch (Exception e) { KlyteUtils.doErrorLog($"{e.GetType()} detouring {type}: {e.Message}\n{e.StackTrace}"); } } #endregion }