internal static void ExtraOnGUI(this Page_ModsConfig instance) { if (RenameInProgress) { if ((Event.current.type == EventType.keyDown || Event.current.type == EventType.keyDown || Event.current.type == EventType.used) && (Event.current.keyCode == KeyCode.Escape || Event.current.keyCode == KeyCode.Return)) { RenameInProgress = false; selectedMod.AltName = renameBuf; } } else { if (Event.current.isMouse && Event.current.button == 1) { if (selectedMod.OriginalMetaData.Source == ContentSource.SteamWorkshop) { CreateModRowActionSteam(GetModEnhanced(selectedMod.OriginalMetaData)).Invoke(); } else { CreateModRowActionLocal(GetModEnhanced(selectedMod.OriginalMetaData)).Invoke(); } } } }
static void Postfix(Page_ModsConfig __instance, Rect rect) { ModMetaData selectedMod = __instance.selectedMod; if (Prefs.DevMode && selectedMod != null && !selectedMod.IsCoreMod && selectedMod.Source == ContentSource.LocalFolder) { Rect buttonRect = new Rect(580f, rect.height - 95f, 200f, 40f); string version = FileUtil.GetModSyncVersionForMod(selectedMod.RootDir); if (!String.IsNullOrEmpty(version)) { // Add the ModSync verion on the top left of the window GameFont origFont = Text.Font; Text.Font = GameFont.Tiny; Widgets.Label(new Rect(350f, 23f, 250f, 40f), "ModSync.ModSyncVersion".Translate().Replace("{version}", version)); Text.Font = origFont; // Draw the "Update on ModSync.ninja" button string label = (isSubmitting) ? "ModSync.PleaseWait".Translate() + "..." : "ModSync.UpdateOnModSync".Translate(); if (Widgets.ButtonText(buttonRect, label, true, false, !isSubmitting)) { HandleUpdateOnModSync(selectedMod, version); } } else // No ModSync.xml for the mod { // Draw the "Upload to ModSync.ninja" button if (Widgets.ButtonText(buttonRect, "ModSync.UploadToModSync".Translate())) { NetworkManager.OpenModSyncUrl(); } } } }
public override void OnClicked(Page_ModsConfig window) { if (!Resolvers.EnumerableNullOrEmpty()) { Utilities.FloatMenu(Resolvers); } }
private static void PostCloseDetour(this Page_ModsConfig self) { if (SettingsHandler.LastRestartOnClose.Value != RestartOnClose) { SettingsHandler.LastRestartOnClose.Value = RestartOnClose; HugsLibController.Instance.Settings.SaveChanges(); } ModsConfig.Save(); int activeModsWhenOpenedHash = (int)typeof(Page_ModsConfig).GetField("activeModsWhenOpenedHash", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(self); if (activeModsWhenOpenedHash != ModLister.InstalledModsListHash(true)) { if (RestartOnClose) { PlatformHandler.RestartRimWorld(); } //Copy of source from here bool assemblyWasLoaded = LoadedModManager.RunningMods.Any((ModContentPack m) => m.LoadedAnyAssembly); LongEventHandler.QueueLongEvent(delegate { PlayDataLoader.ClearAllPlayData(); PlayDataLoader.LoadAllPlayData(false); if (assemblyWasLoaded) { LongEventHandler.ExecuteWhenFinished(delegate { Find.WindowStack.Add(new Dialog_MessageBox("ModWithAssemblyWasUnloaded".Translate(), null, null, null, null, null, false)); }); } }, "LoadingLongEvent", true, null); } }
internal static bool Promotion(Rect mainRect, Page_ModsConfig page) { if (SteamManager.Initialized == false) { return(false); } var mod = page.selectedMod; if (mod == null || ref_steamAuthor(mod.GetWorkshopItemHook()).m_SteamID != CrossPromotion.userID || CrossPromotion.promotionMods.Count == 0) { return(false); } var leftColumn = mainRect.width * 2 / 3; var rightColumn = mainRect.width - leftColumn - 10f; GUI.BeginGroup(mainRect); ContentPart(mainRect, leftColumn, mod, page); PromotionPart(mainRect, leftColumn, rightColumn, mod, page); GUI.EndGroup(); return(true); }
public override void OnClicked(Page_ModsConfig window) { ModMetaData modWithIdentifier = ModLister.GetModWithIdentifier(packageId, ignorePostfix: true); if (modWithIdentifier != null && modWithIdentifier.Active) { window.SelectMod(modWithIdentifier); } }
// Postfix add a button to the mods page public static void PostfixPageModsConfig(Rect rect, Page_ModsConfig __instance) { Vector2 BottomButSize = new Vector2(150f, 38f); float num = 10f; Rect rect4 = new Rect(rect.x + rect.width / 2f - BottomButSize.x / 2f, num, BottomButSize.x, BottomButSize.y); if (Widgets.ButtonText(rect4, "RimChat.MC.Page.Button.Test".Translate(), true, false, true)) { Log.Warning("Clicked our test postfix button!"); } }
public override void OnClicked(Page_ModsConfig window) { ModMetaData modWithIdentifier = ModLister.GetModWithIdentifier(packageId, ignorePostfix: true); if (modWithIdentifier == null) { if (!Url.NullOrEmpty()) { SteamUtility.OpenUrl(Url); } } else if (!modWithIdentifier.Active) { window.SelectMod(modWithIdentifier); } }
internal static void OnItemUnsubscribed(RemoteStoragePublishedFileUnsubscribed_t result) { if (Workshop.IsOurAppId(result.m_nAppID)) { if (Prefs.LogVerbose) { Log.Message("Workshop: Item unsubscribed: " + result.m_nPublishedFileId); } Page_ModsConfig page_ModsConfig = Find.WindowStack.WindowOfType <Page_ModsConfig>(); if (page_ModsConfig != null) { page_ModsConfig.Notify_SteamItemUnsubscribed(result.m_nPublishedFileId); } Page_SelectScenario page_SelectScenario = Find.WindowStack.WindowOfType <Page_SelectScenario>(); if (page_SelectScenario != null) { page_SelectScenario.Notify_SteamItemUnsubscribed(result.m_nPublishedFileId); } WorkshopItems.Notify_Unsubscribed(result.m_nPublishedFileId); } }
static void Postfix(Page_ModsConfig __instance, Rect rect) { ModMetaData selectedMod = __instance.selectedMod; if (Prefs.DevMode && selectedMod != null && !selectedMod.IsCoreMod && selectedMod.Source == ContentSource.LocalFolder) { Rect buttonRect = new Rect(580f, rect.height - 95f, 200f, 40f); ModToSync mod = null; if (File.Exists(selectedMod.RootDir + "/About/ModSync.xml")) { // Draw the "Update ModSync" button if (Widgets.ButtonText(buttonRect, "ModSync.UpdateModSyncFile".Translate())) { if (!ModToSyncFactory.TryCreateModToSync(selectedMod, out mod)) { mod = null; Log.Error("Could not open ModSync.xml file for [" + selectedMod.Name + "]"); } } } else // No ModSync.xml for the mod { if (Widgets.ButtonText(buttonRect, "ModSync.CreateModSyncFile".Translate())) { mod = new ModToSync(selectedMod, new ModSyncInfo(selectedMod.Name, "1.0.0.0")); } } if (mod != null) { string assemblyVersion = FileUtil.GetVersionFromDll(selectedMod); Dialog_CreateModSyncFile dialog = new Dialog_CreateModSyncFile(mod, assemblyVersion); Find.WindowStack.Add(dialog); } } }
internal static void DoWindowContents(this Page_ModsConfig instance, Rect rect) { Rect mainRect = (Rect)AccessTools.Method(typeof(Page_ModsConfig), "GetMainRect").Invoke(instance, new object[] { rect, 0f, true }); GUI.BeginGroup(mainRect); Text.Font = GameFont.Small; float num = 0f; Rect rect2 = new Rect(17f, num, 316f, 30f); if (Widgets.ButtonText(rect2, "OpenSteamWorkshop".Translate(), true, false, true)) { SteamUtility.OpenSteamWorkshopPage(); } num += 30f; Rect rect3 = new Rect(17f, num, 316f, 30f); if (Widgets.ButtonText(rect3, "GetModsFromForum".Translate(), true, false, true)) { Application.OpenURL("http://rimworldgame.com/getmods"); } num += 30f; num += 17f; // Modlist Rect rect4 = new Rect(0f, num, 350f, mainRect.height - num); Widgets.DrawMenuSection(rect4, true); float height = (float)(ModLister.AllInstalledMods.Count <ModMetaData>() * 34 + 300); Rect rect5 = new Rect(0f, 26f, rect4.width - 16f, height); Widgets.BeginScrollView(rect4, ref modListScrollPosition, rect5, true); Rect rect6 = rect5.ContractedBy(4f); Listing_Standard listing_Standard = new Listing_Standard(); listing_Standard.ColumnWidth = rect6.width; listing_Standard.Begin(rect6); Rect searchBox = listing_Standard.GetRect(26f); searchString = TextEntryWidgets.TextEntryWithPlaceHolder(searchBox, searchString, "SearchPlaceHolder".Translate()); int reorderableGroup = -1; if (!SearchInProgress) { reorderableGroup = ReorderableWidget.NewGroup(delegate(int from, int to) { AccessTools.Method(typeof(ModsConfig), "Reorder").Invoke(null, new object[] { from, to }); SoundDefOf.TickHigh.PlayOneShotOnCamera(null); }); } int num2 = 0; foreach (ModMetaDataEnhanced current in ModsInListOrder()) { DoModRow(listing_Standard, current, num2, reorderableGroup); num2++; } for (int i = 0; i < WorkshopItems.DownloadingItemsCount; i++) { DoModRowDownloading(listing_Standard, num2); num2++; } listing_Standard.End(); Widgets.EndScrollView(); // selected mod details Rect position = new Rect(rect4.xMax + 17f, 0f, mainRect.width - rect4.width - 17f, mainRect.height); GUI.BeginGroup(position); if (selectedMod != null) { Text.Font = GameFont.Medium; Rect rect7 = new Rect(0f, 0f, position.width, 40f); Text.Anchor = TextAnchor.UpperCenter; Widgets.Label(rect7, selectedMod.OriginalMetaData.Name.Truncate(rect7.width, null)); Text.Anchor = TextAnchor.UpperLeft; if (!selectedMod.OriginalMetaData.IsCoreMod) { Rect rect8 = rect7; Text.Font = GameFont.Tiny; Text.Anchor = TextAnchor.LowerRight; if (!selectedMod.OriginalMetaData.VersionCompatible) { GUI.color = Color.red; } Widgets.Label(rect8, "ModTargetVersion".Translate(new object[] { selectedMod.OriginalMetaData.TargetVersion })); GUI.color = Color.white; Text.Anchor = TextAnchor.UpperLeft; Text.Font = GameFont.Small; } Rect position2 = new Rect(0f, rect7.yMax, 0f, 20f); if (selectedMod.OriginalMetaData.previewImage != null) { position2.width = Mathf.Min((float)selectedMod.OriginalMetaData.previewImage.width, position.width); position2.height = (float)selectedMod.OriginalMetaData.previewImage.height * (position2.width / (float)selectedMod.OriginalMetaData.previewImage.width); if (position2.height > 300f) { position2.width *= 300f / position2.height; position2.height = 300f; } position2.x = position.width / 2f - position2.width / 2f; GUI.DrawTexture(position2, selectedMod.OriginalMetaData.previewImage, ScaleMode.ScaleToFit); } Text.Font = GameFont.Small; float num3 = position2.yMax + 10f; if (!selectedMod.OriginalMetaData.Author.NullOrEmpty()) { Rect rect9 = new Rect(0f, num3, position.width / 2f, 25f); Widgets.Label(rect9, "Author".Translate() + ": " + selectedMod.OriginalMetaData.Author); } if (!selectedMod.OriginalMetaData.Url.NullOrEmpty()) { float num4 = Mathf.Min(position.width / 2f, Text.CalcSize(selectedMod.OriginalMetaData.Url).x); Rect rect10 = new Rect(position.width - num4, num3, num4, 25f); Text.WordWrap = false; if (Widgets.ButtonText(rect10, selectedMod.OriginalMetaData.Url, false, false, true)) { Application.OpenURL(selectedMod.OriginalMetaData.Url); } Text.WordWrap = true; } WidgetRow widgetRow = new WidgetRow(position.width, num3 + 25f, UIDirection.LeftThenUp, 99999f, 4f); if (SteamManager.Initialized && selectedMod.OriginalMetaData.OnSteamWorkshop) { if (widgetRow.ButtonText("Unsubscribe", null, true, false)) { Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmUnsubscribe".Translate(new object[] { selectedMod.OriginalMetaData.Name }), delegate { selectedMod.OriginalMetaData.enabled = false; AccessTools.Method(typeof(Workshop), "Unsubscribe").Invoke(null, new object[] { selectedMod.OriginalMetaData }); AccessTools.Method(typeof(Page_ModsConfig), "Notify_SteamItemUnsubscribed").Invoke(instance, new object[] { selectedMod.OriginalMetaData.GetPublishedFileId() }); }, true, null)); } if (widgetRow.ButtonText("WorkshopPage".Translate(), null, true, false)) { SteamUtility.OpenWorkshopPage(selectedMod.OriginalMetaData.GetPublishedFileId()); } } float num5 = num3 + 25f + 24f; Rect outRect = new Rect(0f, num5, position.width, position.height - num5 - 40f); float width = outRect.width - 16f; Rect rect11 = new Rect(0f, 0f, width, Text.CalcHeight(selectedMod.OriginalMetaData.Description, width)); Widgets.BeginScrollView(outRect, ref modDescriptionScrollPosition, rect11, true); Widgets.Label(rect11, selectedMod.OriginalMetaData.Description); Widgets.EndScrollView(); if (Prefs.DevMode && SteamManager.Initialized && selectedMod.OriginalMetaData.CanToUploadToWorkshop()) { Rect rect12 = new Rect(0f, position.yMax - 40f, 200f, 40f); if (Widgets.ButtonText(rect12, Workshop.UploadButtonLabel(selectedMod.OriginalMetaData.GetPublishedFileId()), true, false, true)) { if (!VersionControl.IsWellFormattedVersionString(selectedMod.OriginalMetaData.TargetVersion)) { Messages.Message("MessageModNeedsWellFormattedTargetVersion".Translate(new object[] { VersionControl.CurrentVersionString }), MessageSound.RejectInput); } else { Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmSteamWorkshopUpload".Translate(), delegate { SoundDefOf.TickHigh.PlayOneShotOnCamera(null); Dialog_MessageBox dialog_MessageBox = Dialog_MessageBox.CreateConfirmation("ConfirmContentAuthor".Translate(), delegate { SoundDefOf.TickHigh.PlayOneShotOnCamera(null); AccessTools.Method(typeof(Workshop), "Upload").Invoke(null, new object[] { selectedMod.OriginalMetaData }); }, true, null); dialog_MessageBox.buttonAText = "Yes".Translate(); dialog_MessageBox.buttonBText = "No".Translate(); dialog_MessageBox.interactionDelay = 6f; Find.WindowStack.Add(dialog_MessageBox); }, true, null)); } } } } GUI.EndGroup(); GUI.EndGroup(); DoBottomLeftWindowContents(rect); DoBottomRightWindowContents(rect); }
internal static void PreOpen(this Page_ModsConfig instance) { loadedMods = new List <ModMetaDataEnhanced>(); UpdateLoadedMods(); selectedMod = loadedMods.FirstOrDefault(mod => mod.Identifier == instance.selectedMod.Identifier); }
static void PromotionPart(Rect mainRect, float leftColumn, float rightColumn, ModMetaData mod, Page_ModsConfig page) { var mainModID = mod.GetPublishedFileId(); Text.Font = GameFont.Tiny; var headerHeight = 30f; var headerRect = new Rect(leftColumn + 10f, -4f, rightColumn - 20f, headerHeight); Text.Anchor = TextAnchor.UpperCenter; Widgets.Label(headerRect, "Mods of " + mod.Author.Replace("Andreas Pardeike", "Brrainz") + ":".Truncate(headerRect.width, null)); Text.Anchor = TextAnchor.UpperLeft; var outRect = new Rect(leftColumn + 10f, headerHeight - 4f, rightColumn, mainRect.height - (headerHeight - 4f)); var width = outRect.width - 20f; var previewHeight = width * 319f / 588f; var promoMods = CrossPromotion.promotionMods.ToArray().Where(m => m.m_nPublishedFileId != mainModID); var workshopMods = WorkshopItems.AllSubscribedItems.Select(wi => wi.PublishedFileId.m_PublishedFileId).ToList(); var activeMods = ModLister.AllInstalledMods.Where(meta => meta.Active).Select(meta => meta.GetPublishedFileId().m_PublishedFileId).ToList(); var height = 0f; foreach (var promoMod in promoMods) { var myModID = promoMod.m_nPublishedFileId.m_PublishedFileId; var isLocalFile = ModLister.AllInstalledMods.Any(meta => meta.GetPublishedFileId().m_PublishedFileId == myModID && meta.Source == ContentSource.LocalFolder); var isSubbed = workshopMods.Contains(myModID); CrossPromotion.allVoteStati.TryGetValue(myModID, out var voteStatus); if (height > 0) { height += 10f; } var preview = CrossPromotion.PreviewForMod(promoMod.m_nPublishedFileId.m_PublishedFileId); if (preview != null) { height += width * preview.height / preview.width + 2f; if (isLocalFile == false && (isSubbed == false || (voteStatus == false))) { height += 16f; } } } Widgets.BeginScrollView(outRect, ref rightScroll, new Rect(0f, 0f, width, height), true); var firstTime = true; var modRect = new Rect(0f, 0f, width, 0f); foreach (var promoMod in promoMods) { var myModID = promoMod.m_nPublishedFileId.m_PublishedFileId; var isLocalFile = ModLister.AllInstalledMods.Any(meta => meta.GetPublishedFileId().m_PublishedFileId == myModID && meta.Source == ContentSource.LocalFolder); var isSubbed = workshopMods.Contains(myModID); var isActive = activeMods.Contains(myModID); CrossPromotion.allVoteStati.TryGetValue(myModID, out var voteStatus); if (firstTime == false) { modRect.y += 10f; } var preview = CrossPromotion.PreviewForMod(promoMod.m_nPublishedFileId.m_PublishedFileId); if (preview != null) { modRect.height = width * preview.height / preview.width; GUI.DrawTexture(modRect, preview, ScaleMode.ScaleToFit); var checkRect = modRect; checkRect.xMax -= 4f; checkRect.yMax -= 4f; checkRect.xMin = checkRect.xMax - 18f; checkRect.yMin = checkRect.yMax - 18f; var active = isActive; GUI.DrawTexture(checkRect.ContractedBy(-2f), CheckboxBackground); Widgets.Checkbox(checkRect.xMin, checkRect.yMin, ref active, checkRect.width); if (active != isActive) { var clickedMod = ModLister.AllInstalledMods.FirstOrDefault(meta => meta.GetPublishedFileId().m_PublishedFileId == myModID); if (clickedMod != null) { ModsConfig.SetActive(clickedMod, active); ModsConfig.Save(); } } if (Mouse.IsOver(checkRect) == false) { Widgets.DrawHighlightIfMouseover(modRect); if (Widgets.ButtonInvisible(modRect, true)) { var description = promoMod.m_rgchTitle + "\n\n" + promoMod.m_rgchDescription; var actionButton = isSubbed || isLocalFile ? "Select" : "Subscribe"; void actionButtonAction() { if (isSubbed || isLocalFile) { var orderedMods = (IEnumerable <ModMetaData>)AccessTools.Method(typeof(Page_ModsConfig), "ModsInListOrder").Invoke(page, new object[0]); page.selectedMod = orderedMods.FirstOrDefault(meta => meta.GetPublishedFileId().m_PublishedFileId == myModID); var modsBefore = orderedMods.FirstIndexOf(m => m == page.selectedMod); if (modsBefore >= 0) { Traverse.Create(page).Field("modListScrollPosition").SetValue(new Vector2(0f, modsBefore * 26f + 4f)); } } else { new Thread(() => { CrossPromotion.subscribingMods.Add(myModID); SteamUGC.SubscribeItem(new PublishedFileId_t(myModID)); }).Start(); } } var infoWindow = new Dialog_MessageBox(description, "Close".Translate(), null, actionButton, actionButtonAction, null, false, null, null); Find.WindowStack.Add(infoWindow); } } modRect.y += modRect.height + 2f; modRect.height = 0f; if (isLocalFile == false) { if (isSubbed == false) { modRect.height = 16f; if (CrossPromotion.subscribingMods.Contains(myModID)) { Widgets.Label(modRect, WaitingString); } else if (Widgets.ButtonText(modRect, "Subscribe", false, true, true)) { new Thread(() => { CrossPromotion.subscribingMods.Add(myModID); SteamUGC.SubscribeItem(new PublishedFileId_t(myModID)); }).Start(); } } else if (voteStatus != null && voteStatus == false) { modRect.height = 16f; if (Widgets.ButtonText(modRect, "Like", false, true, true)) { new Thread(() => { CrossPromotion.allVoteStati[myModID] = true; SteamUGC.SetUserItemVote(new PublishedFileId_t(myModID), true); }).Start(); } } } modRect.y += modRect.height; } firstTime = false; } Widgets.EndScrollView(); }
static void ContentPart(Rect mainRect, float leftColumn, ModMetaData mod, Page_ModsConfig page) { var workshopMods = WorkshopItems.AllSubscribedItems.Select(wi => wi.PublishedFileId.m_PublishedFileId).ToList(); var mainModID = mod.GetPublishedFileId().m_PublishedFileId; var promoMods = CrossPromotion.promotionMods.ToArray(); var thisMod = promoMods.FirstOrDefault(m => m.m_nPublishedFileId.m_PublishedFileId == mainModID); var isLocalFile = ModLister.AllInstalledMods.Any(meta => meta.GetPublishedFileId().m_PublishedFileId == mainModID && meta.Source == ContentSource.LocalFolder); var isSubbed = workshopMods.Contains(mainModID); if (CrossPromotion.lastPresentedMod != mainModID) { leftScroll = Vector2.zero; rightScroll = Vector2.zero; CrossPromotion.lastPresentedMod = mainModID; new Thread(() => { foreach (var promoMod in promoMods) { CrossPromotion.UpdateVotingStatus(promoMod.m_nPublishedFileId.m_PublishedFileId, (result2, failure2) => { CrossPromotion.allVoteStati[promoMod.m_nPublishedFileId.m_PublishedFileId] = (result2.m_eResult == EResult.k_EResultOK) ? result2.m_bVotedUp : (bool?)null; }); } }).Start(); } var description = thisMod.m_rgchDescription; if (description == null || description.Length == 0) { description = mod.Description; } var outRect = new Rect(0f, 0f, leftColumn, mainRect.height); var width = outRect.width - 20f; var imageRect = new Rect(0f, 0f, width, width * mod.previewImage.height / mod.previewImage.width); var textRect = new Rect(0f, 24f + 10f + imageRect.height, width, Text.CalcHeight(description, width)); var innerRect = new Rect(0f, 0f, width, imageRect.height + 20f + 8f + 10f + textRect.height); Widgets.BeginScrollView(outRect, ref leftScroll, innerRect, true); GUI.DrawTexture(imageRect, mod.previewImage, ScaleMode.ScaleToFit); var widgetRow = new WidgetRow(imageRect.xMax, imageRect.yMax + 8f, UIDirection.LeftThenDown, width, 8f); if (isLocalFile == false) { if (widgetRow.ButtonText("Unsubscribe".Translate(), null, true, true)) { Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmUnsubscribe".Translate(mod.Name), delegate { mod.enabled = false; new Thread(() => { AccessTools.Method(typeof(Workshop), "Unsubscribe").Invoke(null, new object[] { mod }); AccessTools.Method(typeof(Page_ModsConfig), "Notify_SteamItemUnsubscribed").Invoke(page, new object[] { mainModID }); }).Start(); }, true, null)); } } if (isSubbed) { if (widgetRow.ButtonText("WorkshopPage".Translate(), null, true, true)) { SteamUtility.OpenWorkshopPage(new PublishedFileId_t(mainModID)); } } if (Prefs.DevMode && mod.CanToUploadToWorkshop()) { widgetRow = new WidgetRow(imageRect.xMin, imageRect.yMax + 8f, UIDirection.RightThenDown, width, 8f); if (widgetRow.ButtonText("Upload", null, true, true)) { Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmSteamWorkshopUpload".Translate(), delegate { AccessTools.Method(typeof(Workshop), "Upload").Invoke(null, new object[] { mod }); }, true, null)); } } Widgets.Label(textRect, description); Widgets.EndScrollView(); }
public static bool Prefix(this Page_ModsConfig __instance, ref Rect rect) { Page_ModsConfig_Controller.DoWindowContents(__instance, rect); return(false); }
public abstract void OnClicked(Page_ModsConfig window);
static void Prefix(Page_ModsConfig __instance, ModMetaData mod) { ModManager_ButtonPrefix(null, mod, __instance.truncatedModNamesCache); }
public static void Postfix(this Page_ModsConfig __instance) { Page_ModsConfig_Controller.PreOpen(__instance); }