Files
back_cantanBuilding/Assets/Scripts/UI/PartnerGather/Mining/EventPartnerSpinItemView.cs
2026-05-26 16:15:54 +08:00

106 lines
3.6 KiB
C#

using System;
using cfg;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace UI.PartnerGather.Mining
{
public class EventPartnerSpinItemView : MonoBehaviour
{
private Transform highlight;
private Transform prize_nml;
private Transform prize_medium;
private Transform prize_super;
private Transform prize_free;
private Transform prize_more;
// 调试
private TMP_Text _textId;
private TMP_Text _textIndex;
//
private int _dataId;
private void Awake()
{
prize_nml = transform.Find("prize/prize_nml");
prize_medium = transform.Find("prize/prize_medium");
prize_super = transform.Find("prize/prize_super");
prize_free = transform.Find("prize/prize_free");
prize_more = transform.Find("prize/prize_more");
highlight = transform.Find("prize/height");
_textId = transform.Find("prize/text_id").GetComponent<TMP_Text>();
_textIndex = transform.Find("prize/text_index").GetComponent<TMP_Text>();
}
public void Bind(EventPartnerSpinPoint data,int index)
{
// Log($"OldId :{_dataId} : new {data.ID}");
var param = data.SpinPointParam;
_dataId = data.ID;
_textId.text = _dataId.ToString();
_textIndex.text = index.ToString();
switch (param)
{
case FreeSpinPoint point:
prize_nml.gameObject.SetActive(false);
prize_medium.gameObject.SetActive(false);
prize_super.gameObject.SetActive(false);
prize_free.gameObject.SetActive(true);
prize_more.gameObject.SetActive(false);
UpdateText(prize_free,point.SpinPoints.ToString());
break;
case MoreSpinPoint point:
prize_nml.gameObject.SetActive(false);
prize_medium.gameObject.SetActive(false);
prize_super.gameObject.SetActive(false);
prize_free.gameObject.SetActive(false);
prize_more.gameObject.SetActive(true);
UpdateText(prize_more,Mathf.Round(point.BonusPercent * 100) + "%");
break;
case NormalSpinPoint point:
prize_nml.gameObject.SetActive(true);
prize_medium.gameObject.SetActive(false);
prize_super.gameObject.SetActive(false);
prize_free.gameObject.SetActive(false);
prize_more.gameObject.SetActive(false);
UpdateText(prize_nml,point.SpinPoints.ToString());
break;
}
void UpdateText(Transform rootUI,string content)
{
var label = rootUI.GetComponentInChildren<TMP_Text>(true);
if (label)
{
label.text = content;
}
}
}
public void SetSelected(bool on)
{
Log($"SetSelected-> {on}");
if (highlight)
{
highlight.gameObject.SetActive(on);
}
}
private static void Log(object t)
{
Debug.Log($"<color=cyan>EventPartnerSpinItemView -> {t} </color>");
}
public void UpdateSelected(int targetId)
{
if (highlight)
{
highlight.gameObject.SetActive(_dataId == targetId);
}
}
}
}