Ejemplo n.º 1
0
        public WWW Import_Google_CreateWWWcall(bool ForceUpdate, bool justCheck)
        {
            if (!HasGoogleSpreadsheet())
            {
                return(null);
            }

            string savedVersion = PersistentStorage.GetSetting_String("I2SourceVersion_" + GetSourcePlayerPrefName(), Google_LastUpdatedVersion);

            if (savedVersion.Length > 19)             // Check for corruption
            {
                savedVersion = string.Empty;
            }

#if !UNITY_EDITOR
            if (IsNewerVersion(savedVersion, Google_LastUpdatedVersion))
            {
                Google_LastUpdatedVersion = savedVersion;
            }
#endif

            string query = string.Format("{0}?key={1}&action=GetLanguageSource&version={2}",
                                         LocalizationManager.GetWebServiceURL(this),
                                         Google_SpreadsheetKey,
                                         ForceUpdate ? "0" : Google_LastUpdatedVersion);
#if UNITY_EDITOR
            if (justCheck)
            {
                query += "&justcheck=true";
            }
#endif
            WWW www = new WWW(query);
            return(www);
        }
Ejemplo n.º 2
0
        public void Import_Google_FromCache()
        {
            if (GoogleUpdateFrequency == eGoogleUpdateFrequency.Never)
            {
                return;
            }

            if (!I2Utils.IsPlaying())
            {
                return;
            }

            string PlayerPrefName = GetSourcePlayerPrefName();
            string I2SavedData    = PersistentStorage.LoadFile(PersistentStorage.eFileType.Persistent, "I2Source_" + PlayerPrefName + ".loc", false);

            if (string.IsNullOrEmpty(I2SavedData))
            {
                return;
            }

            if (I2SavedData.StartsWith("[i2e]", StringComparison.Ordinal))
            {
                I2SavedData = StringObfucator.Decode(I2SavedData.Substring(5, I2SavedData.Length - 5));
            }

            //--[ Compare with current version ]-----
            bool   shouldUpdate            = false;
            string savedSpreadsheetVersion = Google_LastUpdatedVersion;

            if (PersistentStorage.HasSetting("I2SourceVersion_" + PlayerPrefName))
            {
                savedSpreadsheetVersion = PersistentStorage.GetSetting_String("I2SourceVersion_" + PlayerPrefName, Google_LastUpdatedVersion);
//				Debug.Log (Google_LastUpdatedVersion + " - " + savedSpreadsheetVersion);
                shouldUpdate = IsNewerVersion(Google_LastUpdatedVersion, savedSpreadsheetVersion);
            }

            if (!shouldUpdate)
            {
                PersistentStorage.DeleteFile(PersistentStorage.eFileType.Persistent, "I2Source_" + PlayerPrefName + ".loc", false);
                PersistentStorage.DeleteSetting("I2SourceVersion_" + PlayerPrefName);
                return;
            }

            if (savedSpreadsheetVersion.Length > 19)             // Check for corruption from previous versions
            {
                savedSpreadsheetVersion = string.Empty;
            }
            Google_LastUpdatedVersion = savedSpreadsheetVersion;

            //Debug.Log ("[I2Loc] Using Saved (PlayerPref) data in 'I2Source_"+PlayerPrefName+"'" );
            Import_Google_Result(I2SavedData, eSpreadsheetUpdateMode.Replace);
        }
        static void SelectStartupLanguage()
        {
            if (Sources.Count == 0)
            {
                return;
            }

            // Use the system language if there is a source with that language,
            // or pick any of the languages provided by the sources

            string SavedLanguage = PersistentStorage.GetSetting_String("I2 Language", string.Empty);
            string SysLanguage   = GetCurrentDeviceLanguage();

            // Try selecting the System Language
            // But fallback to the first language found  if the System Language is not available in any source

            if (!string.IsNullOrEmpty(SavedLanguage) && HasLanguage(SavedLanguage, Initialize: false, SkipDisabled: true))
            {
                SetLanguageAndCode(SavedLanguage, GetLanguageCode(SavedLanguage));
                return;
            }

            if (!Sources [0].IgnoreDeviceLanguage)
            {
                // Check if the device language is supported.
                // Also recognize when not region is set ("English (United State") will be used if sysLanguage is "English")
                string ValidLanguage = GetSupportedLanguage(SysLanguage, true);
                if (!string.IsNullOrEmpty(ValidLanguage))
                {
                    SetLanguageAndCode(ValidLanguage, GetLanguageCode(ValidLanguage), false);
                    return;
                }
            }

            //--[ Use first language that its not disabled ]-----------
            for (int i = 0, imax = Sources.Count; i < imax; ++i)
            {
                if (Sources[i].mLanguages.Count > 0)
                {
                    for (int j = 0; j < Sources[i].mLanguages.Count; ++j)
                    {
                        if (Sources[i].mLanguages[j].IsEnabled())
                        {
                            SetLanguageAndCode(Sources[i].mLanguages[j].Name, Sources[i].mLanguages[j].Code, false);
                            return;
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        // When JustCheck is true, importing from google will not download any data, just detect if the Spreadsheet is up-to-date
        public void Import_Google(bool ForceUpdate, bool justCheck)
        {
            if (!ForceUpdate && GoogleUpdateFrequency == eGoogleUpdateFrequency.Never)
            {
                return;
            }

            if (!I2Utils.IsPlaying())
            {
                return;
            }

            #if UNITY_EDITOR
            if (justCheck && GoogleInEditorCheckFrequency == eGoogleUpdateFrequency.Never)
            {
                return;
            }
            #endif

            #if UNITY_EDITOR
            var updateFrequency = GoogleInEditorCheckFrequency;
            #else
            var updateFrequency = GoogleUpdateFrequency;
            #endif

            string PlayerPrefName = GetSourcePlayerPrefName();
            if (!ForceUpdate && updateFrequency != eGoogleUpdateFrequency.Always)
            {
                #if UNITY_EDITOR
                string sTimeOfLastUpdate = UnityEditor.EditorPrefs.GetString("LastGoogleUpdate_" + PlayerPrefName, "");
                #else
                string sTimeOfLastUpdate = PersistentStorage.GetSetting_String("LastGoogleUpdate_" + PlayerPrefName, "");
                #endif
                DateTime TimeOfLastUpdate;
                try
                {
                    if (DateTime.TryParse(sTimeOfLastUpdate, out TimeOfLastUpdate))
                    {
                        double TimeDifference = (DateTime.Now - TimeOfLastUpdate).TotalDays;
                        switch (updateFrequency)
                        {
                        case eGoogleUpdateFrequency.Daily: if (TimeDifference < 1)
                            {
                                return;
                            }
                            break;

                        case eGoogleUpdateFrequency.Weekly: if (TimeDifference < 8)
                            {
                                return;
                            }
                            break;

                        case eGoogleUpdateFrequency.Monthly: if (TimeDifference < 31)
                            {
                                return;
                            }
                            break;

                        case eGoogleUpdateFrequency.OnlyOnce: return;
                        }
                    }
                }
                catch (Exception)
                { }
            }
            #if UNITY_EDITOR
            UnityEditor.EditorPrefs.SetString("LastGoogleUpdate_" + PlayerPrefName, DateTime.Now.ToString());
            #else
            PersistentStorage.SetSetting_String("LastGoogleUpdate_" + PlayerPrefName, DateTime.Now.ToString());
            #endif

            //--[ Checking google for updated data ]-----------------
            CoroutineManager.Start(Import_Google_Coroutine(justCheck));
        }