public static void Prefix(UIOptionWindow __instance) { UIComboBox comboBox = __instance.languageComp; var item = comboBox.itemIndex != -1 ? comboBox.Items[comboBox.itemIndex] : "English"; TranslationManager.SelectedLanguage = item; }
private static void ApplyComboBoxLanguage(UIOptionWindow __instance) { if (TranslationManager.CurrentLanguage != null) { for (int i = 0; i < TranslationManager.Langauges.Count; i++) { if (TranslationManager.CurrentLanguage.Settings.LanguageDisplayName == TranslationManager.Langauges[i].Settings.LanguageDisplayName) { __instance.languageComp.itemIndex = 3 + i; } } } }
private static void AddComboBoxLanguage(UIOptionWindow __instance) { if (!__instance.languageComp.Items.Contains("(Original) Française")) { __instance.languageComp.Items.Add("(Original) Française"); } foreach (var langauge in TranslationManager.Langauges) { if (!__instance.languageComp.Items.Contains(langauge.Settings.LanguageDisplayName)) { __instance.languageComp.Items.Add(langauge.Settings.LanguageDisplayName); } } }
public static void _OnCreate_Postfix(UIOptionWindow __instance) { tempToUICallbacks = new Dictionary <string, System.Action>(); tempMultiplayerOptions = new MultiplayerOptions(); // Add multiplayer tab button UIButton[] tabButtons = AccessTools.Field(__instance.GetType(), "tabButtons").GetValue(__instance) as UIButton[]; multiplayerTabIndex = tabButtons.Length; RectTransform lastTab = tabButtons[tabButtons.Length - 1].GetComponent <RectTransform>(); RectTransform beforeLastTab = tabButtons[tabButtons.Length - 2].GetComponent <RectTransform>(); float tabOffset = lastTab.anchoredPosition.x - beforeLastTab.anchoredPosition.x; multiplayerTab = Object.Instantiate(lastTab, lastTab.parent, true); multiplayerTab.anchoredPosition = new Vector2(lastTab.anchoredPosition.x + tabOffset, lastTab.anchoredPosition.y); UIButton[] newTabButtons = CollectionExtensions.AddToArray(tabButtons, multiplayerTab.GetComponent <UIButton>()); AccessTools.Field(__instance.GetType(), "tabButtons").SetValue(__instance, newTabButtons); // Update multiplayer tab text Text tabText = multiplayerTab.GetComponentInChildren <Text>(); tabText.GetComponent <Localizer>().enabled = false; tabText.text = "Multiplayer"; Text[] tabTexts = AccessTools.Field(__instance.GetType(), "tabTexts").GetValue(__instance) as Text[]; Text[] newTabTexts = CollectionExtensions.AddToArray(tabTexts, tabText); AccessTools.Field(__instance.GetType(), "tabTexts").SetValue(__instance, newTabTexts); // Add multiplayer tab content Tweener[] tabTweeners = AccessTools.Field(__instance.GetType(), "tabTweeners").GetValue(__instance) as Tweener[]; RectTransform contentTemplate = tabTweeners[0].GetComponent <RectTransform>(); multiplayerContent = Object.Instantiate(contentTemplate, contentTemplate.parent, true); multiplayerContent.name = "multiplayer-content"; Tweener[] newContents = CollectionExtensions.AddToArray(tabTweeners, multiplayerContent.GetComponent <Tweener>()); AccessTools.Field(__instance.GetType(), "tabTweeners").SetValue(__instance, newContents); UIButton[] revertButtons = AccessTools.Field(__instance.GetType(), "revertButtons").GetValue(__instance) as UIButton[]; RectTransform revertButton = multiplayerContent.Find("revert-button").GetComponent <RectTransform>(); UIButton[] newRevertButtons = CollectionExtensions.AddToArray(revertButtons, revertButton.GetComponent <UIButton>()); AccessTools.Field(__instance.GetType(), "revertButtons").SetValue(__instance, newRevertButtons); // Find control templates foreach (RectTransform child in multiplayerContent) { if (child != revertButton) { Object.Destroy(child.gameObject); } } checkboxTemplate = contentTemplate.Find("fullscreen").GetComponent <RectTransform>(); comboBoxTemplate = contentTemplate.Find("resolution").GetComponent <RectTransform>(); sliderTemplate = contentTemplate.Find("dofblur").GetComponent <RectTransform>(); inputTemplate = Object.Instantiate(checkboxTemplate, multiplayerContent, false); Object.Destroy(inputTemplate.Find("CheckBox").gameObject); RectTransform inputField = Object.Instantiate(UIRoot.instance.saveGameWindow.transform.Find("input-filename/InputField").GetComponent <RectTransform>(), inputTemplate, false); Vector2 fieldPosition = checkboxTemplate.GetChild(0).GetComponent <RectTransform>().anchoredPosition; inputField.anchoredPosition = new Vector2(fieldPosition.x + 6, fieldPosition.y); inputField.sizeDelta = new Vector2(inputField.sizeDelta.x, 35); inputTemplate.gameObject.SetActive(false); AddMultiplayerOptionsProperties(multiplayerContent); }
/// <summary> /// Create option combobox with selection of font /// </summary> private static void CreateFontCompoBox(UIOptionWindow __instance) { var parent = __instance.languageComp.transform.parent.parent; if (_originalUICount == null) { _originalUICount = parent.childCount; } var genericComboBox = __instance.tipLevelComp.transform.parent; if (languageComboBoxes == null) { languageComboBoxes = new UIComboBox[InGameFonts.Length]; } // Needs to initialize UI if (_originalUICount == parent.childCount) { Localization.OnLanguageChange += ReloadFontsComboBox; for (int i = 0; i < InGameFonts.Length; i++) { var fontName = InGameFonts[i]; // Add new combobox var root = Object.Instantiate(genericComboBox, genericComboBox.parent); root.gameObject.SetActive(true); Object.Destroy(root.GetComponent <Localizer>()); root.GetComponent <Text>().text = $"Font - {fontName}"; languageComboBoxes[i] = root.GetComponentInChildren <UIComboBox>(); UIComboBox languageComboBox = languageComboBoxes[i]; languageComboBox.Items.Clear(); languageComboBox.Items.Add(fontName); foreach (var installedFont in TextFontManager.InstalledFonts) { languageComboBox.Items.Add(installedFont); } languageComboBox.text = fontName; var settingsIndex = TextFontManager.GetSettingIndex(fontName); ConsoleLogger.LogWarning("TextFontManager.GetSettingIndex " + settingsIndex); languageComboBox.itemIndex = settingsIndex; languageComboBox.onItemIndexChange.AddListener(() => { var selectedFontName = languageComboBox.Items[languageComboBox.itemIndex]; if (selectedFontName == fontName) { TextFontManager.RestoreDefaultFont(fontName); } else { Font font; try { if (TranslationManager.CurrentLanguage == null || TranslationManager.CurrentLanguage.Fonts == null) { throw new InvalidOperationException(); } font = TranslationManager.CurrentLanguage.Fonts.First(font1 => font1.name == selectedFontName); } catch (InvalidOperationException) { font = Font.CreateDynamicFontFromOSFont(selectedFontName, 12); } TextFontManager.ApplyCustomFont(fontName, font); } }); // Set Option position var rectTransform = root.GetComponent <RectTransform>(); var childCountWithoutRestore = __instance.languageComp.transform.parent.parent.childCount - 2; var position = __instance.languageComp.transform.parent.GetComponent <RectTransform>().anchoredPosition; var offset = 40; rectTransform.anchoredPosition = new Vector2(position.x, position.y - offset * childCountWithoutRestore); } } }
public static void Postfix(UIOptionWindow __instance) { ApplyComboBoxLanguage(__instance); CreateFontCompoBox(__instance); }
public static void Prefix(UIOptionWindow __instance) { AddComboBoxLanguage(__instance); }