Exemplo n.º 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();
 }
Exemplo n.º 2
0
 /// <summary>
 /// 添加或更新资源
 /// </summary>
 /// <param name="_new_res"></param>
 public void AddOrUpdateResInfo(ResInfo _new_res)
 {
     if (ResDictionary.ContainsKey(_new_res.Name))
     {
         for (int i = 0; i < m_assets.Count; i++)
         {
             if (m_assets[i].Name.Equals(_new_res.Name, StringComparison.OrdinalIgnoreCase))
             {
                 m_assets[i] = _new_res;
                 ResDictionary[_new_res.Name] = _new_res;
                 break;
             }
         }
     }
     else
     {
         ResDictionary.Add(_new_res.Name, _new_res);
         m_assets.Add(_new_res);
     }
 }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
 /// <summary>
 /// 是否存在Asset
 /// </summary>
 /// <param name="_name">Asset名称</param>
 /// <returns></returns>
 public Boolean ContainAsset(String _name)
 {
     return(ResDictionary.ContainsKey(_name));
 }
Exemplo n.º 5
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));
 }