コード例 #1
0
        /// <summary>
        /// Handler for UMM's OnGUI event. Displays the language chooser and
        /// every tweak's settings GUI.
        /// </summary>
        /// <param name="modEntry">UMM's mod entry for AdofaiTweaks.</param>
        private static void OnGUI(UnityModManager.ModEntry modEntry)
        {
            // Set some default GUI settings for better layouts
            if (GlobalSettings.Language == LanguageEnum.KOREAN)
            {
                GUI.skin.button.font        = TweakAssets.KoreanNormalFont;
                GUI.skin.label.font         = TweakAssets.KoreanNormalFont;
                GUI.skin.textArea.font      = TweakAssets.KoreanNormalFont;
                GUI.skin.textField.font     = TweakAssets.KoreanNormalFont;
                GUI.skin.toggle.font        = TweakAssets.KoreanNormalFont;
                GUI.skin.button.fontSize    = 15;
                GUI.skin.label.fontSize     = 15;
                GUI.skin.textArea.fontSize  = 15;
                GUI.skin.textField.fontSize = 15;
                GUI.skin.toggle.fontSize    = 15;
            }
            GUI.skin.toggle = new GUIStyle(GUI.skin.toggle)
            {
                margin = new RectOffset(0, 4, 6, 6),
            };
            GUI.skin.label.wordWrap = false;

            GUILayout.Space(4);

            // Language chooser
            GUILayout.BeginHorizontal();
            GUILayout.Space(4);
            GUILayout.Label(
                TweakStrings.Get(TranslationKeys.Global.GLOBAL_LANGUAGE),
                new GUIStyle(GUI.skin.label)
            {
                fontStyle = GlobalSettings.Language == LanguageEnum.KOREAN
                        ? FontStyle.Normal
                        : FontStyle.Bold,
                font = GlobalSettings.Language == LanguageEnum.KOREAN
                        ? TweakAssets.KoreanBoldFont
                        : null,
            });
            foreach (LanguageEnum language in Enum.GetValues(typeof(LanguageEnum)))
            {
                string langString =
                    TweakStrings.GetForLanguage(TranslationKeys.Global.LANGUAGE_NAME, language);

                // Set special styles for selected and Korean language
                GUIStyle style = new GUIStyle(GUI.skin.button);
                if (language == GlobalSettings.Language)
                {
                    if (language == LanguageEnum.KOREAN)
                    {
                        style.font     = TweakAssets.KoreanBoldFont;
                        style.fontSize = 15;
                    }
                    else
                    {
                        style.fontStyle = FontStyle.Bold;
                    }
                }
                else if (language == LanguageEnum.KOREAN)
                {
                    style.font     = TweakAssets.KoreanNormalFont;
                    style.fontSize = 15;
                }

                bool click = GUILayout.Button(langString, style);
                if (click)
                {
                    GlobalSettings.Language = language;
                    foreach (TweakRunner runner in tweakRunners)
                    {
                        runner.OnLanguageChange();
                    }
                }
            }
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            // Show each tweak's GUI
            GUILayout.Space(4);
            foreach (TweakRunner runner in tweakRunners)
            {
                runner.OnGUI();
            }

            // Reset GUI settings to defaults
            GUI.skin.button.font        = null;
            GUI.skin.label.font         = null;
            GUI.skin.textArea.font      = null;
            GUI.skin.textField.font     = null;
            GUI.skin.toggle.font        = null;
            GUI.skin.button.fontSize    = 0;
            GUI.skin.label.fontSize     = 0;
            GUI.skin.textArea.fontSize  = 0;
            GUI.skin.textField.fontSize = 0;
            GUI.skin.toggle.fontSize    = 0;
        }