コード例 #1
0
        private static void FetchUrl(string url, Action <string> onComplete)
        {
            using (var www = new WWW(url))
            {
                var startTime  = Time.realtimeSinceStartup;
                var timeOutSec = TimeOutSec;
                while (!www.isDone)
                {
                    if (Time.realtimeSinceStartup - startTime > timeOutSec)
                    {
                        LocalTextLogger.Error("GoogleSpreadSheetImporter : Timeout. Confirm spreadsheet setting.");
                        break;
                    }
                }

                if (!string.IsNullOrEmpty(www.error))
                {
                    LocalTextLogger.Error("GoogleSpreadSheetImporter : Api Network Error.");
                    return;
                }

                var csv = www.text;
                if (string.IsNullOrEmpty(csv))
                {
                    LocalTextLogger.Error("GoogleSpreadSheetImporter : Response body is Empty.");
                    return;
                }

                onComplete(csv);
            }
        }
コード例 #2
0
        public static void SyncGoogleSpreadSheetApi(Settings settings)
        {
            if (string.IsNullOrEmpty(settings.GoogleSpreadSheetUrl))
            {
                LocalTextLogger.Error("GoogleSpreadSheetImporter : Settings GoogleSpreadsheetUrl is Empty.");
                return;
            }

            FetchUrl(settings.GoogleSpreadSheetUrl, csv =>
            {
                AssetCreator.CreateAll(settings, csv);
            });
        }
コード例 #3
0
        public string Text(string key)
        {
            var text = "";

            try
            {
                text = currentLanguageTextSet[key];
            }
#pragma warning disable 168
            catch (NullReferenceException e)
#pragma warning restore 168
            {
                LocalTextLogger.Error("No value found for key {0}. Confirm TextSet Inspector.", key);
            }
            return(text);
        }
コード例 #4
0
        public static void CreateAll(Settings settings, string csv)
        {
            OnPreProcessImport += ReplaceNewline;

            CreteKeyDefinitionFile(settings, csv);
            try
            {
                CreateTextSet(settings, csv);
            }
#pragma warning disable 168
            catch (IndexOutOfRangeException e)
#pragma warning restore 168
            {
                LocalTextLogger.Error("Parse Fail.The number of columns may be incorrect");
            }

            AssetDatabase.Refresh();
        }
コード例 #5
0
        private static void CreateTextSet(Settings settings, string csv)
        {
            var textDataAssetPath = settings.TextSetAssetPath();

            var textData = AssetDatabase.LoadAssetAtPath <TextSet>(textDataAssetPath);

            if (!textData)
            {
                LocalTextLogger.Verbose("Create new TextSet");
                textData = ScriptableObject.CreateInstance <TextSet>();
                AssetDatabase.CreateAsset(textData, textDataAssetPath);
            }
            else
            {
                LocalTextLogger.Verbose("Update TextSet");
                textData.Clear();
            }

            const int indexOfKey  = 0;
            var       colIndex    = 2;
            var       settingList = settings.LanguageSettingList;
            var       separator   = settings.Separator();

            foreach (var info in settingList)
            {
                var textSet = new Dictionary <string, string>();
                ForEachRows(csv, separator, 0, colIndex, (key, text) =>
                {
                    if (OnPreProcessImport != null)
                    {
                        text = OnPreProcessImport(text);
                    }

                    textSet[key] = string.IsInterned(text) == null ? string.Intern(text) : text;
                });

                var language = new TextSet.Language(info.Language, textSet, info.IsDefault);
                textData.AddLanguage(language);
                colIndex++;
            }

            EditorUtility.SetDirty(textData);
            AssetDatabase.SaveAssets();
        }
コード例 #6
0
        public static void MenuItem()
        {
            LocalTextLogger.Info(Constant.MenuName.AssetMenuName);

            var assetRootPath = AssetDataBaseHelper.FirstAssetPathOrDefault("t:Object", "LocalizedText");

            if (string.IsNullOrEmpty(assetRootPath))
            {
                LocalTextLogger.Error("LocalizedText directory not found. " +
                                      "LocalizedText assets must be placed under LocalizedText directory.");
                return;
            }

            LocalTextLogger.Verbose("CreateSingletonSettingsMenu assetRootPath {0}", assetRootPath);

            var singletonSettings = AssetDataBaseHelper.FindScriptableObject <SingletonSettings>("LocalizedTextSettings");

            if (singletonSettings)
            {
                LocalTextLogger.Error("LocalizedTextSettings singleton settings already exist.");
                EditorGUIUtility.PingObject(singletonSettings);
                return;
            }

            singletonSettings                  = ScriptableObject.CreateInstance <SingletonSettings>();
            singletonSettings.name             = "LocalizedTextSettings";
            singletonSettings.TextSetAssetName = "TextSet";

            var resourcesDirectory = Path.Combine(assetRootPath, "Resources");

            if (!Directory.Exists(resourcesDirectory))
            {
                LocalTextLogger.Verbose("Create directory :{0}", resourcesDirectory);
                AssetDatabase.CreateFolder(assetRootPath, "Resources");
            }
            singletonSettings.TextSetGenerateDirectory = resourcesDirectory;

            singletonSettings.KeyDefinitionClassName = "TextSetKey";

            const string scripts   = "Scripts";
            const string generated = "Generated";

            var generatedDirectory = new[] { assetRootPath, scripts, generated }.Aggregate(Path.Combine);

            if (!Directory.Exists(generatedDirectory))
            {
                LocalTextLogger.Verbose("Create directory : {0}", generatedDirectory);
                AssetDatabase.CreateFolder(Path.Combine(assetRootPath, scripts), generated);
            }
            singletonSettings.KeyClassGenerateDirectory = generatedDirectory;

            singletonSettings.SelectedDataSource = Settings.DataSource.GoogleSpreadSheetAsWeb;
            singletonSettings.SelectedDataFormat = Settings.DataFormat.Tsv;

            const string editor   = "Editor";
            const string settings = "Settings";

            var settingsDirectory = new[] { assetRootPath, editor, settings }.Aggregate(Path.Combine);

            if (!Directory.Exists(settingsDirectory))
            {
                LocalTextLogger.Verbose("Create directory :{0}", settingsDirectory);
                AssetDatabase.CreateFolder(Path.Combine(assetRootPath, editor), settings);
            }

            var settingsPath = Path.Combine(settingsDirectory, "LocalizedTextSettings.asset");

            AssetDatabase.CreateAsset(singletonSettings, settingsPath);

            EditorUtility.SetDirty(singletonSettings);
            AssetDatabase.SaveAssets();
        }