95 lines
2.7 KiB
C#
95 lines
2.7 KiB
C#
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;
|
||
}
|