Files
back_cantanBuilding/Assets/Scripts/MiniBP/UI/MiniBattlePassItem.cs
2026-05-26 16:15:54 +08:00

84 lines
2.2 KiB
C#

using asap.core;
using GameCore;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public interface IMiniBattlePassItem
{
void Init(MiniBPItemData bpItemFirstData, MiniBattlePassDataModel miniBP);
void Refresh();
void UnlockRefresh();
}
public class MiniBattlePassItem : MonoBehaviour, IMiniBattlePassItem
{
public GameObject bg_normal;
public GameObject bg_done;
public RewardItemNew grandReward;
public GameObject grandClaimLocked;
public GameObject fx_unlocked;
public GameObject grandClaim;
public Button grandClaimBtn;
public TMP_Text text_task;
public Image bar;
public TMP_Text text_bar;
protected MiniBattlePassDataModel miniBP;
protected bool isClaim;
protected virtual void Start()
{
grandClaimBtn.onClick.AddListener(ClickGrandClaim);
}
private void ClickLock()
{
if (isClaim)
{
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_106"));
}
}
public MiniBPItemData data;
public virtual void Init(MiniBPItemData bpItemFirstData, MiniBattlePassDataModel miniBP)
{
if (bpItemFirstData == null)
{
return;
}
this.miniBP = miniBP;
this.data = bpItemFirstData;
isClaim = bpItemFirstData.progress >= bpItemFirstData.maxProgress;
text_bar.text = $"{bpItemFirstData.progress}/{bpItemFirstData.maxProgress}";
bar.fillAmount = (float)bpItemFirstData.progress / bpItemFirstData.maxProgress;
grandReward.SetData(bpItemFirstData.grandReward);
text_task.text = bpItemFirstData.taskName;
bg_normal.SetActive(!isClaim);
Refresh();
}
public virtual void Refresh()
{
grandClaimLocked.gameObject.SetActive(!data.isGrandReward);
}
public void UnlockRefresh()
{
fx_unlocked.SetActive(true);
}
private void ClickGrandClaim()
{
if (data.isGrandReward)
{
//领取付费奖励的逻辑
miniBP.ReceiveReward(data.index, false);
//Refresh();
GContext.Publish(new RefreshPanelEvent());
}
else
{
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_106"));
}
}
}