Beispiel #1
0
 /// <summary>
 /// 根据AppResConfig进行更新
 /// </summary>
 public void UpdateByAppResConfig(ResConfigFile _appConfig)
 {
     if (_appConfig.ResVersion < ResVersion)
     {
         return;
     }
     for (Int32 i = 0; i < _appConfig.m_assets.Count; ++i)
     {
         ResInfo localResInfo;
         var     appResInfo = _appConfig.m_assets[i];
         if (ResDictionary.TryGetValue(appResInfo.Name, out localResInfo))
         {
             if (appResInfo.Version > localResInfo.Version)
             {
                 appResInfo.CopyTo(localResInfo);
                 localResInfo.Location = AssetLocation.StreamingPath;
             }
         }
         else
         {
             localResInfo          = appResInfo.Clone();
             localResInfo.Location = AssetLocation.StreamingPath;
             m_assets.Add(localResInfo);
             ResDictionary.Add(localResInfo.Name, localResInfo);
         }
     }
     Save();
 }
Beispiel #2
0
        /// <summary>
        /// 获取更新列表
        /// </summary>
        /// <param name="_appConfig"></param>
        /// <param name="_serverConfig"></param>
        /// <param name="_updateList"></param>
        /// <returns>更新文件大小(字节)</returns>
        public Int64 GetUpdateList(ResConfigFile _appConfig, ResConfigFile _serverConfig, out LinkedList <ResInfo> _updateList, out Boolean _localConfigUpdated)
        {
            _localConfigUpdated = false;
            Int64 updateSize = 0;

            _updateList = new LinkedList <ResInfo>();
            for (Int32 i = 0; i < _serverConfig.m_assets.Count; ++i)
            {
                var     srvResInfo = _serverConfig.m_assets[i];
                ResInfo localResInfo;
                ResDictionary.TryGetValue(srvResInfo.Name, out localResInfo);
                ResInfo appResInfo;
                _appConfig.ResDictionary.TryGetValue(srvResInfo.Name, out appResInfo);

                // 无需更新
                if (localResInfo != null && !localResInfo.NeedUpdate(srvResInfo))
                {
                    continue;
                }

                if (appResInfo != null && !appResInfo.NeedUpdate(srvResInfo))
                {
                    localResInfo          = appResInfo.Clone();
                    localResInfo.Location = AssetLocation.StreamingPath;
                    AddOrUpdateResInfo(localResInfo);
                    Save();
                    _localConfigUpdated = true;
                }
                else
                {
                    localResInfo          = srvResInfo.Clone();
                    localResInfo.Location = AssetLocation.PersistentPath;
                    _updateList.AddLast(localResInfo);
                    updateSize += localResInfo.Size;
                }
            }
            return(updateSize);
        }
Beispiel #3
0
 /// <summary>
 /// 尝试获取AssetInfo
 /// </summary>
 /// <param name="_name">Asset名称</param>
 /// <param name="_res_info">返回的AssetInfo</param>
 /// <returns></returns>
 public Boolean TryGetAssetInfo(String _name, out ResInfo _res_info)
 {
     return(ResDictionary.TryGetValue(_name, out _res_info));
 }