using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System; using Newtonsoft.Json.Linq; public class BoxRankList : MonoBehaviour { //显示赛季信息 public Text seasonBar; /// /// 0: 全球,1: 本省,2: 本市 /// int rankArea { get => GetComponentInParent().currentBtnIndex; } /// /// 9: 静止靶PK /// int rankGameType { get => 9 + GetComponentInParent().GetComponentInChildren().currentBtnIndex; } void Awake() { GetRankListItemPrefab().SetActive(false); } void OnEnable() { Refresh(); } Transform GetRankListItemParent() { return transform.Find("ScrollView/Viewport/Content"); } GameObject GetRankListItemPrefab() { return GetRankListItemParent().Find("Item").gameObject; } GameObject GetMyRankItem() { return transform.Find("MyRankItem").gameObject; } public void Refresh() { GetMyRankItem().SetActive(false); ClearRankList(); int rankArea_copy = rankArea; int rankGameType_copy = rankGameType; string countryCode = LoginMgr.myUserInfo.country; string stateCode = LoginMgr.myUserInfo.state; string cityCode = LoginMgr.myUserInfo.city; if (rankArea_copy != 0) { if (string.IsNullOrWhiteSpace(countryCode)) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("你尚未设置所属地区,无法查看该排行榜!")); return; } } Action cb = delegate (JArray rankList, JArray myRank , string seasonName,JArray seasonDate) { if (rankArea_copy != rankArea || rankGameType_copy != rankGameType) return; GetMyRankItem().SetActive(false); ClearRankList(); //Debug.Log("seasonName:" + seasonName); //Debug.Log("seasonDate:" + seasonDate.ToString()); if (seasonBar) { string strDate = seasonName + " ("; //start for (int i = 0; i < seasonDate.Count; i++) { DateTime dateTime = Convert.ToDateTime(seasonDate[i]); strDate += String.Format("{0:yyyy.M.d}", dateTime); if (i != seasonDate.Count - 1) { strDate += "~"; } } strDate += ")"; //end seasonBar.text = strDate; } else { seasonBar.text = ""; } foreach (var itemInfo in rankList) { int rankNum = itemInfo.Value("rankNum"); int userID = itemInfo.Value("userID"); int score = itemInfo.Value("score"); int avatarID = itemInfo.Value("avatarID"); string avatarUrl = itemInfo.Value("avatarUrl"); string nickname = itemInfo.Value("nickname"); string country = itemInfo.Value("country"); if (score <= 0) continue; GameObject o = GameObject.Instantiate(GetRankListItemPrefab(), GetRankListItemParent()); o.SetActive(true); o.transform.Find("Rank1").gameObject.SetActive(rankNum == 1); o.transform.Find("Rank2").gameObject.SetActive(rankNum == 2); o.transform.Find("Rank3").gameObject.SetActive(rankNum == 3); o.transform.Find("RankNum").gameObject.SetActive(rankNum >= 4); if (rankNum >= 4) { o.transform.Find("RankNum").GetComponent().text = rankNum.ToString(); } RoleMgr.SetAvatarToImage( o.transform.Find("Avatar/Sprite").GetComponent(), avatarID, avatarUrl ); Transform _name = o.transform.Find("Name"); Transform _score = o.transform.Find("Score"); Transform _country = o.transform.Find("Country"); _name.GetComponent().text = nickname; _score.GetComponent().text = score.ToString(); if (rankArea == 0) { // string countryStr = JC.Unity.Picker.LocationParseComponent.ins.ParseNameByCode(country, "", "").Item1.Trim(); // o.transform.Find("Country").GetComponent().text = countryStr; //后端返回的gps地理位置 _country.GetComponent().text = country; } else { _country.GetComponent().text = stateCode; } if (rankNum <= 3) { _name.GetComponent().fontStyle = FontStyle.Bold; _score.GetComponent().fontStyle = FontStyle.Bold; _country.GetComponent().fontStyle = FontStyle.Bold; } } if (myRank.Count > 0) { JToken itemInfo = myRank[0]; int rankNum = itemInfo.Value("rankNum"); int userID = itemInfo.Value("userID"); int score = itemInfo.Value("score"); int avatarID = itemInfo.Value("avatarID"); string avatarUrl = itemInfo.Value("avatarUrl"); string nickname = itemInfo.Value("nickname"); string country = itemInfo.Value("country"); GameObject o = GetMyRankItem(); o.SetActive(true); o.transform.Find("Rank1").gameObject.SetActive(rankNum == 1); o.transform.Find("Rank2").gameObject.SetActive(rankNum == 2); o.transform.Find("Rank3").gameObject.SetActive(rankNum == 3); o.transform.Find("RankNum").gameObject.SetActive(rankNum >= 4); if (rankNum >= 4) { o.transform.Find("RankNum").GetComponent().text = rankNum.ToString(); } RoleMgr.SetAvatarToImage( o.transform.Find("Avatar/Sprite").GetComponent(), avatarID, avatarUrl ); o.transform.Find("Name").GetComponent().text = nickname; o.transform.Find("Score").GetComponent().text = score.ToString(); if (rankArea == 0) { // string countryStr = JC.Unity.Picker.LocationParseComponent.ins.ParseNameByCode(country, "", "").Item1.Trim(); // o.transform.Find("Country").GetComponent().text = countryStr; //后端返回的gps地理位置 o.transform.Find("Country").GetComponent().text = country; } else { o.transform.Find("Country").GetComponent().text = stateCode; } } }; //rankArea_copy == 0 ? 0 : 2 getRankList //没有赛季 getRankListByGameType //赛季目前使用 getSeasonRankListByGameType UserPlayer.ins.call("rankComp.getSeasonRankListByGameType", new object[] { rankArea_copy , rankGameType_copy, countryCode, stateCode, cityCode }, cb); } void ClearRankList() { Transform parent = GetRankListItemParent(); for (int i = 1; i < parent.childCount; i++) { Destroy(parent.GetChild(i).gameObject); } } }