BoxRankList.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using System;
  6. using Newtonsoft.Json.Linq;
  7. public class BoxRankList : MonoBehaviour
  8. {
  9. //显示赛季信息
  10. public Text seasonBar;
  11. /// <summary>
  12. /// 0: 全球,1: 本省,2: 本市
  13. /// </summary>
  14. int rankArea { get => GetComponentInParent<RankingView>().currentBtnIndex; }
  15. /// <summary>
  16. /// 9: 静止靶PK
  17. /// </summary>
  18. int rankGameType { get => 9 + GetComponentInParent<RankingView>().GetComponentInChildren<BoxRankGames>().currentBtnIndex; }
  19. void Awake()
  20. {
  21. GetRankListItemPrefab().SetActive(false);
  22. }
  23. void OnEnable()
  24. {
  25. Refresh();
  26. }
  27. Transform GetRankListItemParent()
  28. {
  29. return transform.Find("ScrollView/Viewport/Content");
  30. }
  31. GameObject GetRankListItemPrefab()
  32. {
  33. return GetRankListItemParent().Find("Item").gameObject;
  34. }
  35. GameObject GetMyRankItem()
  36. {
  37. return transform.Find("MyRankItem").gameObject;
  38. }
  39. public void Refresh()
  40. {
  41. GetMyRankItem().SetActive(false);
  42. ClearRankList();
  43. int rankArea_copy = rankArea;
  44. int rankGameType_copy = rankGameType;
  45. string countryCode = LoginMgr.myUserInfo.country;
  46. string stateCode = LoginMgr.myUserInfo.state;
  47. string cityCode = LoginMgr.myUserInfo.city;
  48. if (rankArea_copy != 0)
  49. {
  50. if (string.IsNullOrWhiteSpace(countryCode))
  51. {
  52. PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("你尚未设置所属地区,无法查看该排行榜!"));
  53. return;
  54. }
  55. }
  56. Action<JArray, JArray, string, JArray> cb = delegate (JArray rankList, JArray myRank , string seasonName,JArray seasonDate) {
  57. if (rankArea_copy != rankArea || rankGameType_copy != rankGameType) return;
  58. GetMyRankItem().SetActive(false);
  59. ClearRankList();
  60. //Debug.Log("seasonName:" + seasonName);
  61. //Debug.Log("seasonDate:" + seasonDate.ToString());
  62. if (seasonBar)
  63. {
  64. string strDate = seasonName + " ("; //start
  65. for (int i = 0; i < seasonDate.Count; i++)
  66. {
  67. DateTime dateTime = Convert.ToDateTime(seasonDate[i]);
  68. strDate += String.Format("{0:yyyy.M.d}", dateTime);
  69. if (i != seasonDate.Count - 1)
  70. {
  71. strDate += "~";
  72. }
  73. }
  74. strDate += ")"; //end
  75. seasonBar.text = strDate;
  76. }
  77. else {
  78. seasonBar.text = "";
  79. }
  80. foreach (var itemInfo in rankList)
  81. {
  82. int rankNum = itemInfo.Value<int>("rankNum");
  83. int userID = itemInfo.Value<int>("userID");
  84. int score = itemInfo.Value<int>("score");
  85. int avatarID = itemInfo.Value<int>("avatarID");
  86. string avatarUrl = itemInfo.Value<string>("avatarUrl");
  87. string nickname = itemInfo.Value<string>("nickname");
  88. string country = itemInfo.Value<string>("country");
  89. if (score <= 0) continue;
  90. GameObject o = GameObject.Instantiate(GetRankListItemPrefab(), GetRankListItemParent());
  91. o.SetActive(true);
  92. o.transform.Find("Rank1").gameObject.SetActive(rankNum == 1);
  93. o.transform.Find("Rank2").gameObject.SetActive(rankNum == 2);
  94. o.transform.Find("Rank3").gameObject.SetActive(rankNum == 3);
  95. o.transform.Find("RankNum").gameObject.SetActive(rankNum >= 4);
  96. if (rankNum >= 4)
  97. {
  98. o.transform.Find("RankNum").GetComponent<Text>().text = rankNum.ToString();
  99. }
  100. RoleMgr.SetAvatarToImage(
  101. o.transform.Find("Avatar/Sprite").GetComponent<Image>(),
  102. avatarID, avatarUrl
  103. );
  104. Transform _name = o.transform.Find("Name");
  105. Transform _score = o.transform.Find("Score");
  106. Transform _country = o.transform.Find("Country");
  107. _name.GetComponent<Text>().text = nickname;
  108. _score.GetComponent<Text>().text = score.ToString();
  109. if (rankArea == 0)
  110. {
  111. // string countryStr = JC.Unity.Picker.LocationParseComponent.ins.ParseNameByCode(country, "", "").Item1.Trim();
  112. // o.transform.Find("Country").GetComponent<Text>().text = countryStr;
  113. //后端返回的gps地理位置
  114. _country.GetComponent<Text>().text = country;
  115. }
  116. else
  117. {
  118. _country.GetComponent<Text>().text = stateCode;
  119. }
  120. if (rankNum <= 3)
  121. {
  122. _name.GetComponent<Text>().fontStyle = FontStyle.Bold;
  123. _score.GetComponent<Text>().fontStyle = FontStyle.Bold;
  124. _country.GetComponent<Text>().fontStyle = FontStyle.Bold;
  125. }
  126. }
  127. if (myRank.Count > 0)
  128. {
  129. JToken itemInfo = myRank[0];
  130. int rankNum = itemInfo.Value<int>("rankNum");
  131. int userID = itemInfo.Value<int>("userID");
  132. int score = itemInfo.Value<int>("score");
  133. int avatarID = itemInfo.Value<int>("avatarID");
  134. string avatarUrl = itemInfo.Value<string>("avatarUrl");
  135. string nickname = itemInfo.Value<string>("nickname");
  136. string country = itemInfo.Value<string>("country");
  137. GameObject o = GetMyRankItem();
  138. o.SetActive(true);
  139. o.transform.Find("Rank1").gameObject.SetActive(rankNum == 1);
  140. o.transform.Find("Rank2").gameObject.SetActive(rankNum == 2);
  141. o.transform.Find("Rank3").gameObject.SetActive(rankNum == 3);
  142. o.transform.Find("RankNum").gameObject.SetActive(rankNum >= 4);
  143. if (rankNum >= 4)
  144. {
  145. o.transform.Find("RankNum").GetComponent<Text>().text = rankNum.ToString();
  146. }
  147. RoleMgr.SetAvatarToImage(
  148. o.transform.Find("Avatar/Sprite").GetComponent<Image>(),
  149. avatarID, avatarUrl
  150. );
  151. o.transform.Find("Name").GetComponent<Text>().text = nickname;
  152. o.transform.Find("Score").GetComponent<Text>().text = score.ToString();
  153. if (rankArea == 0)
  154. {
  155. // string countryStr = JC.Unity.Picker.LocationParseComponent.ins.ParseNameByCode(country, "", "").Item1.Trim();
  156. // o.transform.Find("Country").GetComponent<Text>().text = countryStr;
  157. //后端返回的gps地理位置
  158. o.transform.Find("Country").GetComponent<Text>().text = country;
  159. }
  160. else
  161. {
  162. o.transform.Find("Country").GetComponent<Text>().text = stateCode;
  163. }
  164. }
  165. };
  166. //rankArea_copy == 0 ? 0 : 2 getRankList
  167. //没有赛季 getRankListByGameType
  168. //赛季目前使用 getSeasonRankListByGameType
  169. UserPlayer.ins.call("rankComp.getSeasonRankListByGameType", new object[] { rankArea_copy , rankGameType_copy, countryCode, stateCode, cityCode }, cb);
  170. }
  171. void ClearRankList()
  172. {
  173. Transform parent = GetRankListItemParent();
  174. for (int i = 1; i < parent.childCount; i++)
  175. {
  176. Destroy(parent.GetChild(i).gameObject);
  177. }
  178. }
  179. }