Files
ft/Client/Assets/Scripts/EventWelcomeBack/UI/ComeBackItem.cs
2026-06-29 21:18:33 +08:00

95 lines
2.7 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 asap.core;
using cfg;
using GameCore;
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class ComeBackItem : MonoBehaviour
{
GameObject received;
GameObject bg;
GameObject claim_notice;
GameObject bg_today;
TMP_Text text_title;
Button claim_btn;
Animation ani;
RewardItemNew[] rewardItems;
int index;
List<ItemData> itemDatas;
ComeBackData data;
Action<ComeBackData> OnClaim;
public void Init()
{
received = transform.Find("received").gameObject;
bg = transform.Find("bg").gameObject;
claim_notice = transform.Find("claim_notice").gameObject;
bg_today = transform.Find("bg_current").gameObject;
text_title = transform.Find("text_title").GetComponent<TMP_Text>();
claim_btn = GetComponent<Button>();
ani = GetComponent<Animation>();
rewardItems = transform.GetComponentsInChildren<RewardItemNew>();
}
private void Start()
{
claim_btn.onClick.AddListener(OnClaimBtnClick);
}
public void ShowData(ComeBackData data, Action<ComeBackData> onClaim, bool isCurrent = false)
{
this.data = data;
OnClaim = onClaim;
int dropID = data.timeReward.DropID;
itemDatas = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropIdLureInflation(null, dropID);
received.SetActive(data.state == 2);
int count = Math.Min(itemDatas.Count, rewardItems.Length);
for (int i = 0; i < count; i++)
{
rewardItems[i].SetData(itemDatas[i]);
}
for (int i = 0; i < rewardItems.Length; i++)
{
rewardItems[i].gameObject.SetActive(i < count);
rewardItems[i].SetReceived(data.state == 2);
}
text_title.text = data.title;
bool isClaim = IsClaim();
bg.SetActive(!isClaim);
bg_today.SetActive(isClaim);
if (isCurrent)
ani.Play();
claim_notice.SetActive(isCurrent);
}
bool IsClaim()
{
return data.state == 1;
}
public void OnClaimBtnClick()
{
if (IsClaim())
OnClaim?.Invoke(data);
}
public void Refresh()
{
received.SetActive(true);
bg.SetActive(true);
bg_today.SetActive(false);
ani.Stop();
claim_notice.SetActive(false);
for (int i = 0; i < rewardItems.Length; i++)
{
rewardItems[i].SetReceived(true);
rewardItems[i].ParticleAttractor();
}
}
}
public class ComeBackData
{
public int index;
public string title;
public int state;//0 未到时间1 到时间2 已经领完
public EventWelcomeBackTimeReward timeReward;
}