备份CatanBuilding瘦身独立工程
This commit is contained in:
271
Assets/Scripts/UI/RewardPopup/RewardPopupPanel.cs
Normal file
271
Assets/Scripts/UI/RewardPopup/RewardPopupPanel.cs
Normal file
@@ -0,0 +1,271 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user