Esempio n. 1
0
        public static void Prefix(UIOptionWindow __instance)
        {
            UIComboBox comboBox = __instance.languageComp;
            var        item     = comboBox.itemIndex != -1
                ? comboBox.Items[comboBox.itemIndex]
                : "English";

            TranslationManager.SelectedLanguage = item;
        }
Esempio n. 2
0
 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;
             }
         }
     }
 }
Esempio n. 3
0
        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);
                }
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /// <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);
                }
            }
        }
Esempio n. 6
0
 public static void Postfix(UIOptionWindow __instance)
 {
     ApplyComboBoxLanguage(__instance);
     CreateFontCompoBox(__instance);
 }
Esempio n. 7
0
 public static void Prefix(UIOptionWindow __instance)
 {
     AddComboBoxLanguage(__instance);
 }