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

108 lines
4.4 KiB
C#

using asap.core;
using cfg;
using game;
using GameCore;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class EventPinballRewardPoupPanel : MonoBehaviour
{
GameObject item;
float itemHeight;
Tables tables;
RewardItemNew[] rewardItems;
ScrollRect scrollRect;
private EventPinballDataManager m_DataManager;
private void Awake()
{
m_DataManager = GContext.container.Resolve<EventPinballDataManager>();
tables = GContext.container.Resolve<Tables>();
rewardItems = transform.Find("root/bg/grand_prize/reward").GetComponentsInChildren<RewardItemNew>(true);
item = transform.Find("root/bg/ScrollView/Viewport/Content/item").gameObject;
item.SetActive(false);
itemHeight = item.GetComponent<RectTransform>().rect.height;
SetData();
}
void SetData()
{
Transform content = transform.Find("root/bg/ScrollView/Viewport/Content");
List<EventPinballReward> pinballRewards = tables.TbEventPinballReward.DataList;
int rewardMaxIndex = pinballRewards.Count - 1;
EventPinballReward pinballReward = pinballRewards[0];
float progress = m_DataManager.PinballData.Scores;
PinballRewardItem duelRewardItem = null;
content.GetComponent<RectTransform>().anchoredPosition = new Vector3(0, (3 - m_DataManager.PinballData.RewardIndex) * itemHeight, 0);
for (int i = 0; i < pinballRewards.Count - 1; i++)
{
pinballReward = pinballRewards[i];
GameObject go = Instantiate(item, content);
go.SetActive(true);
duelRewardItem = go.GetComponent<PinballRewardItem>();
List<ItemData> rewardItemData = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropIdLureInflation(m_DataManager.PinballData.InflationRate, pinballReward.DropID);
if (rewardItemData != null)
{
int dataCount = rewardItemData.Count;
int rewardCount = duelRewardItem.rewardItems.Count;
for (int j = 0; j < rewardCount; j++)
{
if (j < dataCount)
{
duelRewardItem.rewardItems[j].SetData(rewardItemData[j]);
duelRewardItem.rewardItems[j].SetReceived(i < m_DataManager.PinballData.RewardIndex);
}
else
{
duelRewardItem.rewardItems[j].gameObject.SetActive(false);
}
}
}
duelRewardItem.bg_done.SetActive(i < m_DataManager.PinballData.RewardIndex);
duelRewardItem.bg_next.SetActive(i == m_DataManager.PinballData.RewardIndex);
duelRewardItem.bg_lock.SetActive(true);
if (i == m_DataManager.PinballData.RewardIndex - 1)
{
int spinPoint = pinballReward.SpinPoint;
int nextSpinPoint = pinballRewards[i + 1].SpinPoint;
duelRewardItem.bar.fillAmount = (progress - spinPoint) / (nextSpinPoint - spinPoint);
if (m_DataManager.PinballData.RewardIndex == rewardMaxIndex)
{
duelRewardItem.bar.fillAmount *= 0.6231884f;
}
}
else if (i < m_DataManager.PinballData.RewardIndex)
{
duelRewardItem.bar.fillAmount = 1;
}
else
{
duelRewardItem.bar.fillAmount = 0;
}
}
int grandPrizeDropID = pinballRewards[pinballRewards.Count - 1].DropID;
DropPackageList dropPackageList = tables.TbDrop[grandPrizeDropID].DropList;
Item itemcfg = tables.TbItem[dropPackageList.DropIDList[0]];
var grandPrizeItemData = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropIdLureInflation(m_DataManager.PinballData.InflationRate, itemcfg.RedirectID);
if (grandPrizeItemData != null)
{
int dataCount = grandPrizeItemData.Count;
int rewardCount = rewardItems.Length;
for (int j = 0; j < rewardCount; j++)
{
if (j < dataCount)
{
rewardItems[j].SetData(grandPrizeItemData[j]);
}
else
{
rewardItems[j].gameObject.SetActive(false);
}
}
}
}
}