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);
}
}
}