96 lines
3.1 KiB
C#
96 lines
3.1 KiB
C#
using asap.core;
|
|
using DG.Tweening;
|
|
using GameCore;
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class LuckyADTask : ItemRewardBase
|
|
{
|
|
public LuckyTaskItemData data { get; private set; }
|
|
Button btn_claim;
|
|
Button btn_claim_gray;
|
|
TMP_Text taskDescText;
|
|
GameObject mask;
|
|
Image bar;
|
|
TMP_Text barText;
|
|
Action<LuckyADTask> action;
|
|
private void Awake()
|
|
{
|
|
bar = transform.Find("bg_bar/bar").GetComponent<Image>();
|
|
barText = transform.Find("bg_bar/text_num").GetComponent<TMP_Text>();
|
|
btn_claim = transform.Find("btn_claim/btn_green_c").GetComponent<Button>();
|
|
btn_claim_gray = transform.Find("btn_claim_gray/btn_green_c").GetComponent<Button>();
|
|
taskDescText = transform.Find("text_task").GetComponent<TMP_Text>();
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
var rewardItem = transform.Find($"reward{i + 1}").GetComponent<RewardItemNew>();
|
|
if (rewardItem != null)
|
|
{
|
|
rewardItemNews.Add(rewardItem);
|
|
}
|
|
}
|
|
mask = transform.Find("bg_done").gameObject;
|
|
|
|
}
|
|
private void Start()
|
|
{
|
|
if (btn_claim != null)
|
|
{
|
|
btn_claim.onClick.AddListener(OnClick);
|
|
}
|
|
btn_claim_gray.onClick.AddListener(() => ToastPanel.Show(LocalizationMgr.GetText("EventLuckyCardsADTaskPopupPanel_5")));
|
|
}
|
|
public void Init(LuckyTaskItemData luckyTaskItemData, Action<LuckyADTask> action)
|
|
{
|
|
this.action = action;
|
|
this.data = luckyTaskItemData;
|
|
SetItem();
|
|
}
|
|
public async Task PlayFillAmount(LuckyTaskItemData luckyTaskItemData)
|
|
{
|
|
this.data = luckyTaskItemData;
|
|
if (data.state != -1)
|
|
{
|
|
mask.SetActive(false);
|
|
btn_claim_gray.gameObject.SetActive(true);
|
|
btn_claim.gameObject.SetActive(false);
|
|
taskDescText.text = data.desc;
|
|
var itemData = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropIdLureInflation(data.inflationRate, data.reward);
|
|
SetItemData(itemData);
|
|
barText.text = $"{0}/{data.target}";
|
|
bar.fillAmount = 0;
|
|
float progress = data.progress * 1f / data.target;
|
|
bar.DOFillAmount(progress, 0.5f).OnUpdate(
|
|
() =>
|
|
{
|
|
barText.text = $"{(int)(data.target * bar.fillAmount)}/{data.target}";
|
|
});
|
|
await Awaiters.Seconds(0.5f);
|
|
}
|
|
Refresh();
|
|
}
|
|
void SetItem()
|
|
{
|
|
Refresh();
|
|
taskDescText.text = data.desc;
|
|
var itemData = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropIdLureInflation(data.inflationRate, data.reward);
|
|
SetItemData(itemData);
|
|
barText.text = $"{data.progress}/{data.target}";
|
|
bar.fillAmount = data.progress * 1f / data.target;
|
|
}
|
|
|
|
public void Refresh()
|
|
{
|
|
mask.SetActive(data.state == -1);
|
|
btn_claim_gray.gameObject.SetActive(data.state == 0);
|
|
btn_claim.gameObject.SetActive(data.state == 1);
|
|
}
|
|
void OnClick()
|
|
{
|
|
action?.Invoke(this);
|
|
}
|
|
}
|