using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Newtonsoft.Json.Linq; /* 界面-排行榜 */ public class RankView : JCUnityLib.ViewBase, MenuBackInterface { [SerializeField] GameObject rankListBox; int rankArea = 0; //0: 全球,1: 本省,2: 本市 int rankGameType = 9; //9: 静止靶PK void Awake() { InitBtnTabs(); InitBtnTabs1(); InitRankListBox(); } void Start() { PersistenHandler.ins?.menuBackCtr.views.Add(this); SetBtnTabSelected(btnTabs[0]); } void OnDestroy() { PersistenHandler.ins?.menuBackCtr.views.Remove(this); } public bool OnMenuBack() { ViewMgr.Instance.DestroyView(); return true; } public void Back() { AudioMgr.ins.PlayBtn(); ViewMgr.Instance.DestroyView(); } #region 排行列表 void InitRankListBox() { rankListBox.SetActive(false); GetRankListItemPrefab().SetActive(false); } Transform GetRankListItemParent() { return rankListBox.transform.Find("ScrollView/Viewport/Content"); } GameObject GetRankListItemPrefab() { return GetRankListItemParent().Find("Item").gameObject; } GameObject GetMyRankItem() { return rankListBox.transform.Find("MyRankItem").gameObject; } void EnterRankListBox() { rankListBox.SetActive(true); 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) { if (rankArea_copy != rankArea || rankGameType_copy != rankGameType) return; GetMyRankItem().SetActive(false); ClearRankList(); 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"); 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 ); 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 = ""; } } 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 = ""; } } }; UserPlayer.ins.call("rankComp.getRankList", 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); } } #endregion #region 顶部条目 [SerializeField] Sprite[] btnTabTextures1; Button[] btnTabs1 = {null, null, null, null}; void InitBtnTabs1() { btnTabs1[0] = this.transform.Find("LineH/BtnTab0").GetComponent