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

133 lines
4.3 KiB
C#

using cfg;
using UnityEngine;
using TMPro;
using GameCore;
using asap.core;
using DG.Tweening;
using UnityEngine.UI;
using System.Collections.Generic;
public class TurntableRewardItem : MonoBehaviour
{
public WheelDrop wheelDrop;
//int id = 0 ;
Image icon;
TMP_Text text_num;
public int rewardMulti = 1;
public int num = 0;
Item item;
ItemData itemData;
Transform rewardNew;
GameObject particle;
GameObject particle_01;
DOTweenAnimation dotween_selected;
Button btn_click;
Image icon_card;
Image logo;
Image card_num;
void Awake()
{
wheelDrop = null;
text_num = transform.Find("text_num").GetComponent<TMP_Text>();
icon = transform.Find("icon").GetComponent<UnityEngine.UI.Image>();
rewardNew = transform.Find("reward");
particle = transform.Find("particle").gameObject;
particle_01 = transform.Find("particle_01").gameObject;
dotween_selected = transform.Find("dotween_selected").GetComponent<DOTweenAnimation>();
icon_card = transform.Find("icon_card").GetComponent<Image>();
logo = transform.Find("icon_card/logo").GetComponent<Image>();
card_num = transform.Find("icon_card/num").GetComponent<Image>();
btn_click = GetComponent<Button>();
}
private void Start()
{
if (btn_click != null)
{
btn_click.onClick.AddListener(OnClick);
}
}
void OnClick()
{
if (itemData == null || itemData.id == 0)
{
return;
}
GContext.container.Resolve<PlayerItemData>().ShowItemTips(itemData.id, transform);
}
public void Init(bool isFree)
{
if (isFree)
{
itemData = GContext.container.Resolve<PlayerItemData>().GetItemDataOne(wheelDrop.ExtraDropID);
}
else
{
itemData = GContext.container.Resolve<PlayerItemData>().GetItemDataOne(wheelDrop.DropID);
}
item = GContext.container.Resolve<Tables>().TbItem.Get(itemData.id); //是否可能有多个物品?
text_num.gameObject.SetActive(wheelDrop.Type != 9 || isFree);
UpDisplay();
}
public void UpDisplay()
{
if (wheelDrop.Type == 9)
{
rewardMulti = 1;
}
num = (int)itemData.count * rewardMulti;
text_num.text = ConvertTools.GetNumberString(num);
if (item.Type == 5)
{
IUIService uiService = GContext.container.Resolve<IUIService>();
List<string> BgNameList;
if (item.SubType == 1)
{
var fishCard = GContext.container.Resolve<Tables>().TbFishCardDrop.GetOrDefault(item.RedirectID);
BgNameList = fishCard.BgNameList;
}
else
{
var fishCard = GContext.container.Resolve<Tables>().TbGeneralCardWeight.GetOrDefault(item.RedirectID);
BgNameList = fishCard.BgNameList;
}
uiService.SetImageSprite(icon_card, BgNameList[0], BasePanel.PanelName);
uiService.SetImageSprite(logo, BgNameList[1], BasePanel.PanelName);
uiService.SetImageSprite(card_num, BgNameList[2], BasePanel.PanelName);
icon_card.gameObject.SetActive(true);
icon.gameObject.SetActive(false);
}
else
{
icon_card.gameObject.SetActive(false);
icon.gameObject.SetActive(true);
GContext.container.Resolve<IUIService>().SetImageSprite(icon, item.Icon, BasePanel.PanelName);
}
}
public void OnSelect()
{
particle_01.SetActive(false);
particle.SetActive(false);
particle_01.SetActive(true);
particle.SetActive(true);
dotween_selected.DORestart();
}
public async System.Threading.Tasks.Task ShowReward(RewardItemNew rewardItemNew)
{
ItemData itemDataNew = new ItemData();
itemDataNew.id = itemData.id;
itemDataNew.count = itemData.count * rewardMulti;
rewardItemNew.transform.parent.position = rewardNew.position;
rewardItemNew.SetRewardPopupData(itemDataNew, false);
rewardItemNew.PlayOpen(true);
await Awaiters.Seconds(0.6f);
await rewardItemNew.PlayClose();
await rewardItemNew.ParticleAttractor();
}
}