/// <summary> /// 上传组件配置 /// </summary> private void UpdateCompConfig(Action _cb = null) { if (m_qUpdateComp.Count > 0) { CompConfigData ccd = m_qUpdateComp.Dequeue() as CompConfigData; HttpService.SaveCompConfig(ccd.m_strCode, ccd.m_jsData.ToJson(), (bS, resp) => { if (bS) { Debug.LogWarning(string.Format("组件:{0},配置更新成功:{1}", ccd.m_strCode, resp.WwwText)); } else { Debug.LogError(string.Format("组件:{0},配置更新失败:{1}", ccd.m_strCode, resp.Error)); JsonData jd = new JsonData(); jd["Code"] = ccd.m_strCode; // 上传失败的,先保存下来 if (code_CompConfig.ContainsKey(ccd.m_strCode) && !m_pUpdateErComp.Contains(ccd)) { m_pUpdateErComp.Add(ccd); } } UpdateCompConfig(_cb); Debug.Log(string.Format("剩余组件个数:{0}", m_qUpdateComp.Count)); }); } else { // 弹框提示失败组件,点击重新上传 if (m_pUpdateErComp.Count > 0) { string strTips = string.Format("组件上传失败个数:{0} /n点击【确定】按钮,失败重传!", m_pUpdateErComp.Count); LogicUtils.Instance.OnAlert(strTips, () => { m_qUpdateComp = new Queue <CompConfigData>(m_pUpdateErComp); UpdateCompConfig(_cb); }); } else { if (_cb != null) { _cb(); } LogicUtils.Instance.OnAlert("组件配置上传完成!"); } } }
/// <summary> /// 修改,新增到服务器 /// </summary> /// <param name="_msg"></param> private void SaveToServer(Message _msg) { string strNewTag = _msg["tag"] as string; string strNewShowName = _msg["name"] as string; m_currentCom.OnAffirm(m_rNewModel, m_rNewImg, strNewTag, strNewShowName); // 遍历所有的需要更新的组件 m_pMemeryRes.Clear(); m_qUpdateComp = new Queue <CompConfigData>(); code_CompConfig = new Dictionary <string, CompConfigData>(); m_pUpdateErComp = new List <CompConfigData>(); for (int i = 0; i < m_pComProperty.Count; i++) { ComProperty cpp = m_pComProperty[i]; if (cpp.m_bNeedUpdate) { CompConfigData ccd = new CompConfigData(); ccd.m_jsData = cpp.m_infoJson; ccd.m_strCode = cpp.m_strCode; m_qUpdateComp.Enqueue(ccd); code_CompConfig.AddOrReplace(ccd.m_strCode, ccd); if (cpp.m_rNewImg != null) { m_pMemeryRes.Add(cpp.m_rNewImg); } if (cpp.m_rNewModel != null) { m_pMemeryRes.Add(cpp.m_rNewModel); } } } // 先上传资源,再上传配置 UpdateRes(() => { UpdateCompConfig(() => { // 刷新列表 RefreshCom(); }); }); }
/// <summary> /// 解析配置 /// </summary> /// <param name="_strJson"></param> private void ReadCompDataForUpdate(string _strJson) { JsonData ConfigJD = JsonMapper.ToObject(_strJson); JsonData jdNewCompConfig = JsonUtils.EmptyJsonArray; int nCount = 0; StringBuilder sb = new StringBuilder(); // 所有组件分类 for (int iClass = 0, lenClass = ConfigJD.Count; iClass < lenClass; iClass++) { JsonData classJD = ConfigJD[iClass]; //string strKey = classJD.ReadString("name"); string strInfo = classJD.ReadString("info"); JsonData info = JsonMapper.ToObject(strInfo); //string strTag = info.ReadString("tag"); //string strShowName = info.ReadString("name"); //string strPicName = info.ReadString("picName"); //string strPicCrc = info.ReadString("picCrc"); string strCode = info.ReadString("code"); string strData = info.ReadString("data"); if (string.IsNullOrEmpty(strData)) { Debug.LogError("Json Error:" + classJD.ToJson()); } JsonData jdData = JsonMapper.ToObject(strData); JsonData dataJD = jdData; string strLowerCode = strCode.ToLower(); if (resName_Crc.ContainsKey(strLowerCode)) { JsonData jdNew = resName_Crc[strLowerCode]; JsonData jdNewData = JsonUtils.EmptyJsonArray; CompConfigData ccd = new CompConfigData(); ccd.m_strCode = strCode; if (dataJD.Count > 0) { JsonData jdFbx = dataJD[0]; jdFbx["fileName"] = jdNew.ReadString("Name"); jdFbx["fileCrc"] = jdNew.ReadString("Crc"); jdFbx["type"] = "assetbundle"; jdFbx["children"] = JsonUtils.EmptyJsonArray; jdNewData.Add(jdFbx); info["data"] = jdNewData.ToJson(); classJD["info"] = info.ToJson(); jdNewCompConfig.Add(classJD); nCount++; resName_Crc.Remove(strLowerCode); ccd.m_jsData = info; code_CompConfig.Add(strCode, ccd); m_qUpdateComp.Enqueue(ccd); } } } sb.Append("-------------------------新模型匹配失败---------------------------------\n\n"); foreach (var item in resName_Crc) { sb.Append(item.Key); sb.Append("\n"); } Utils.SaveInfo(jdNewCompConfig.ToJson(), "新组件AB配置"); Debug.LogWarning(string.Format("替换成功个数:{0}", nCount)); Utils.SaveInfo(sb.ToString(), "替换失败列表"); // 测试 Debug.Log("读取CompLibConfig完成!"); m_pUpdateErComp.Clear(); UpdateCompConfig(() => { // 刷新组件列表 RefreshCom(); }); }