コード例 #1
0
        public IEnumerator DownloadSubData(EDATATYPE tData)
        {
            switch (tData)
            {
            case EDATATYPE.VOCABULARY:
                m_VocabularySet = new List <WordDictionary>();
                break;

            case EDATATYPE.PHRASAL_VERBS:
                m_PhrasalVerbSet = new List <WordDictionary>();
                break;

            case EDATATYPE.IDIOMS:
                m_IdiomsSet = new List <WordDictionary>();
                break;

            case EDATATYPE.EXPRESSIONS:
                m_ExpressionsSet = new List <WordDictionary>();
                break;

            case EDATATYPE.GRAMMAR:
                m_grammarSet = new List <GrammarDictionary>();
                break;
            }

            m_Result = ERESULT.SUCCESS;

            if (m_InfoFileList == null)
            {
                m_Result = ERESULT.FAIL;
                yield break;
            }

            int indexData = (int)tData;

            if (indexData >= m_InfoFileList.Count)
            {
                m_Result = ERESULT.FAIL;
                yield break;
            }

            string pictureFolder = Path.Combine(m_CloudDataUrl, m_PicturesFolder);

            for (int iData = 0; iData < m_InfoFileList[indexData].Data.Data.Count; iData++)
            {
                m_Progress.SetProgress("Downloading " + m_InfoFileList[indexData].Data.Data[iData].FileName);

                string fileName     = m_InfoFileList[indexData].Data.Data[iData].FileName + ".json";
                string dataCloudURL = m_CloudDataUrl + "/" + m_InfoFileList[indexData].DataFolderName + "/" + fileName;
                Debug.Log("<color=purple>" + "[LauncherControl.DownloadData] Retrieving (" + (iData + 1) + "/" + m_InfoFileList[indexData].Data.Data.Count + ") - URL: " + dataCloudURL + "</color>");
                WWW wwwDataFile = new WWW(dataCloudURL);

                yield return(wwwDataFile);

                if (!string.IsNullOrEmpty(wwwDataFile.text))
                {
                    string dataLocalURL = Path.Combine(Application.persistentDataPath, m_InfoFileList[indexData].DataFolderName);
                    dataLocalURL = Path.Combine(dataLocalURL, fileName);

                    if (SaveFileToLocal(dataLocalURL, wwwDataFile))
                    {
                        if (m_InfoFileList[indexData].DataType == EDATATYPE.VOCABULARY)
                        {
                            WordDictionary set = JsonUtility.FromJson <WordDictionary>(wwwDataFile.text);
                            m_VocabularySet.Add(set);

                            // Download images
                            for (int iWord = 0; iWord < set.Data.Count; iWord++)
                            {
                                if (!string.IsNullOrEmpty(set.Data[iWord].PictureName))
                                {
                                    string pictureUrl = Path.Combine(pictureFolder, set.Data[iWord].PictureName);

                                    Debug.Log("<color=purple>" + "[LauncherControl.DownloadData] Picture URL at " + pictureUrl + "</color>");

                                    WWW wwwPictureFile = new WWW(pictureUrl);

                                    yield return(wwwPictureFile);

                                    if (wwwPictureFile.texture != null)
                                    {
                                        Debug.Log("<color=purple>" + "[LauncherControl.RequestRecipe] Texture: (" + wwwPictureFile.texture.width + " x " + wwwPictureFile.texture.height + ")" + "</color>");

                                        Texture2D texture = new Texture2D(wwwPictureFile.texture.width, wwwPictureFile.texture.height, TextureFormat.DXT1, false);
                                        wwwPictureFile.LoadImageIntoTexture(texture);

                                        Rect rec = new Rect(0, 0, texture.width, texture.height);

                                        set.Data[iWord].Sprite = Sprite.Create(texture, rec, new Vector2(0.5f, 0.5f), 100);

                                        yield return(new WaitForEndOfFrame());


                                        string localPicture = Path.Combine(m_LocalPictureDirectory, set.Data[iWord].PictureName);

                                        // Load Picture in memory
                                        SaveFileToLocal(localPicture, wwwPictureFile);
                                    }
                                    else
                                    {
                                        m_Result = ERESULT.FAIL;
                                        break;
                                    }

                                    wwwPictureFile.Dispose();
                                    wwwPictureFile = null;
                                }
                            }
                        }
                        else if (m_InfoFileList[indexData].DataType == EDATATYPE.GRAMMAR)
                        {
                            GrammarDictionary set = JsonUtility.FromJson <GrammarDictionary>(wwwDataFile.text);
                            set.Category = m_InfoFileList[indexData].Data.Data[iData].FileName;
                            m_grammarSet.Add(set);
                        }
                        else if (m_InfoFileList[indexData].DataType == EDATATYPE.PHRASAL_VERBS)
                        {
                            WordDictionary set = JsonUtility.FromJson <WordDictionary>(wwwDataFile.text);
                            m_PhrasalVerbSet.Add(set);
                        }
                        else if (m_InfoFileList[indexData].DataType == EDATATYPE.EXPRESSIONS)
                        {
                            WordDictionary set = JsonUtility.FromJson <WordDictionary>(wwwDataFile.text);
                            m_ExpressionsSet.Add(set);
                        }
                        else if (m_InfoFileList[indexData].DataType == EDATATYPE.IDIOMS)
                        {
                            WordDictionary set = JsonUtility.FromJson <WordDictionary>(wwwDataFile.text);
                            m_IdiomsSet.Add(set);
                        }
                    }
                }
                else
                {
                    m_Result = ERESULT.FAIL;
                    break;
                }
            }

            m_Progress.Hide();
        }
コード例 #2
0
        private bool LoadSubData(EDATATYPE tData)
        {
            if (m_InfoFileList == null)
            {
                return(false);
            }

            int indexData = (int)tData;

            if (indexData >= m_InfoFileList.Count)
            {
                return(false);
            }

            // Read sub data
            for (int iData = 0; iData < m_InfoFileList[indexData].Data.Data.Count; iData++)
            {
                string localDataFile = Path.Combine(Application.persistentDataPath, m_InfoFileList[indexData].DataFolderName);
                localDataFile = Path.Combine(localDataFile, m_InfoFileList[indexData].Data.Data[iData].FileName + ".json");
                string jsonData = string.Empty;
                if (ReadFile(localDataFile, ref jsonData))
                {
                    if (m_InfoFileList[indexData].DataType == EDATATYPE.VOCABULARY)
                    {
                        WordDictionary set = JsonUtility.FromJson <WordDictionary>(jsonData);
                        m_VocabularySet.Add(set);

                        // Load images
                        for (int iWord = 0; iWord < set.Data.Count; iWord++)
                        {
                            if (!string.IsNullOrEmpty(set.Data[iWord].PictureName))
                            {
                                string pictureUrl = Path.Combine(m_LocalPictureDirectory, set.Data[iWord].PictureName);
                                if (File.Exists(pictureUrl))
                                {
                                    Texture2D texture = new Texture2D(2, 2);

                                    try
                                    {
                                        byte[] pictureData = File.ReadAllBytes(pictureUrl);

                                        texture.LoadImage(pictureData);

                                        Rect rec = new Rect(0, 0, texture.width, texture.width);

                                        set.Data[iWord].Sprite = Sprite.Create(texture, rec, new Vector2(0.5f, 0.5f), 100);
                                    }
                                    catch (Exception e)
                                    {
                                        Debug.Log("<color=red>" + "[LauncherControl.LoadSubData] There was an error trying to get file (image) " + pictureUrl + " ERROR: " + e.Message + "</color>");
                                        return(false);
                                    }
                                }
                            }
                        }
                    }
                    else if (m_InfoFileList[indexData].DataType == EDATATYPE.GRAMMAR)
                    {
                        GrammarDictionary set = JsonUtility.FromJson <GrammarDictionary>(jsonData);
                        set.Category = m_InfoFileList[indexData].Data.Data[iData].FileName;
                        m_grammarSet.Add(set);
                    }
                    else if (m_InfoFileList[indexData].DataType == EDATATYPE.PHRASAL_VERBS)
                    {
                        WordDictionary set = JsonUtility.FromJson <WordDictionary>(jsonData);
                        m_PhrasalVerbSet.Add(set);
                    }
                    else if (m_InfoFileList[indexData].DataType == EDATATYPE.EXPRESSIONS)
                    {
                        WordDictionary set = JsonUtility.FromJson <WordDictionary>(jsonData);
                        m_ExpressionsSet.Add(set);
                    }
                    else if (m_InfoFileList[indexData].DataType == EDATATYPE.IDIOMS)
                    {
                        WordDictionary set = JsonUtility.FromJson <WordDictionary>(jsonData);
                        m_IdiomsSet.Add(set);
                    }
                }
                else
                {
                    return(false);
                }
            }

            return(true);
        }