137 lines
4.8 KiB
C#
137 lines
4.8 KiB
C#
using Assets.MyGame.Scripts.Net;
|
|
using Assets.MyGame.Scripts.Net.API.GameConfig_SubClass;
|
|
using Assets.MyGame.Scripts.Net.API.UserData_SubClass;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using Unity.VisualScripting;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class RankLineItem : MonoBehaviour
|
|
{
|
|
public GameObject obj_rankNum;
|
|
public TextMeshProUGUI userName;
|
|
public TextMeshProUGUI userLevel;
|
|
public TextMeshProUGUI userScore;
|
|
public Image avatar;
|
|
public Image avatarFrame;
|
|
public BackPackPropItem backPackPropItemPrefab;
|
|
public Transform backPackPropItemRarent;
|
|
|
|
private string myAvatarName;
|
|
private string myAvatarFrameName;
|
|
|
|
private void OnEnable()
|
|
{
|
|
GameManager.Instance.OnAvatarChanged += OnAvatarChanged;
|
|
GameManager.Instance.OnAvatarFrameChanged += OnAvatarFrameChanged;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
if (GameManager.Instance != null)
|
|
{
|
|
GameManager.Instance.OnAvatarChanged -= OnAvatarChanged;
|
|
GameManager.Instance.OnAvatarFrameChanged -= OnAvatarFrameChanged;
|
|
}
|
|
}
|
|
|
|
private void OnAvatarChanged(Sprite sprite)
|
|
{
|
|
if (!string.IsNullOrEmpty(myAvatarName) && sprite != null)
|
|
{
|
|
var cached = GameManager.Instance.GetAvatarSprite(myAvatarName);
|
|
if (cached != null) avatar.sprite = cached;
|
|
}
|
|
}
|
|
|
|
private void OnAvatarFrameChanged(Sprite sprite)
|
|
{
|
|
if (avatarFrame == null) return;
|
|
if (!string.IsNullOrEmpty(myAvatarFrameName))
|
|
{
|
|
var cached = GameManager.Instance.GetAvatarFrameSprite(myAvatarFrameName);
|
|
if (cached != null) avatarFrame.sprite = cached;
|
|
}
|
|
}
|
|
|
|
public void Init(int rankNum, string name, string level, string score, Sprite sprite, string avatarUrl, string avatarFrameUrl = null, List<GiftConfig> giftItems = null)
|
|
{
|
|
myAvatarName = avatarUrl;
|
|
myAvatarFrameName = avatarFrameUrl;
|
|
foreach (Transform item in obj_rankNum.transform)
|
|
item.gameObject.SetActive(false);
|
|
|
|
switch (rankNum)
|
|
{
|
|
case 1:
|
|
obj_rankNum.transform.GetChild(0).gameObject.SetActive(true);
|
|
break;
|
|
case 2:
|
|
obj_rankNum.transform.GetChild(1).gameObject.SetActive(true);
|
|
break;
|
|
case 3:
|
|
obj_rankNum.transform.GetChild(2).gameObject.SetActive(true);
|
|
break;
|
|
default:
|
|
var obj = obj_rankNum.transform.GetChild(3).gameObject;
|
|
obj.SetActive(true);
|
|
obj.GetComponentInChildren<TextMeshProUGUI>().text = rankNum.ToString();
|
|
break;
|
|
}
|
|
userName.text = name.Length > 4 ? name.Substring(0, 2) + "**" + name.Substring(name.Length - 2) : name;
|
|
userLevel.text = level;
|
|
userScore.text = score;
|
|
if (sprite != null) avatar.sprite = sprite;
|
|
// 头像框
|
|
if (avatarFrame != null)
|
|
{
|
|
if (!string.IsNullOrEmpty(avatarFrameUrl))
|
|
{
|
|
var frameSprite = GameManager.Instance.GetAvatarFrameSprite(avatarFrameUrl);
|
|
if (frameSprite != null) avatarFrame.sprite = frameSprite;
|
|
avatarFrame.gameObject.SetActive(frameSprite != null);
|
|
}
|
|
else
|
|
{
|
|
avatarFrame.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
if (giftItems != null && giftItems.Count > 0)
|
|
{
|
|
// 先清空旧奖励道具
|
|
for (int i = backPackPropItemRarent.childCount - 1; i >= 0; i--)
|
|
Destroy(backPackPropItemRarent.GetChild(i).gameObject);
|
|
|
|
foreach (var gift in giftItems)
|
|
{
|
|
int count = gift.isRandom ? gift.minCount : gift.count;
|
|
|
|
// GiftConfig 已移除 product,道具图标与类型通过 otherId 查道具表
|
|
string imageUrl = "";
|
|
int propType = 0;
|
|
if (!string.IsNullOrEmpty(gift.otherId))
|
|
{
|
|
var match = GameManager.Instance?.gameConfig?.propConfig?.Find(p => p.number == gift.otherId);
|
|
if (match != null)
|
|
{
|
|
imageUrl = match.imageUrl;
|
|
propType = match.type;
|
|
}
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(imageUrl)) continue;
|
|
|
|
GameObject obj = Instantiate(backPackPropItemPrefab.gameObject, backPackPropItemRarent);
|
|
var tempItem = obj.GetComponent<BackPackPropItem>();
|
|
tempItem.Init(new BackPackPropItemData
|
|
{
|
|
url = APIManager.baseURL + imageUrl,
|
|
count = count,
|
|
propEnum = (PropEnum)propType
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|