Пример #1
0
    private static void GenerateInfoFile(int categoryId, string dir)
    {
        DirectoryInfo dirInfo   = new DirectoryInfo(Application.streamingAssetsPath + "/" + dir + "/category_" + categoryId);
        var           fileInfos = dirInfo.GetFiles("*", SearchOption.AllDirectories).Where(s => !s.Name.ToLower().EndsWith(".meta") && !s.Name.EndsWith(".DS_Store"));

        ResConfig resConfig = new ResConfig();
        int       counter   = 0;

        foreach (FileInfo fileInfo in fileInfos)
        {
            ResConfigItem configItem = new ResConfigItem();

            configItem.index = counter++;

            configItem.name = Path.GetFullPath(fileInfo.FullName).Replace(Application.streamingAssetsPath + "/" + dir + "/", "");
            configItem.size = fileInfo.Length.ToString();

            byte[] platformFileBytes = GetFileBytes(Path.GetFullPath(fileInfo.FullName));
            configItem.md5 = GetMD5(platformFileBytes);

            resConfig.Items.Add(configItem);
        }

        string jsonContent = JsonUtility.ToJson(resConfig, true);

        File.WriteAllText(Application.streamingAssetsPath + "/" + dir + "/category_" + categoryId + "/config.json", jsonContent);
    }
Пример #2
0
        /// <summary>
        /// update the local resconfig after successfully downloaded a res
        /// </summary>
        private void UpdateResConfig(ResConfigItem item)
        {
            ResConfigItem oldItem = mLocalResConfig.Items.Find(e => e.name.Equals(item.name));

            if (oldItem != null)
            {
                mLocalResConfig.Items.Remove(oldItem);
            }
            mLocalResConfig.Items.Add(item);

            WriteToLocal(GetResConfigUrl(true, mCategoryId), JsonUtility.ToJson(mLocalResConfig), null);
        }
Пример #3
0
        /// <summary>
        /// Compare the reslist in the downloaded resconfig with that in the local resconfig.
        /// Also consider the dependencies according to block.manifest
        /// </summary>
        private List <ResConfigItem> GetDownloadList(string[] resList)
        {
            List <ResConfigItem> items = new List <ResConfigItem>();

            Func <string, bool> checkAdd = (resName) =>
            {
                ResConfigItem newItem = mUpdateResConfig.Items.Find(e => e.name.Equals(resName));
                if (newItem == null)
                {
                    UpdateState(DownloadState.Error, new ResUpdateMsg()
                    {
                        State   = DownloadState.Error,
                        MsgText = string.Format("Can't find {0} in config.json", resName)
                    });
                    return(false);
                }

                ResConfigItem oldItem = mLocalResConfig.Items.Find(e => e.name.Equals(resName));
                if (oldItem == null || !oldItem.md5.Equals(newItem.md5))
                {
                    if (!items.Exists(e => e.name.Equals(newItem.name)))
                    {
                        items.Add(newItem);
                    }
                }
                return(true);
            };

            foreach (string res in resList)
            {
                if (!checkAdd(res))
                {
                    return(null);
                }

                //find dependencies
                string[] dependencies = mABManifest.GetAllDependencies(res);
                foreach (string dpRes in dependencies)
                {
                    if (!checkAdd(dpRes))
                    {
                        return(null);
                    }
                }
            }

            return(items);
        }