Files
tcg-client/Assets/TcgEngine/Scripts/Menu/LadderRankLine.cs
2025-09-08 11:35:13 +08:00

146 lines
4.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 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;
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);
}
}
}