备份CatanBuilding瘦身独立工程
This commit is contained in:
107
Assets/Scripts/LuckyTask/UI/LuckyTaskItem.cs
Normal file
107
Assets/Scripts/LuckyTask/UI/LuckyTaskItem.cs
Normal file
@@ -0,0 +1,107 @@
|
||||
using asap.core;
|
||||
using GameCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class LuckyTaskItem : MonoBehaviour
|
||||
{
|
||||
public LuckyTaskItemData data { get; private set; }
|
||||
GameObject bg_cliam;
|
||||
Button btn_claim;
|
||||
GameObject bg_normal;
|
||||
Button btnGo;
|
||||
TMP_Text taskDescText;
|
||||
List<RewardItemNew> rewardItemNews = new List<RewardItemNew>();
|
||||
GameObject mask;
|
||||
Action<LuckyTaskItem> action;
|
||||
int count = 0;
|
||||
private void Awake()
|
||||
{
|
||||
bg_cliam = transform.Find("bg_cliam").gameObject;
|
||||
btn_claim = transform.Find("bg_cliam/btn_claim/btn_green_c").GetComponent<Button>();
|
||||
bg_normal = transform.Find("bg_normal").gameObject;
|
||||
btnGo = transform.Find("bg_normal/btn_go/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 (btnGo != null)
|
||||
{
|
||||
btnGo.onClick.AddListener(OnClick);
|
||||
}
|
||||
if (btn_claim != null)
|
||||
{
|
||||
btn_claim.onClick.AddListener(OnClick);
|
||||
}
|
||||
}
|
||||
public void Init(LuckyTaskItemData luckyTaskItemData, Action<LuckyTaskItem> action)
|
||||
{
|
||||
this.action = action;
|
||||
this.data = luckyTaskItemData;
|
||||
SetItem();
|
||||
}
|
||||
void SetItem()
|
||||
{
|
||||
Refresh();
|
||||
taskDescText.text = data.desc;
|
||||
var itemData = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropId(data.reward);
|
||||
if (itemData != null)
|
||||
{
|
||||
count = itemData.Count;
|
||||
if (count > rewardItemNews.Count)
|
||||
{
|
||||
count = rewardItemNews.Count;
|
||||
Debug.LogError($"LuckyTask Reward {data.reward} > PanelItem Count");
|
||||
}
|
||||
for (int i = 0; i < rewardItemNews.Count; i++)
|
||||
{
|
||||
if (count > i)
|
||||
{
|
||||
rewardItemNews[i].gameObject.SetActive(true);
|
||||
rewardItemNews[i].SetData(itemData[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
rewardItemNews[i].gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async Task Play()
|
||||
{
|
||||
data.state = -1; // 更新状态为已领取
|
||||
Refresh();
|
||||
for (int i = 1; i < count; i++)
|
||||
{
|
||||
rewardItemNews[i].ParticleAttractor(ignorePack: true);
|
||||
}
|
||||
await rewardItemNews[0].ParticleAttractor(ignorePack: true);
|
||||
}
|
||||
|
||||
public void Refresh()
|
||||
{
|
||||
mask.SetActive(data.state == -1);
|
||||
btnGo.gameObject.SetActive(data.state == 0);
|
||||
bg_normal.gameObject.SetActive(data.state <= 0);
|
||||
bg_cliam.gameObject.SetActive(data.state == 1);
|
||||
}
|
||||
void OnClick()
|
||||
{
|
||||
action?.Invoke(this);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user