| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- 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;
- /// <summary>
- /// 0: 全球,1: 本省,2: 本市
- /// </summary>
- int rankArea { get => GetComponentInParent<RankingView>().currentBtnIndex; }
- /// <summary>
- /// 9: 静止靶PK
- /// </summary>
- int rankGameType { get => 9 + GetComponentInParent<RankingView>().GetComponentInChildren<BoxRankGames>().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<JArray, JArray, string, JArray> 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<int>("rankNum");
- int userID = itemInfo.Value<int>("userID");
- int score = itemInfo.Value<int>("score");
- int avatarID = itemInfo.Value<int>("avatarID");
- string avatarUrl = itemInfo.Value<string>("avatarUrl");
- string nickname = itemInfo.Value<string>("nickname");
- string country = itemInfo.Value<string>("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>().text = rankNum.ToString();
- }
- RoleMgr.SetAvatarToImage(
- o.transform.Find("Avatar/Sprite").GetComponent<Image>(),
- avatarID, avatarUrl
- );
- Transform _name = o.transform.Find("Name");
- Transform _score = o.transform.Find("Score");
- Transform _country = o.transform.Find("Country");
- _name.GetComponent<Text>().text = nickname;
- _score.GetComponent<Text>().text = score.ToString();
- if (rankArea == 0)
- {
- // string countryStr = JC.Unity.Picker.LocationParseComponent.ins.ParseNameByCode(country, "", "").Item1.Trim();
- // o.transform.Find("Country").GetComponent<Text>().text = countryStr;
- //后端返回的gps地理位置
- _country.GetComponent<Text>().text = country;
- }
- else
- {
- _country.GetComponent<Text>().text = stateCode;
- }
- if (rankNum <= 3)
- {
- _name.GetComponent<Text>().fontStyle = FontStyle.Bold;
- _score.GetComponent<Text>().fontStyle = FontStyle.Bold;
- _country.GetComponent<Text>().fontStyle = FontStyle.Bold;
- }
- }
- if (myRank.Count > 0)
- {
- JToken itemInfo = myRank[0];
- int rankNum = itemInfo.Value<int>("rankNum");
- int userID = itemInfo.Value<int>("userID");
- int score = itemInfo.Value<int>("score");
- int avatarID = itemInfo.Value<int>("avatarID");
- string avatarUrl = itemInfo.Value<string>("avatarUrl");
- string nickname = itemInfo.Value<string>("nickname");
- string country = itemInfo.Value<string>("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>().text = rankNum.ToString();
- }
- RoleMgr.SetAvatarToImage(
- o.transform.Find("Avatar/Sprite").GetComponent<Image>(),
- avatarID, avatarUrl
- );
- o.transform.Find("Name").GetComponent<Text>().text = nickname;
- o.transform.Find("Score").GetComponent<Text>().text = score.ToString();
- if (rankArea == 0)
- {
- // string countryStr = JC.Unity.Picker.LocationParseComponent.ins.ParseNameByCode(country, "", "").Item1.Trim();
- // o.transform.Find("Country").GetComponent<Text>().text = countryStr;
- //后端返回的gps地理位置
- o.transform.Find("Country").GetComponent<Text>().text = country;
- }
- else
- {
- o.transform.Find("Country").GetComponent<Text>().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);
- }
- }
- }
|