Beispiel #1
0
        internal static void DrawSeachBox()
        {
            Rect searchRect = new Rect(XPos, YPos, 250f, 26f);

            GUI.SetNextControlName("WorldSearchBox");
            string search = TextEntryWidgets.TextEntryWithPlaceHolder(searchRect, SearchString, "SearchPlaceholder".Translate(), true);

            if (search != SearchString)
            {
                SearchString = search;
                UpdateSearchResults();
            }
            DrawResults();
        }
        private static void DrawSearchBoxRow(Listing_Standard listing)
        {
            Rect searchBox = listing.GetRect(26f);

            searchString = TextEntryWidgets.TextEntryWithPlaceHolder(searchBox, searchString, "SearchPlaceHolder".Translate());
        }
        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);
        }