148 lines
4.2 KiB
C#
148 lines
4.2 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using UnityEngine.Events;
|
||
using UnityEngine.UI;
|
||
|
||
namespace TcgEngine.UI
|
||
{
|
||
public class LadderRankLine : MonoBehaviour
|
||
{
|
||
[Header("排名文本")] public Text ranking;
|
||
[Header("排名Icon")] public Image rankingIcon;
|
||
|
||
[Header("玩家名称")] public Text playerName;
|
||
|
||
[Header("头像")] public Image avatar;
|
||
|
||
[Header("天梯ID")] public Image rankId; // 天梯ID
|
||
|
||
[Header("天梯分数")] public Text rankScore;
|
||
|
||
[Header("天梯星星")] public Text stars;
|
||
|
||
// [Header("胜利场次")]
|
||
// public Text totalWins;
|
||
[Header("下划线")] public Image highlight;
|
||
|
||
[Header("查看牌组")] public Button viewCardButton;
|
||
|
||
public UnityAction<string> onClick;
|
||
|
||
public string username;
|
||
public string id;
|
||
|
||
public PlayerRank pd;
|
||
|
||
private void Awake()
|
||
{
|
||
highlight.enabled = false;
|
||
RankingData.Load();
|
||
RankMedalData.Load();
|
||
}
|
||
|
||
public void SetLine(LadderLeaderboardEntry udata, int ranking, Sprite avatar,
|
||
int rankId, int rankScore, int stars, bool highlight)
|
||
{
|
||
this.username = udata.username;
|
||
id = udata.playerId;
|
||
RankMedalShow(ranking);
|
||
this.playerName.text = username;
|
||
this.rankScore.text = rankScore.ToString();
|
||
this.stars.text = "×" + stars;
|
||
this.avatar.sprite = avatar;
|
||
|
||
PlayerRank pr = PlayerRank.Bronze; // 默认
|
||
switch(rankId)
|
||
{
|
||
case 1: pr = PlayerRank.Bronze; break;
|
||
case 2: pr = PlayerRank.Silver; break;
|
||
case 3: pr = PlayerRank.Gold; break;
|
||
case 4: pr = PlayerRank.Platinum; break;
|
||
case 5: pr = PlayerRank.Diamond; break;
|
||
case 6: pr = PlayerRank.King; break;
|
||
}
|
||
|
||
pd = pr;
|
||
|
||
// 获取段位数据
|
||
RankingData rankData = RankingData.Get(pr);
|
||
if (rankData != null && rankData.rankIcon != null)
|
||
{
|
||
this.rankId.sprite = rankData.rankIcon;
|
||
}
|
||
else
|
||
{
|
||
this.rankId.sprite = null; // 或者默认图
|
||
}
|
||
this.rankId.SetNativeSize();
|
||
|
||
if (rankScore != 0)
|
||
{
|
||
this.rankScore.gameObject.SetActive(true);
|
||
this.stars.gameObject.SetActive(false);
|
||
}
|
||
else
|
||
{
|
||
this.rankScore.gameObject.SetActive(false);
|
||
this.stars.gameObject.SetActive(true);
|
||
}
|
||
|
||
|
||
|
||
this.highlight.enabled = highlight;
|
||
gameObject.SetActive(true);
|
||
}
|
||
|
||
public void RankMedalShow(int rank)
|
||
{
|
||
string rankStr = "";
|
||
switch (rank)
|
||
{
|
||
case 1:
|
||
rankStr = "Champion";
|
||
break;
|
||
case 2:
|
||
rankStr = "Runner_up";
|
||
break;
|
||
case 3:
|
||
rankStr = "Third_place";
|
||
break;
|
||
default:
|
||
ranking.text = rank.ToString();
|
||
break;
|
||
}
|
||
|
||
// 获取段位数据
|
||
RankMedalData rankData = RankMedalData.Get(rankStr);
|
||
if (rankData != null && rankData.sprite != null)
|
||
{
|
||
ranking.gameObject.SetActive(false);
|
||
rankingIcon.gameObject.SetActive(true);
|
||
rankingIcon.sprite = rankData.sprite;
|
||
}
|
||
else
|
||
{
|
||
ranking.gameObject.SetActive(true);
|
||
rankingIcon.gameObject.SetActive(false);
|
||
ranking.text = rank.ToString();
|
||
}
|
||
}
|
||
|
||
public void Hide()
|
||
{
|
||
gameObject.SetActive(false);
|
||
}
|
||
|
||
public string GetUsername()
|
||
{
|
||
return username;
|
||
}
|
||
|
||
public void OnClick()
|
||
{
|
||
onClick?.Invoke(username);
|
||
}
|
||
}
|
||
} |