/// <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(); }
/// <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); } }
/// <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); }
/// <summary> /// 是否存在Asset /// </summary> /// <param name="_name">Asset名称</param> /// <returns></returns> public Boolean ContainAsset(String _name) { return(ResDictionary.ContainsKey(_name)); }
/// <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)); }