| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- 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<RankView>();
- return true;
- }
- public void Back() {
- AudioMgr.ins.PlayBtn();
- ViewMgr.Instance.DestroyView<RankView>();
- }
- #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<JArray, JArray> 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<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 = 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
- );
- 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 = "";
- }
- }
- 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 = "";
- }
- }
- };
- 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<Button>();
- btnTabs1[1] = this.transform.Find("LineH/BtnTab1").GetComponent<Button>();
- btnTabs1[2] = this.transform.Find("LineH/BtnTab2").GetComponent<Button>();
- btnTabs1[3] = this.transform.Find("LineH/BtnTab3").GetComponent<Button>();
- for (int i = 0; i < btnTabs1.Length; i++) {
- Button btnTab = btnTabs1[i];
- int btnTabIndex = i;
- btnTab.onClick.AddListener(() => {
- if (AudioMgr.ins) AudioMgr.ins.PlayBtn();
- if (!IsBtnTabSelected1(btnTab)) {
- SetBtnTabSelected1(btnTab);
- }
- });
- }
- }
- bool IsBtnTabSelected1(Button btn) {
- Image img = btn.GetComponent<Image>();
- return img.sprite.name.Equals(btnTabTextures1[1].name);
- }
- void SetBtnTabSelected1(Button btn) {
- foreach (var item in btnTabs1) {
- Image img = item.GetComponent<Image>();
- img.sprite = item == btn ? btnTabTextures1[1] : btnTabTextures1[0];
- }
- int index = Array.IndexOf(btnTabs1, btn);
- HandleBtnTabSelectedLogic1(index);
- }
- void HandleBtnTabSelectedLogic1(int btnIndex) {
- rankGameType = 9 + btnIndex;
- EnterRankListBox();
- }
- #endregion
- #region 左栏条目切换
- [SerializeField] Sprite[] btnTabTextures;
- Button[] btnTabs = {null, null, null};
- void InitBtnTabs() {
- btnTabs[0] = this.transform.Find("LineV/BtnTab0").GetComponent<Button>();
- btnTabs[1] =this.transform.Find("LineV/BtnTab1").GetComponent<Button>();
- btnTabs[2] =this.transform.Find("LineV/BtnTab2").GetComponent<Button>();
- for (int i = 0; i < btnTabs.Length; i++) {
- Button btnTab = btnTabs[i];
- int btnTabIndex = i;
- btnTab.onClick.AddListener(() => {
- if (AudioMgr.ins) AudioMgr.ins.PlayBtn();
- if (!IsBtnTabSelected(btnTab)) {
- SetBtnTabSelected(btnTab);
- }
- });
- }
- }
- bool IsBtnTabSelected(Button btn) {
- Image img = btn.GetComponent<Image>();
- return img.sprite.name.Equals(btnTabTextures[1].name);
- }
- void SetBtnTabSelected(Button btn) {
- foreach (var item in btnTabs) {
- Image img = item.GetComponent<Image>();
- img.sprite = item == btn ? btnTabTextures[1] : btnTabTextures[0];
- }
- int index = Array.IndexOf(btnTabs, btn);
- HandleBtnTabSelectedLogic(index);
- }
- void HandleBtnTabSelectedLogic(int btnIndex) {
- rankArea = btnIndex;
- EnterRankListBox();
- }
- #endregion
- }
|