Ejemplo n.º 1
0
 private void ButtonCreate(Rect rect)
 {
     GUILayout.BeginHorizontal();
     GUILayout.FlexibleSpace();
     if (GUILayout.Button("Create Locales"))
     {
         LocalizationSO localization     = LocalizationUtility.RetrieveLocalization();
         string         pathLocalization = AssetDatabase.GetAssetPath(localization);
         if (localization != null && string.IsNullOrEmpty(pathLocalization) == false)
         {
             foreach (LocaleLanguageEditor language in _mInformations.GetLanguagesSelected())
             {
                 if (localization.LocaleExists(language._mLanguage) == false)
                 {
                     string pathLocale = Path.Combine(Path.GetDirectoryName(pathLocalization), "Locale - " + language._mName + ".asset");
                     Debug.Log(pathLocale);
                     LocalizationLocaleSO locale = ScriptableObject.CreateInstance <LocalizationLocaleSO>();
                     locale.Init(language._mLanguage, language._mName, language._mCode);
                     localization.AddLocale(locale);
                     AssetDatabase.CreateAsset(locale, pathLocale);
                     EditorUtility.SetDirty(localization);
                     AssetDatabase.SaveAssets();
                     AssetDatabase.Refresh();
                 }
             }
         }
     }
     GUILayout.EndHorizontal();
 }
        private void Scroll(Rect rect)
        {
            GUILayout.BeginHorizontal(GUI.skin.box);

            _mScrollviewPosition = GUILayout.BeginScrollView(_mScrollviewPosition, false, false);

            List <LocalizationLocaleSO> locales = _mLocalization.Locales;

            for (int i = 0; i < locales.Count; i++)
            {
                LocalizationLocaleSO locale = locales[i];

                GUIStyle styleSelected    = new GUIStyle();
                GUIStyle styleHorizontal  = new GUIStyle();
                GUIStyle styleHorizontal2 = new GUIStyle();

                if (EditorGUIUtility.isProSkin)
                {
                    styleHorizontal.normal.background  = MakeTex(new Color(0.2f, 0.2f, 0.2f));
                    styleHorizontal2.normal.background = MakeTex(new Color(0.3f, 0.3f, 0.3f));
                }
                else
                {
                    styleHorizontal.normal.background  = MakeTex(new Color(0.8f, 0.8f, 0.8f));
                    styleHorizontal2.normal.background = MakeTex(new Color(0.9f, 0.9f, 0.9f));
                }

                styleSelected = (i % 2 == 0) ? (styleHorizontal) : (styleHorizontal2);

                GUILayout.BeginHorizontal(styleSelected);

                GUILayout.BeginHorizontal(GUILayout.Width((rect.width / 2)));

                LocaleLanguageEditor languageAssociated = _mInformations.GetLanguage(locale.Language);
                bool selected = (languageAssociated != null) ? (languageAssociated._mSelected) : (true);
                selected = GUILayout.Toggle(selected, locale.Name);
                _mInformations.SetLanguage(locale.Language, selected);

                GUILayout.EndHorizontal();

                GUILayout.EndHorizontal();
            }

            GUILayout.EndScrollView();

            GUILayout.EndHorizontal();
        }
        private void Footer(Rect rect)
        {
            GUILayout.BeginVertical();

            GUILayout.BeginHorizontal();

            EditorGUI.BeginChangeCheck();

            GUILayout.Label("Key Mapper", GUILayout.MaxWidth(100));
            _mInformations.CreateTableSelected = (LocalizationAssetTableSO)EditorGUILayout.ObjectField(_mInformations.CreateTableSelected, typeof(LocalizationAssetTableSO), false);
            GUILayout.EndHorizontal();

            if (EditorGUI.EndChangeCheck())
            {
                Repaint();
            }

            if (_mInformations.CreateTableSelected == null)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("Table name", GUILayout.MaxWidth(100));
                _mInformations.TextTableName = GUILayout.TextField(_mInformations.TextTableName);
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("Type", GUILayout.MaxWidth(100));
                LocalizationAssetType type = LocalizationAssetType.Audio;
                type = (LocalizationAssetType)EditorGUILayout.EnumPopup(type);
                GUILayout.EndHorizontal();
            }

            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Create", GUILayout.MaxWidth(100)))
            {
                if (_mLocalization != null && _mInformations.CreateTableSelected)
                {
                    LocalizationAssetTableSO table = _mInformations.CreateTableSelected;
                    string tablePath       = AssetDatabase.GetAssetPath(table);
                    string tableFolderPath = Path.GetDirectoryName(tablePath);

                    foreach (LocaleLanguageEditor language in _mInformations.GetLanguagesSelected())
                    {
                        string potentialPath        = Path.Combine(tableFolderPath, table.TableName + " - " + language._mName + ".asset");
                        LocalizationLocaleSO locale = _mLocalization.GetLocale(language._mLanguage);
                        if (locale != null && table.LocaleAssetExist(language._mLanguage) == false && File.Exists(potentialPath) == false)
                        {
                            LocalizationLocaleAssetsSO localeAssets = ScriptableObject.CreateInstance <LocalizationLocaleAssetsSO>();
                            localeAssets.Init(language._mLanguage);
                            table.LocalesAssets.Add(localeAssets);

                            AssetDatabase.CreateAsset(localeAssets, potentialPath);
                            EditorUtility.SetDirty(table);
                            AssetDatabase.SaveAssets();
                            AssetDatabase.Refresh();
                        }
                    }
                }
                else if (_mLocalization != null && string.IsNullOrEmpty(_mInformations.TextTableName) == false && _mLocalization.AssetsTableExists(_mInformations.TextTableName) == false)
                {
                    List <LocalizationLocaleAssetsSO> localesAssets = new List <LocalizationLocaleAssetsSO>();
                    string pathLocalizationAsset  = AssetDatabase.GetAssetPath(_mLocalization);
                    string pathLocalizationFolder = Path.GetDirectoryName(pathLocalizationAsset);
                    string tableName = _mInformations.TextTableName;

                    AssetDatabase.CreateFolder(pathLocalizationFolder, tableName);

                    // Create the sub asset for locale
                    foreach (LocaleLanguageEditor language in _mInformations.GetLanguagesSelected())
                    {
                        LocalizationLocaleSO locale = _mLocalization.GetLocale(language._mLanguage);
                        if (locale != null)
                        {
                            string pathAssetTableLocale             = Path.Combine(pathLocalizationFolder, tableName, _mInformations.TextTableName + " - " + language._mName + ".asset");
                            LocalizationLocaleAssetsSO localeAssets = ScriptableObject.CreateInstance <LocalizationLocaleAssetsSO>();
                            localeAssets.Init(language._mLanguage);
                            localesAssets.Add(localeAssets);

                            AssetDatabase.CreateAsset(localeAssets, pathAssetTableLocale);
                        }
                    }

                    // Create the asset table
                    string pathAssetTable          = Path.Combine(pathLocalizationFolder, tableName, _mInformations.TextTableName + " - Mapper.asset");
                    LocalizationAssetTableSO table = ScriptableObject.CreateInstance <LocalizationAssetTableSO>();
                    table.Init(_mInformations.TextTableName, localesAssets);

                    _mLocalization.AddAssetTable(table);
                    AssetDatabase.CreateAsset(table, pathAssetTable);
                    EditorUtility.SetDirty(_mLocalization);
                    AssetDatabase.SaveAssets();
                    AssetDatabase.Refresh();
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.EndVertical();
        }