272 lines
9.8 KiB
C#
272 lines
9.8 KiB
C#
using asap.core;
|
|
using game;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
using UniRx;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using GameCore;
|
|
using TMPro;
|
|
|
|
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 RewardAlbumComplete rewardAlbumComplete;
|
|
public RewardAlbumAllComplete rewardAlbumAllComplete;
|
|
public FeaturesUnlock featuresUnlock;
|
|
public BenefitUpgrade benefitUpgrade;
|
|
public RewardFishCardUpgrade rewardFishCardUpgrade;
|
|
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>();
|
|
rewardAlbumComplete = transform.Find("album_complete").GetComponent<RewardAlbumComplete>();
|
|
rewardAlbumAllComplete = transform.Find("album_all_complete").GetComponent<RewardAlbumAllComplete>();
|
|
featuresUnlock = transform.Find("features_unlock").GetComponent<FeaturesUnlock>();
|
|
benefitUpgrade = transform.Find("Benefit_upgrade").GetComponent<BenefitUpgrade>();
|
|
rewardFishCardUpgrade = transform.Find("reward_fishcard_upgrade").GetComponent<RewardFishCardUpgrade>();
|
|
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);
|
|
rewardAlbumComplete.gameObject.SetActive(false);
|
|
rewardAlbumAllComplete.gameObject.SetActive(false);
|
|
featuresUnlock.gameObject.SetActive(false);
|
|
benefitUpgrade.gameObject.SetActive(false);
|
|
rewardFishCardUpgrade.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.NormalOneRestore:
|
|
// reward1.gameObject.SetActive(true);
|
|
// reward1.InitRestore(itemDatas);
|
|
// break;
|
|
|
|
case RewardType.NormalOne:
|
|
reward1.gameObject.SetActive(true);
|
|
reward1.InitAsync(itemDatas);
|
|
break;
|
|
case RewardType.NormalOneRestore:
|
|
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.FishBox:
|
|
rewardFishBox.isFly = false;
|
|
|
|
rewardFishBox.gameObject.SetActive(true);
|
|
rewardFishBox.Init(itemDatas, showData.textValue, "");
|
|
break;
|
|
|
|
case RewardType.FishBoxFly:
|
|
rewardFishBox.isFly = true;
|
|
rewardFishBox.gameObject.SetActive(true);
|
|
rewardFishBox.Init(itemDatas, showData.textValue, "");
|
|
break;
|
|
|
|
case RewardType.FishBoxFlyRestore:
|
|
rewardFishBox.isFly = true;
|
|
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.itemDataGifts = showData.itemDataGifts;
|
|
rewardBox1.exchangeItemData = null;
|
|
rewardBox1.Show();
|
|
break;
|
|
|
|
case RewardType.CollectionAlbum:
|
|
if (showData.id == 0)
|
|
{
|
|
rewardAlbumAllComplete.gameObject.SetActive(true);
|
|
rewardAlbumAllComplete.itemDatas = itemDatas;
|
|
rewardAlbumAllComplete.Show(rewardItems);
|
|
}
|
|
else
|
|
{
|
|
rewardAlbumComplete.gameObject.SetActive(true);
|
|
rewardAlbumComplete.itemDatas = itemDatas;
|
|
rewardAlbumComplete.Show(showData.id, rewardItems);
|
|
}
|
|
break;
|
|
|
|
case RewardType.FeaturesUnlock:
|
|
featuresUnlock.id = showData.id;
|
|
featuresUnlock.gameObject.SetActive(true);
|
|
break;
|
|
|
|
case RewardType.BenefitUpgrade:
|
|
benefitUpgrade.itemData = showData.itemDatas[0];
|
|
benefitUpgrade.gameObject.SetActive(true);
|
|
break;
|
|
|
|
case RewardType.FishCardUpgrade:
|
|
rewardFishCardUpgrade.InitAsync(showData.id);
|
|
break;
|
|
|
|
case RewardType.NewRod:
|
|
ShowFishingAppearancePanel(itemDatas);
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
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}");
|
|
GContext.Publish(new FishingTurnTableContinueMultiDraw());
|
|
GContext.Publish(new FishingChallengeContinueEvent());
|
|
disposable?.Dispose();
|
|
disposable = null;
|
|
disposable1?.Dispose();
|
|
disposable1 = null;
|
|
rewardPopupData.tcs.SetResult(true);
|
|
}
|
|
}
|