static IEnumerable <CodeInstruction> Transpiler(IEnumerable <CodeInstruction> instructions) { var m_DrawOptionListing = SymbolExtensions.GetMethodInfo(() => OptionListingUtility.DrawOptionListing(Rect.zero, null)); var instructionsList = instructions.ToList(); var patched = false; for (var i = 0; i < instructionsList.Count; i++) { var instruction = instructionsList[i]; if (i + 2 < instructionsList.Count) { var checkingIns = instructionsList[i + 2]; if (!patched && checkingIns != null && checkingIns.Calls(m_DrawOptionListing)) { yield return(new CodeInstruction(OpCodes.Ldloc_2)); yield return(new CodeInstruction(OpCodes.Call, ListingOption)); patched = true; } } yield return(instruction); } }
public override void DoWindowContents(Rect inRect) { GUI.BeginGroup(inRect); Text.Font = GameFont.Medium; Widgets.Label(new Rect(inRect.width / 2 - inRect.width / 6f, 0.0f, inRect.width, 45f), "FilUnderscore.PersistentRimWorlds".Translate()); Text.Font = GameFont.Small; var rect1 = new Rect((inRect.width - 170f) / 2, 0.0f + 45f, 170f, inRect.height); var optList = new List <ListableOption> { new ListableOption("FilUnderscore.PersistentRimWorlds.Load.World".Translate(), delegate { this.next = new Page_PersistentWorlds_LoadWorld_FileList { prev = this }; this.DoNext(); }, null), }; var num1 = (double)OptionListingUtility.DrawOptionListing(rect1, optList); GUI.EndGroup(); }
public static float DrawOptionListing(Rect rect, List <ListableOption> optList) { if (optList.Count > 0 && optList[0].GetType() == typeof(ListableOption)) { if (Current.ProgramState == ProgramState.Entry) { var item = new ListableOption("OCity_LAN_btn".Translate(), delegate { OnMainMenuNetClick(); }, null); optList.Insert(0, item); } } return(OptionListingUtility.DrawOptionListing(rect, optList)); }
private void DoHomePage(Rect rect) { rect.yMin += 17f; Text.Font = GameFont.Small; GUI.BeginGroup(rect); List <ListableOption> list = new List <ListableOption>(); list.Add(new ListableOption("ColonistHistory.ForceRecordButton".Translate(), delegate { CompRecorder.Record(true); }, null)); list.Add(new ListableOption("ColonistHistory.OutputRecordButton".Translate(), delegate { Find.WindowStack.Add(new Dialog_NameSaveFile(GameComponent_ColonistHistoryRecorder.SaveFileName)); }, null)); Rect rectButtonList = new Rect(0f, 0f, 170f, rect.height); OptionListingUtility.DrawOptionListing(rectButtonList, list); StringBuilder stringBuilder = new StringBuilder(); { string lastRecordDateTimeString = "ColonistHistory.NoRecord".Translate(); if (CompRecorder.LastRecordTick != -1) { lastRecordDateTimeString = CompRecorder.LastRecordDateTime; } string lastRecordIsManual = ""; if (CompRecorder.LastRecordIsManual) { lastRecordIsManual = "ColonistHistory.LastRecordIsManual".Translate(); } stringBuilder.AppendLine("ColonistHistory.LastRecordDateTime".Translate(lastRecordDateTimeString, lastRecordIsManual)); } { int leftTick = CompRecorder.NextRecordTick - Current.Game.tickManager.TicksAbs; stringBuilder.AppendLine("ColonistHistory.NextRecordTimeLeft".Translate(leftTick.ToStringTicksToPeriod())); } Text.Anchor = TextAnchor.UpperLeft; Widgets.Label(new Rect(rectButtonList.xMax + 16f, 0f, rect.width - rectButtonList.xMax - 16f, rect.height), stringBuilder.ToString()); GUI.EndGroup(); }
static void Prefix(Rect rect, bool anyMapFiles) { rect.xMin -= 170f; rect.yMin += 52; GUI.BeginGroup(rect); Rect rect2 = new Rect(0f, 0f, 170f, rect.height); Rect rect3 = new Rect(rect2.xMax + 17f, 0f, 145f, rect.height); Rect rect4 = new Rect(0, 0, 170f, rect.height); Text.Font = GameFont.Small; List <ListableOption> list = new List <ListableOption>(); string label = "Cooperative"; list.Add(new ListableOption(label, CooperativeButtonPressed)); OptionListingUtility.DrawOptionListing(rect2, list); }
public override void DoSettingsWindowContents(Rect inRect) { floVertSpacer = inRect.height * .025f; Rect rectDTMBanner = new Rect(); if (inRect.width > vecDTMBanner.x) { rectDTMBanner = new Rect(0f, 40f, vecDTMBanner.x, vecDTMBanner.y); } else { vecDTMBannerSize.x = inRect.width; vecDTMBannerSize.y = (vecDTMBannerSize.x / vecDTMBanner.x) * vecDTMBanner.y; rectDTMBanner = new Rect(0f, 40f, vecDTMBannerSize.x, vecDTMBannerSize.y); } Rect rectOpenDebugLogMenu = new Rect(rectDTMBanner.x, rectDTMBanner.y + rectDTMBanner.height + floVertSpacer, inRect.width * .25f, inRect.height * .05f); Rect rectOpenDebugLogWindow = new Rect(rectDTMBanner.x, rectOpenDebugLogMenu.y + rectOpenDebugLogMenu.height + floVertSpacer, inRect.width * .25f, inRect.height * .05f); Rect rectListOptions = new Rect(rectDTMBanner.x, rectOpenDebugLogWindow.y + rectOpenDebugLogWindow.height + floVertSpacer, inRect.width * .25f, inRect.height * .05f); GUI.DrawTexture(rectDTMBanner, DTMBin.DTMBanner); if (GUI.Button(rectOpenDebugLogMenu, "Debug Log Menu")) { if (!Find.WindowStack.TryRemove(typeof(Dialog_DebugLogMenu), true)) { Find.WindowStack.Add(new Dialog_DebugLogMenu()); } } if (GUI.Button(rectOpenDebugLogWindow, "Debug Log Window")) { if (!Find.WindowStack.TryRemove(typeof(EditWindow_Log), true)) { Find.WindowStack.Add(new EditWindow_Log()); } } List <ListableOption> lstOptions = new List <ListableOption>(); ListableOption lOpt = new ListableOption_WebLink("Information and Help".Translate(), "https://www.reddit.com/r/KeenKrozzy/", DTMBin.RedditIcon); lstOptions.Add(lOpt); OptionListingUtility.DrawOptionListing(rectListOptions, lstOptions); }
public void DoComponents(Rect rect) { UnityEngine.GUI.BeginGroup(rect); Rect rect2 = new Rect(0f, 0f, 170f, rect.height); Text.Font = GameFont.Small; List <ListableOption> list = new List <ListableOption>(); list.Add(new ListableOption("BtnTextGCWP".Translate(), delegate { GC_wrapped(); }, null)); list.Add(new ListableOption("BtnTextGCV".Translate(), delegate { GC_wrapped(true); }, null)); list.Add(new ListableOption("BtnTextAddOn".Translate(), delegate { FloatMenuUtil.GenerateFloatMenuGroup(FloatMenuUtil.GroupTools); }, null)); list.Add(new ListableOption("BtnTextFix".Translate(), delegate { FloatMenuUtil.GenerateFloatMenuGroup(FloatMenuUtil.GroupFix); }, null)); list.Add(new ListableOption("BtnTextQB".Translate(), delegate { FloatMenuUtil.GenerateFloatMenuGroup(FloatMenuUtil.GroupQuickbar); }, null)); list.Add(new ListableOption("BtnTextSysGC".Translate(), delegate { if (Event.current.shift) { FloatMenuUtil.GenerateMemoryReclaimOptions(); } CleanserUtil.GCObject.DisposeTmpForSystemGC(); System.GC.Collect(); Messages.Message("MsgTextSysGC".Translate(), MessageTypeDefOf.PositiveEvent); }, null)); OptionListingUtility.DrawOptionListing(rect2, list); UnityEngine.GUI.EndGroup(); }
public void DoHelpContents(Rect rect) { UnityEngine.GUI.BeginGroup(rect); Rect rect2 = new Rect(0f, 0f, 35f, rect.height); Text.Font = GameFont.Small; List <ListableOption> list = new List <ListableOption>(); list.Add(new ListableOption("?", delegate { //GC_wrapped(); Find.WindowStack.Add(new Dialog_MessageBox("HelpTextGCWP".Translate())); }, null)); list.Add(new ListableOption("?", delegate { //GC_wrapped(true); Find.WindowStack.Add(new Dialog_MessageBox("HelpTextGCV".Translate())); }, null)); list.Add(new ListableOption("?", delegate { //FloatMenuUtil.GenerateFloatMenuGroup(FloatMenuUtil.GroupTools); Find.WindowStack.Add(new Dialog_MessageBox("HelpTextAddOn".Translate())); }, null)); list.Add(new ListableOption("?", delegate { //FloatMenuUtil.GenerateFloatMenuGroup(FloatMenuUtil.GroupFix); Find.WindowStack.Add(new Dialog_MessageBox("HelpTextFix".Translate())); }, null)); list.Add(new ListableOption("?", delegate { //FloatMenuUtil.GenerateFloatMenuGroup(FloatMenuUtil.GroupQuickAccess); Find.WindowStack.Add(new Dialog_MessageBox("HelpTextQB".Translate())); }, null)); list.Add(new ListableOption("?", delegate { //System.GC.Collect(); Find.WindowStack.Add(new Dialog_MessageBox("HelpTextSysGC".Translate())); }, null)); OptionListingUtility.DrawOptionListing(rect2, list); UnityEngine.GUI.EndGroup(); }
public static void DoMainMenuControls(Rect rect, bool anyMapFiles) { GUI.BeginGroup(rect); Rect rect2 = new Rect(0f, 0f, 170f, rect.height); Rect rect3 = new Rect(rect2.xMax + 17f, 0f, 145f, rect.height); Text.Font = GameFont.Small; List <ListableOption> list = new List <ListableOption>(); if (Current.ProgramState == ProgramState.Entry) { string label = ("Tutorial".CanTranslate() ? ((string)"Tutorial".Translate()) : ((string)"LearnToPlay".Translate())); list.Add(new ListableOption(label, delegate { InitLearnToPlay(); })); list.Add(new ListableOption("NewColony".Translate(), delegate { Find.WindowStack.Add(new Page_SelectScenario()); })); } if (Current.ProgramState == ProgramState.Playing && !Current.Game.Info.permadeathMode) { list.Add(new ListableOption("Save".Translate(), delegate { CloseMainTab(); Find.WindowStack.Add(new Dialog_SaveFileList_Save()); })); } ListableOption item; if (anyMapFiles && (Current.ProgramState != ProgramState.Playing || !Current.Game.Info.permadeathMode)) { item = new ListableOption("LoadGame".Translate(), delegate { CloseMainTab(); Find.WindowStack.Add(new Dialog_SaveFileList_Load()); }); list.Add(item); } if (Current.ProgramState == ProgramState.Playing) { list.Add(new ListableOption("ReviewScenario".Translate(), delegate { Find.WindowStack.Add(new Dialog_MessageBox(Find.Scenario.GetFullInformationText(), null, null, null, null, Find.Scenario.name)); })); } item = new ListableOption("Options".Translate(), delegate { CloseMainTab(); Find.WindowStack.Add(new Dialog_Options()); }, "MenuButton-Options"); list.Add(item); if (Current.ProgramState == ProgramState.Entry) { item = new ListableOption("Mods".Translate(), delegate { Find.WindowStack.Add(new Page_ModsConfig()); }); list.Add(item); if (Prefs.DevMode && LanguageDatabase.activeLanguage == LanguageDatabase.defaultLanguage && LanguageDatabase.activeLanguage.anyError) { item = new ListableOption("SaveTranslationReport".Translate(), delegate { LanguageReportGenerator.SaveTranslationReport(); }); list.Add(item); } item = new ListableOption("Credits".Translate(), delegate { Find.WindowStack.Add(new Screen_Credits()); }); list.Add(item); } if (Current.ProgramState == ProgramState.Playing) { if (Current.Game.Info.permadeathMode) { item = new ListableOption("SaveAndQuitToMainMenu".Translate(), delegate { LongEventHandler.QueueLongEvent(delegate { GameDataSaveLoader.SaveGame(Current.Game.Info.permadeathModeUniqueName); MemoryUtility.ClearAllMapsAndWorld(); }, "Entry", "SavingLongEvent", doAsynchronously: false, null, showExtraUIInfo: false); }); list.Add(item); item = new ListableOption("SaveAndQuitToOS".Translate(), delegate { LongEventHandler.QueueLongEvent(delegate { GameDataSaveLoader.SaveGame(Current.Game.Info.permadeathModeUniqueName); LongEventHandler.ExecuteWhenFinished(delegate { Root.Shutdown(); }); }, "SavingLongEvent", doAsynchronously: false, null, showExtraUIInfo: false); }); list.Add(item); } else { Action action = delegate { if (GameDataSaveLoader.CurrentGameStateIsValuable) { Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmQuit".Translate(), delegate { GenScene.GoToMainMenu(); }, destructive: true)); } else { GenScene.GoToMainMenu(); } }; item = new ListableOption("QuitToMainMenu".Translate(), action); list.Add(item); Action action2 = delegate { if (GameDataSaveLoader.CurrentGameStateIsValuable) { Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmQuit".Translate(), delegate { Root.Shutdown(); }, destructive: true)); } else { Root.Shutdown(); } }; item = new ListableOption("QuitToOS".Translate(), action2); list.Add(item); } } else { item = new ListableOption("QuitToOS".Translate(), delegate { Root.Shutdown(); }); list.Add(item); } OptionListingUtility.DrawOptionListing(rect2, list); Text.Font = GameFont.Small; List <ListableOption> list2 = new List <ListableOption>(); ListableOption item2 = new ListableOption_WebLink("FictionPrimer".Translate(), "https://rimworldgame.com/backstory", TexButton.IconBlog); list2.Add(item2); item2 = new ListableOption_WebLink("LudeonBlog".Translate(), "https://ludeon.com/blog", TexButton.IconBlog); list2.Add(item2); item2 = new ListableOption_WebLink("Forums".Translate(), "https://ludeon.com/forums", TexButton.IconForums); list2.Add(item2); item2 = new ListableOption_WebLink("OfficialWiki".Translate(), "https://rimworldwiki.com", TexButton.IconBlog); list2.Add(item2); item2 = new ListableOption_WebLink("TynansTwitter".Translate(), "https://twitter.com/TynanSylvester", TexButton.IconTwitter); list2.Add(item2); item2 = new ListableOption_WebLink("TynansDesignBook".Translate(), "https://tynansylvester.com/book", TexButton.IconBook); list2.Add(item2); item2 = new ListableOption_WebLink("HelpTranslate".Translate(), TranslationsContributeURL, TexButton.IconForums); list2.Add(item2); item2 = new ListableOption_WebLink("BuySoundtrack".Translate(), "http://www.lasgameaudio.co.uk/#!store/t04fw", TexButton.IconSoundtrack); list2.Add(item2); float num = OptionListingUtility.DrawOptionListing(rect3, list2); GUI.BeginGroup(rect3); if (Current.ProgramState == ProgramState.Entry && Widgets.ButtonText(new Rect(0f, num + 10f, rect3.width, 50f), LanguageDatabase.activeLanguage.FriendlyNameNative)) { List <FloatMenuOption> list3 = new List <FloatMenuOption>(); foreach (LoadedLanguage allLoadedLanguage in LanguageDatabase.AllLoadedLanguages) { LoadedLanguage localLang = allLoadedLanguage; list3.Add(new FloatMenuOption(localLang.DisplayName, delegate { LanguageDatabase.SelectLanguage(localLang); Prefs.Save(); })); } Find.WindowStack.Add(new FloatMenu(list3)); } GUI.EndGroup(); GUI.EndGroup(); }
public void DoTab3Contents(Rect inRect) { Text.Font = GameFont.Medium; Widgets.Label(inRect, "OCity_Dialog_AboutMode".Translate()); Text.Font = GameFont.Small; var chatAreaOuter = new Rect(inRect.x + 150f, inRect.y + 40f, inRect.width - 150f, inRect.height - 30f - 40f); AboutBox.Drow(chatAreaOuter); var rect2 = new Rect(inRect.x, inRect.y + inRect.height / 2f, 150f, inRect.height - 30f - 40f); Text.Font = GameFont.Small; List <ListableOption> list2 = new List <ListableOption>(); ListableOption item2 = new ListableOption_WebLink("OCity_Dialog_AutorPage".Translate(), "https://steamcommunity.com/sharedfiles/filedetails/?id=1908437382", GeneralTexture.IconForums); list2.Add(item2); rect2 = new Rect(inRect.x, inRect.y + 30f, 150f, 40f); Text.Font = GameFont.Small; list2 = new List <ListableOption>(); item2 = new ListableOption_WebLink("OCity_Dialog_Regame".Translate(), () => { var form = new Dialog_Input("OCity_Dialog_DeleteData".Translate(), "OCity_Dialog_DeleteDataCheck".Translate()); form.PostCloseAction = () => { if (form.ResultOK) { var mainCannal = SessionClientController.Data.Chats[0]; SessionClientController.Command((connect) => { var res = connect.PostingChat(mainCannal.Id, "/killmyallplease"); if (res != null && res.Status == 0) { SessionClientController.Disconnected("OCity_Dialog_DeletedData".Translate()); } }); } }; Find.WindowStack.Add(form); }, GeneralTexture.IconDelTex); list2.Add(item2); float num = OptionListingUtility.DrawOptionListing(rect2, list2); GUI.BeginGroup(rect2); if (Current.ProgramState == ProgramState.Entry && Widgets.ButtonImage(new Rect(0f, num + 10f, 64f, 32f), LanguageDatabase.activeLanguage.icon)) { List <FloatMenuOption> list3 = new List <FloatMenuOption>(); foreach (LoadedLanguage current in LanguageDatabase.AllLoadedLanguages) { LoadedLanguage localLang = current; list3.Add(new FloatMenuOption(localLang.FriendlyNameNative, delegate { LanguageDatabase.SelectLanguage(localLang); Prefs.Save(); }, MenuOptionPriority.Default, null, null, 0f, null, null)); } Find.WindowStack.Add(new FloatMenu(list3)); } GUI.EndGroup(); /* * var rectCannals = new Rect(inRect.x, inRect.y, 100f, (float)Math.Round((decimal)(inRect.height / 2f * 10f)) / 10f); * Widgets.DrawBoxSolid(inRect, new Color(0.2f, 0.2f, 0)); * Widgets.DrawBoxSolid(rectCannals, new Color(0.4f, 0.4f, 0)); * * * Widgets.DrawBoxSolid(new Rect(inRect.x + 110f, inRect.y, inRect.width - 110f, inRect.height - 40f) * , new Color(0.4f, 0, 0)); * * Widgets.DrawBoxSolid(new Rect(inRect.x + 110f, inRect.y + inRect.height - 35f, inRect.width - 110f, 25f) * , new Color(0, 0, 0.4f)); * * Widgets.Label(inRect, "Вкладка 3"); */ }
internal static void _DoMainMenuButtons(Rect rect, bool anyWorldFiles, bool anyMapFiles, Action backToGameButtonAction = null) { #region Set Single Column Rect var optionColumnRect = new Rect(0.0f, 0.0f, MainMenuDrawerExt.GameRectWidth, rect.height); Text.Font = GameFont.Small; #endregion #region Main Buttons #region Get Defs and Make Buttons var mainOptions = new List <ListableOption>(); var currentMainMenuDefs = MainMenuDrawerExt.CurrentMainMenuDefs(anyWorldFiles, anyMapFiles); foreach (var menu in currentMainMenuDefs) { mainOptions.Add(new ListableOption_MainMenu(menu)); } #endregion #region Calculate Height for Buttons var currentMainMenuButtonCount = currentMainMenuDefs.Count; var currentMainMenuButtonHeight = MainMenuDrawerExt.OptionButtonSpacingFor(currentMainMenuButtonCount); #endregion #region Handle Scroll Region Prefix Rect mainOptionsViewRect; if (currentMainMenuButtonHeight > rect.y) { // More buttons than the area allows, begin a scroll area var scrollRect = new Rect( 0f, MainMenuDrawerExt.OptionListSpacing, MainMenuDrawerExt.GameRectWidth, optionColumnRect.height - MainMenuDrawerExt.OptionListSpacing); optionColumnRect.width -= MainMenuDrawerExt.OptionListSpacing; optionColumnRect.height = currentMainMenuButtonHeight; _optionsScroll = GUI.BeginScrollView(scrollRect, _optionsScroll, optionColumnRect); mainOptionsViewRect = optionColumnRect; } else { mainOptionsViewRect = optionColumnRect.ContractedBy(MainMenuDrawerExt.OptionListSpacing); } #endregion #region Draw Buttons var mainOptionsHeight = OptionListingUtility.DrawOptionListing(mainOptionsViewRect, mainOptions); #endregion #region Handle Scroll Region Suffix if (currentMainMenuButtonHeight > rect.y) { // End the scroll area GUI.EndScrollView(); optionColumnRect.xMax += MainMenuDrawerExt.OptionListSpacing; } #endregion #endregion #region Links and Language var linkOptionAreaRect = new Rect(optionColumnRect.xMax, 0.0f, -1f, rect.height); linkOptionAreaRect.xMax = rect.width; Text.Font = GameFont.Small; #region Draw Links var linkOptionRect = linkOptionAreaRect.ContractedBy(MainMenuDrawerExt.OptionListSpacing); var linkOptionHeight = OptionListingUtility.DrawOptionListing(linkOptionRect, MainMenuDrawerExt.LinkOptions); #endregion #region Draw Language Selection var languageRect = new Rect( linkOptionRect.x, linkOptionHeight + MainMenuDrawerExt.OptionSpacingDefault + MainMenuDrawerExt.LanguageOptionSpacing, MainMenuDrawerExt.LanguageOptionWidth, MainMenuDrawerExt.LanguageOptionHeight ); MainMenuDrawerExt.DrawLanguageOption(languageRect); #endregion #endregion }
public void DoTab2Contents(Rect inRect) { Text.Font = GameFont.Medium; Widgets.Label(inRect, "OCity_Dialog_AboutMode".Translate()); Text.Font = GameFont.Small; //var chatTextSize = Text.CalcSize(InfoTabText); var chatAreaOuter = new Rect(inRect.x + 150f, inRect.y + 40f, inRect.width - 150f, inRect.height - 30f - 40f); var chatAreaInner = new Rect(0, 0 , /*inRect.width - (inRect.x + 50f)*/ chatAreaOuter.width - ListBox <string> .WidthScrollLine , 0 /*chatTextSize.y*/); chatAreaInner.height = Text.CalcHeight(AboutTabText, chatAreaInner.width); InfoScrollPosition = GUI.BeginScrollView(chatAreaOuter, InfoScrollPosition, chatAreaInner); GUILayout.BeginArea(chatAreaInner); GUILayout.TextField(AboutTabText, "Label"); GUILayout.EndArea(); GUI.EndScrollView(); var rect2 = new Rect(inRect.x, inRect.y + inRect.height / 2f, 150f, inRect.height - 30f - 40f); Text.Font = GameFont.Small; List <ListableOption> list2 = new List <ListableOption>(); ListableOption item2 = new ListableOption_WebLink("OCity_Dialog_AutorPage".Translate(), "https://vk.com/rimworldonline", IconForums); list2.Add(item2); float num = OptionListingUtility.DrawOptionListing(rect2, list2); rect2 = new Rect(inRect.x, inRect.y + 30f, 150f, 40f); Text.Font = GameFont.Small; list2 = new List <ListableOption>(); item2 = new ListableOption_WebLink("OCity_Dialog_Regame".Translate(), () => { var form = new Dialog_Input("OCity_Dialog_DeleteData".Translate(), "OCity_Dialog_DeleteDataCheck".Translate()); form.PostCloseAction = () => { if (form.ResultOK) { var mainCannal = SessionClientController.Data.Chats[0]; SessionClientController.Command((connect) => { if (connect.PostingChat(mainCannal.Id, "/killmyallpleace")) { SessionClientController.Disconnected("OCity_Dialog_DeletedData".Translate()); } }); } }; Find.WindowStack.Add(form); }, IconDelTex); list2.Add(item2); num = OptionListingUtility.DrawOptionListing(rect2, list2); /* * GUI.BeginGroup(rect2); * if (Current.ProgramState == ProgramState.Entry && Widgets.ButtonImage(new Rect(0f, num + 10f, 64f, 32f), LanguageDatabase.activeLanguage.icon)) * { * List<FloatMenuOption> list3 = new List<FloatMenuOption>(); * foreach (LoadedLanguage current in LanguageDatabase.AllLoadedLanguages) * { * LoadedLanguage localLang = current; * list3.Add(new FloatMenuOption(localLang.FriendlyNameNative, delegate * { * LanguageDatabase.SelectLanguage(localLang); * Prefs.Save(); * }, MenuOptionPriority.Default, null, null, 0f, null, null)); * } * Find.WindowStack.Add(new FloatMenu(list3)); * } * GUI.EndGroup(); */ /* * var rectCannals = new Rect(inRect.x, inRect.y, 100f, (float)Math.Round((decimal)(inRect.height / 2f * 10f)) / 10f); * Widgets.DrawBoxSolid(inRect, new Color(0.2f, 0.2f, 0)); * Widgets.DrawBoxSolid(rectCannals, new Color(0.4f, 0.4f, 0)); * * * Widgets.DrawBoxSolid(new Rect(inRect.x + 110f, inRect.y, inRect.width - 110f, inRect.height - 40f) * , new Color(0.4f, 0, 0)); * * Widgets.DrawBoxSolid(new Rect(inRect.x + 110f, inRect.y + inRect.height - 35f, inRect.width - 110f, 25f) * , new Color(0, 0, 0.4f)); * * Widgets.Label(inRect, "Вкладка 3"); */ }
public static void DoMainMenuButtons(Rect rect, bool anyWorldFiles, bool anyMapFiles, Action backToGameButtonAction = null) { Rect rect2 = new Rect(0f, 0f, 200f, rect.height); Rect rect3 = new Rect(rect2.xMax + 17f, 0f, -1f, rect.height); rect3.xMax = rect.width; Text.Font = GameFont.Small; List <ListableOption> list = new List <ListableOption>(); ListableOption item; if (Game.Mode == GameMode.Entry) { item = new ListableOption("CreateWorld".Translate(), delegate { MapInitData.Reset(); Find.WindowStack.Add(new Page_CreateWorldParams()); }); list.Add(item); if (anyWorldFiles) { item = new ListableOption("NewColony".Translate(), delegate { MapInitData.Reset(); Find.WindowStack.Add(new Page_SelectStoryteller()); }); list.Add(item); } } if (Game.Mode == GameMode.MapPlaying) { if (backToGameButtonAction != null) { item = new ListableOption("BackToGame".Translate(), backToGameButtonAction); list.Add(item); } item = new ListableOption("Save".Translate(), delegate { MainMenuDrawer.CloseMainTab(); Find.WindowStack.Add(new Dialog_MapList_Save()); }); list.Add(item); } if (anyMapFiles) { item = new ListableOption("Load".Translate(), delegate { MainMenuDrawer.CloseMainTab(); Find.WindowStack.Add(new Dialog_MapList_Load()); }); list.Add(item); } item = new ListableOption("EdB.InterfaceOptions.Button.GameOptions".Translate(), delegate { MainMenuDrawer.CloseMainTab(); Find.WindowStack.Add(new Dialog_Options()); }); list.Add(item); if (Preferences.Instance.AtLeastOne) { item = new ListableOption("EdB.InterfaceOptions.Button.InterfaceOptions".Translate(), delegate { MainMenuDrawer.CloseMainTab(); Find.WindowStack.Add(new Dialog_InterfaceOptions()); }); list.Add(item); } if (Game.Mode == GameMode.Entry) { item = new ListableOption("Mods".Translate(), delegate { Find.WindowStack.Add(new Page_ModsConfig()); }); list.Add(item); item = new ListableOption("Credits".Translate(), delegate { Find.WindowStack.Add(new Page_Credits()); }); list.Add(item); } if (Game.Mode == GameMode.MapPlaying) { Action action = delegate { Find.WindowStack.Add(new Dialog_Confirm("ConfirmQuit".Translate(), delegate { Application.LoadLevel("Entry"); }, true)); }; item = new ListableOption("QuitToMainMenu".Translate(), action); list.Add(item); Action action2 = delegate { Find.WindowStack.Add(new Dialog_Confirm("ConfirmQuit".Translate(), delegate { Root.Shutdown(); }, true)); }; item = new ListableOption("QuitToOS".Translate(), action2); list.Add(item); } else { item = new ListableOption("QuitToOS".Translate(), delegate { Root.Shutdown(); }); list.Add(item); } Rect rect4 = rect2.ContractedBy(17f); OptionListingUtility.DrawOptionListing(rect4, list); Text.Font = GameFont.Small; List <ListableOption> list2 = new List <ListableOption>(); ListableOption item2 = new ListableOption_WebLink("FictionPrimer".Translate(), "https://docs.google.com/document/d/1pIZyKif0bFbBWten4drrm7kfSSfvBoJPgG9-ywfN8j8/pub", MainMenuDrawer.IconBlog); list2.Add(item2); item2 = new ListableOption_WebLink("LudeonBlog".Translate(), "http://ludeon.com/blog", MainMenuDrawer.IconBlog); list2.Add(item2); item2 = new ListableOption_WebLink("Forums".Translate(), "http://ludeon.com/forums", MainMenuDrawer.IconForums); list2.Add(item2); item2 = new ListableOption_WebLink("OfficialWiki".Translate(), "http://rimworldwiki.com", MainMenuDrawer.IconBlog); list2.Add(item2); item2 = new ListableOption_WebLink("TynansTwitter".Translate(), "https://twitter.com/TynanSylvester", MainMenuDrawer.IconTwitter); list2.Add(item2); item2 = new ListableOption_WebLink("TynansDesignBook".Translate(), "http://tynansylvester.com/book", MainMenuDrawer.IconBook); list2.Add(item2); item2 = new ListableOption_WebLink("HelpTranslate".Translate(), "http://ludeon.com/forums/index.php?topic=2933.0", MainMenuDrawer.IconForums); list2.Add(item2); Rect rect5 = rect3.ContractedBy(17f); float num = OptionListingUtility.DrawOptionListing(rect5, list2); GUI.BeginGroup(rect5); if (Game.Mode == GameMode.Entry && Widgets.ImageButton(new Rect(0f, num + 10f, 64f, 32f), LanguageDatabase.activeLanguage.icon)) { List <FloatMenuOption> list3 = new List <FloatMenuOption>(); foreach (LoadedLanguage current in LanguageDatabase.AllLoadedLanguages) { LoadedLanguage localLang = current; list3.Add(new FloatMenuOption(localLang.FriendlyNameNative, delegate { LanguageDatabase.SelectLanguage(localLang); Prefs.Save(); }, MenuOptionPriority.Medium, null, null)); } Find.WindowStack.Add(new FloatMenu(list3, false)); } GUI.EndGroup(); }