Files
back_cantanBuilding/Assets/Scripts/FishingBox/FishingBoxRewardPanel.cs
2026-05-26 16:15:54 +08:00

124 lines
3.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using asap.core;
using DG.Tweening;
using GameCore;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UniRx;
using UnityEngine;
using UnityEngine.UI;
//奖励不叠加Grip展示
public class FishingBoxRewardPanel : BasePanel
{
[SerializeField]
private RewardItemNew rewardItem;
[SerializeField]
private Transform tran_rewardParent;
[SerializeField]
private GameObject go_row;
[SerializeField] private PanelScroll ps;
private FishingBoxDataProvier dataProvider;
[SerializeField]
private Button
btn_close,
btn_skip;
private List<RewardItemNew> rewards = new();
private List<GameObject> rows = new();
public bool IsShow;
private void Awake()
{
btn_close.OnClickAsObservable().Subscribe(x => OnClose()).AddTo(disposables);
btn_skip.onClick.AddListener(OnClick);
}
public async Task InitAsync(List<ItemData> dropItems)
{
var x = 4;
clickCount = 0;
jump = false;
IsShow = true;
gameObject.SetActive(true);
var curParent = tran_rewardParent;
btn_skip.gameObject.SetActive(true);
btn_close.gameObject.SetActive(false);
dataProvider = GContext.container.Resolve<FishingBoxDataProvier>();
dataProvider.CanSwitchBox = false;
for (int i = 0; i < dropItems.Count; i++)
{
var index = i % 4;
if (index == 0)
{
curParent = Instantiate(go_row, tran_rewardParent).transform;
curParent.gameObject.SetActive(true);
rows.Add(curParent.gameObject);
var count = dropItems.Count - i;
for (int j = 0; j < x; j++)
{
curParent.GetChild(j).gameObject.SetActive(j < count);
}
}
var item = dropItems[i];
var reward = Instantiate(rewardItem.gameObject, curParent.GetChild(index)).GetComponent<RewardItemNew>();
reward.SetData(item, isCanClick: true);
reward.gameObject.SetActive(true);
reward.PlayOpen();
rewards.Add(reward);
if (jump)
{
}
else
{
// if ( index == 0 && i/ 4 > 3 && i!= rewards.Count )
// {
//
// }
await Awaiters.NextFrame;
ps.verticalNormalizedPosition = 0f;
await new WaitForSeconds(0.1f);
}
}
await Awaiters.NextFrame;
ps.verticalNormalizedPosition = 0f;
btn_skip.gameObject.SetActive(false);
btn_close.gameObject.SetActive(true);
}
private int clickCount;
private bool jump;
private void OnClick()
{
if (IsShow)
{
clickCount++;
if (clickCount == 2)
{
jump = true;
}
}
}
private void OnClose()
{
rewards.ForEach(x => Destroy(x.gameObject));
rows.ForEach(x => Destroy(x.gameObject));
rewards.Clear();
rows.Clear();
IsShow = false;
gameObject.SetActive(false);
dataProvider.CanSwitchBox = true;
}
}