Files
MinFt/Client/Assets/Scripts/UI/RewardPopup/RewardPopupPanel.cs
Liubing\LB 3d8d4d18f3 first commit
先修复一下,错误的场景

删除不必要的钓场资产

修复into场景

update:更新meta文件,修复报错

update:修复资源

修复第一章节建造

修复建造第三章

update:删除多余内容

update:更新README.md

update:还原图标

update:更新README

update:更新配置
2026-04-28 02:17:22 +08:00

239 lines
8.3 KiB
C#

using asap.core;
using game;
using System.Threading.Tasks;
using UnityEngine;
using UniRx;
using System;
using System.Collections.Generic;
using GameCore;
public class RewardPopupData
{
public string panelName;
public bool isShow;
public TaskCompletionSource<bool> tcs;
}
public struct MaskFadeAlpha
{
}
public class RewardPopupPanel : MonoBehaviour
{
CanvasGroup canvasGroup;
public float maskAlpha = 0.3f; //遮罩透明度
public CanvasGroup maskCanvasGroup;
public RewardNormal reward;
public RewardNormal1 reward1;
public RewardFishBox rewardFishBox;
public RewardFishBoxOpen rewardFishBoxOpen;
public RewardBox rewardBox1;
public FeaturesUnlock featuresUnlock;
public BenefitUpgrade benefitUpgrade;
List<RewardItemNew> rewardItems;
Transform reward_group;
RewardPopupData rewardPopupData;
IDisposable disposable;
IDisposable disposable1;
RewardType rewardType;
private void Awake()
{
reward_group = transform.Find("reward_group");
rewardItems = new List<RewardItemNew>();
for (int i = 0; i < 9; i++)
{
rewardItems.Add(reward_group.GetChild(i).GetComponent<RewardItemNew>());
}
rewardPopupData = new RewardPopupData();
rewardPopupData.tcs = new TaskCompletionSource<bool>();
canvasGroup = GetComponent<CanvasGroup>();
reward = transform.Find("reward").GetComponent<RewardNormal>();
reward1 = transform.Find("reward_1").GetComponent<RewardNormal1>();
rewardBox1 = transform.Find("reward_box1").GetComponent<RewardBox>();
rewardFishBox = transform.Find("reward_show_1").GetComponent<RewardFishBox>();
rewardFishBoxOpen = transform.Find("reward_box_open").GetComponent<RewardFishBoxOpen>();
featuresUnlock = transform.Find("features_unlock").GetComponent<FeaturesUnlock>();
benefitUpgrade = transform.Find("Benefit_upgrade").GetComponent<BenefitUpgrade>();
disposable = GContext.OnEvent<RewardPopupData>().Subscribe(OnRewardPopupData);
disposable1 = GContext.OnEvent<MaskFadeAlpha>().Subscribe(x =>
{
CheckMaskFadeAlpha();
});
}
void OnRewardPopupData(RewardPopupData data)
{
data.isShow = enabled;
data.tcs = rewardPopupData.tcs;
}
private void OnEnable()
{
Init();
}
public void Init()
{
bool isAutoClose = rewardType == RewardType.AutoOpen;
canvasGroup.alpha = DeBugPanel.isShow ? 1 : 0;
canvasGroup.blocksRaycasts = true;
reward.gameObject.SetActive(false);
reward1.gameObject.SetActive(false);
SetAutoClose(isAutoClose);
rewardFishBox.gameObject.SetActive(false);
rewardFishBoxOpen.gameObject.SetActive(false);
rewardBox1.gameObject.SetActive(false);
featuresUnlock.gameObject.SetActive(false);
benefitUpgrade.gameObject.SetActive(false);
}
void SetAutoClose(bool isAutoClose)
{
reward.isAutoClose = isAutoClose;
reward1.isAutoClose = isAutoClose;
rewardFishBox.isAutoClose = isAutoClose;
rewardBox1.isAutoClose = isAutoClose;
}
ExchangeItemData GetExchangeItemData(ExchangeItemData exchangeItemData)
{
if (exchangeItemData == null)
{
return null;
}
if (exchangeItemData.exchangeCount > 0)
{
return exchangeItemData;
}
else
{
return GetExchangeItemData(exchangeItemData.nextExchangeItemData);
}
}
public void ShowPanel(ShowData showData, string textValue, RewardType rewardType)
{
this.rewardType = rewardType;
Init();
List<ItemData> itemDatas = null;
//有些弹窗需要展示物品 itemDatas 有些不需要 比如 FeaturesUnlock itemDatas可为空
if (showData.itemDatas != null)
{
//转换物品链处理
itemDatas = new List<ItemData>(showData.itemDatas);
for (int i = 0; i < itemDatas.Count; i++)
{
ItemData itemData = itemDatas[i];
ExchangeItemData nextExchangeItemData = GetExchangeItemData(itemData.exchangeItemData);
itemData.exchangeItemData = nextExchangeItemData;
if (nextExchangeItemData != null)
{
ExchangeItemData exchangeItemData = GetExchangeItemData(nextExchangeItemData.nextExchangeItemData);
nextExchangeItemData.nextExchangeItemData = null;
if (exchangeItemData != null)
{
ItemData itemData1 = new ItemData();
itemData1.id = itemData.id;
itemData1.curCount = itemData.curCount;
itemData1.count = itemData.count;
itemData1.exchangeItemData = exchangeItemData;
itemDatas.Insert(i + 1, itemData1);
}
}
}
}
bool guide = GContext.container.Resolve<GuideDataCenter>().InspectTriggerGuide("RewardPopupPanel");
//if (guide)
//{
// SetAutoClose(false);
//}
switch (showData.rewardType)
{
case RewardType.NormalOne:
reward1.gameObject.SetActive(true);
reward1.InitAsync(itemDatas);
break;
case RewardType.NormalRestore:
reward.gameObject.SetActive(true);
reward.InitRestore(itemDatas);
break;
case RewardType.Normal:
reward.gameObject.SetActive(true);
reward.InitAsync(itemDatas, textValue);
break;
case RewardType.FishBoxFly:
rewardFishBox.gameObject.SetActive(true);
rewardFishBox.Init(itemDatas, showData.textValue, "");
break;
case RewardType.FishBoxFlyRestore:
rewardFishBox.gameObject.SetActive(true);
rewardFishBox.Init(itemDatas, showData.textValue, LocalizationMgr.GetText("UI_FishingRewardPanel_101041"));
break;
case RewardType.FishBoxOpen:
rewardFishBoxOpen.gameObject.SetActive(true);
rewardFishBoxOpen.Init(itemDatas);
break;
case RewardType.CardHolder:
rewardBox1.exchangeItemData = null;
rewardBox1.OpenDataGifts();
break;
case RewardType.FeaturesUnlock:
featuresUnlock.id = showData.id;
featuresUnlock.gameObject.SetActive(true);
featuresUnlock.ShowPanel();
break;
case RewardType.BenefitUpgrade:
benefitUpgrade.itemData = showData.itemDatas[0];
benefitUpgrade.gameObject.SetActive(true);
benefitUpgrade.ShowPanel();
break;
case RewardType.NewRod:
ShowFishingAppearancePanel(itemDatas);
break;
case RewardType.FishCardBoxOpen:
ShowRewardPopupPanel_Fishcard(itemDatas[0]);
break;
}
}
async void ShowRewardPopupPanel_Fishcard(ItemData itemData)
{
GameObject go = await UIManager.Instance.ShowUI(new UIType("RewardPopupPanel_Fishcard"));
RewardPopupPanel_Fishcard panel_Fishcard = go.GetComponent<RewardPopupPanel_Fishcard>();
panel_Fishcard.Open(itemData);
}
async void ShowFishingAppearancePanel(List<ItemData> itemDatas)
{
GameObject go = await UIManager.Instance.ShowUILoad(UITypes.FishingAppearancePanel);
FishingAppearancePanel fishingAppearance = go.GetComponent<FishingAppearancePanel>();
fishingAppearance.ShowNewRod(itemDatas);
}
public void CheckMaskFadeAlpha()
{
maskCanvasGroup.DOFadeAlpha(maskAlpha, 1);
}
private void OnDestroy()
{
// Debug.Log($"[turntable] Current thread ID @ OnRewardPopupPanelDestroy: {System.Threading.Thread.CurrentThread.ManagedThreadId}");
// [REMOVED] Turntable deleted
// GContext.Publish(new FishingTurnTableContinueMultiDraw());
disposable?.Dispose();
disposable = null;
disposable1?.Dispose();
disposable1 = null;
rewardPopupData.tcs.SetResult(true);
}
}