/// <summary> /// 每次Load之后都会清空原先的称号集合重新再刷新一次称号集合 /// </summary> /// <param name="json">Json.</param> public void LoadFromJson(string json) { LogManager.Log(json); if (string.IsNullOrEmpty(json)) { return; } if (roleTitleList != null) { roleTitleList.Clear(); } else { roleTitleList = new List <RoleTitleItemObject>(); } JsonData data = JsonMapper.ToObject(json); foreach (JsonData tempData in data) { RoleTitleItemObject item = new RoleTitleItemObject(); item.roletitleId = int.Parse(tempData.TryGetString("roletitleId")); item.roletitleCount = int.Parse(tempData.TryGetString("roletitleCount")); item.roleTitleStatus = (RoleTitleStatus)Enum.Parse(typeof(RoleTitleStatus), tempData.TryGetString("roletitleStatus")); roleTitleList.Add(item); } //LogManager.Log(roleTitleList.Count); }
/// <summary> /// 从服务器获取当前用户的所有称号数据并保存到本地 /// </summary> private void GetRoleTitleDataFromServer() { JsonData data = new JsonData(); data["userID"] = SelfPlayerData.Uuid; DancingWordAPI.Instance.RequestRoleTitleFromServer(data, (string result) => { //print(result); JsonData jsonResult = JsonMapper.ToObject(result)["data"]; roleTitleObjectList = new List <RoleTitleItemObject>(); for (int i = 0; i < jsonResult.Count; i++) { RoleTitleItemObject roleTitleItemObject = new RoleTitleItemObject(); roleTitleItemObject.roletitleId = int.Parse(jsonResult[i].TryGetString("titleID")); roleTitleItemObject.roletitleCount = int.Parse(jsonResult[i].TryGetString("progress")); roleTitleItemObject.roleTitleStatus = bool.Parse(jsonResult[i].TryGetString("isUsed")) != true ? RoleTitleStatus.NotWear : RoleTitleStatus.Weared; roleTitleObjectList.Add(roleTitleItemObject); } roleTitleObjectList.Sort(); SelfPlayerRoleTitleData.RoleTitleList = roleTitleObjectList; SaveDataUtils.Save <SelfPlayerRoleTitleData>(); CreateRoleTitleItem(); }, () => { SaveDataUtils.Load <SelfPlayerRoleTitleData>(); SelfPlayerRoleTitleData.RoleTitleList.Sort(); roleTitleObjectList = SelfPlayerRoleTitleData.RoleTitleList; if (roleTitleObjectList != null) { CreateRoleTitleItem(); } }); }
/// <summary> /// 根据服务端的返回数据去客户端获取数据 /// </summary> /// <returns>用户的某一个称号的内容</returns> /// <param name="roleTitleItem">服务端返回的角色的一条称号数据</param> public Dictionary <string, string> GetRoleTitleItem(RoleTitleItemObject roleTitleItem) { int index = 0; //0 代表不可以穿戴 1 代表可以穿戴 RoleTitleStatus roleTitleCanWear = RoleTitleStatus.UnFinished; Dictionary <string, string> roletitleItemDic = new Dictionary <string, string>(); int count = roleTitleItem.roletitleCount; //获取某一类称号的所有梯度 string[] levels = roletitleDic[roleTitleItem.roletitleId]["roletitlelevel"].Split('|'); for (int i = 0; i < levels.Length; i++) { //如果当前称号的梯度值大于所有梯度中的某一梯度 if (count >= int.Parse(levels[i])) { roleTitleCanWear = RoleTitleStatus.CanWear; //如果当前称号的梯度已经是所有梯度里面最大的之后相当于该称号的最高梯度已达到! if (i + 1 >= levels.Length) { index = i; count = int.Parse(levels[i]); } else { //如果还有比当前称号的梯度更大的梯度则客户端要显示的梯度是离当前梯度最近的梯度 if (count < int.Parse(levels[i + 1])) { index = i + 1; } } } } //当获得梯度之后则返回相应梯度的称号内容 string tempRoleTitleDesc = LanguageManager.languageType == LanguageType.Chinese ? roletitleDic[roleTitleItem.roletitleId]["roletitledesc"].Split('|')[index].Split('$')[0] : roletitleDic[roleTitleItem.roletitleId]["roletitledesc"].Split('|')[index].Split('$')[1]; roletitleItemDic.Add(RoleTitleEnum.RoleTitleDesc.ToString(), tempRoleTitleDesc); roletitleItemDic.Add(RoleTitleEnum.RoleTitleIcon.ToString(), roletitleDic[roleTitleItem.roletitleId]["roletitleicon"].Split('|')[index]); roletitleItemDic.Add(RoleTitleEnum.RoleTitleLevel.ToString(), roletitleDic[roleTitleItem.roletitleId]["roletitlelevel"].Split('|')[index]); roletitleItemDic.Add(RoleTitleEnum.RoleTitleIsWeared.ToString(), (roleTitleItem.roleTitleStatus).ToString()); roletitleItemDic.Add(RoleTitleEnum.RoleTitleIsCanWear.ToString(), roleTitleCanWear.ToString()); roletitleItemDic.Add(RoleTitleEnum.RoleTitleId.ToString(), roleTitleItem.roletitleId.ToString()); roletitleItemDic.Add(RoleTitleEnum.RoleTitleCount.ToString(), count.ToString()); return(roletitleItemDic); }