NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_PayWindowController.cs

179 lines
4.7 KiB
C#
Raw Normal View History

2024-11-11 12:14:56 +08:00
using TMPro;
2024-11-11 15:35:17 +08:00
using System;
using Gameplay;
2024-11-18 12:36:17 +08:00
using Gameplay.Net;
2024-11-11 15:35:17 +08:00
using cfg.ChargeCfg;
2024-11-11 12:14:56 +08:00
using UnityEngine.UI;
2024-11-11 15:35:17 +08:00
using Cysharp.Threading.Tasks;
using System.Collections.Generic;
2024-11-11 12:14:56 +08:00
using Image = UnityEngine.UI.Image;
2024-11-11 15:35:17 +08:00
using Button = UnityEngine.UI.Button;
2024-11-11 12:14:56 +08:00
using Toggle = UnityEngine.UI.Toggle;
public class UI_PayWindowController : UIWindow
{
2024-11-11 15:35:17 +08:00
/// <summary>
/// 打开购买界面
/// </summary>
public static async UniTask<UIWindow> Open(DataCurrencyShopCfg cfg)
{
CommonUtils.CaptureScreenshot();
return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_Pay, cfg);
}
private class PayChannel
{
public Toggle toggle;
public IAPManager.PayChannel payChannel;
public PayChannel(Toggle toggle, IAPManager.PayChannel payChannel)
{
this.toggle = toggle;
this.payChannel = payChannel;
}
public void SetInfo(Action callback)
{
toggle.isOn = payChannel == IAPManager.Instance.CurrentPayChannel;
2024-11-11 15:35:17 +08:00
toggle.onValueChanged.RemoveAllListeners();
toggle.onValueChanged.AddListener(isOn =>
{
if (!isOn && IAPManager.Instance.CurrentPayChannel == payChannel)
{
toggle.isOn = true;
return;
}
if (isOn)
{
callback?.Invoke();
}
});
}
}
//UI GameObj
public Button Button_Back;
public TMP_Text Text_Title;
public Image Image_PriceIcon;
public TMP_Text Text_Price;
public TMP_Text Text_GoodsName;
public Image Image_ShortLine;
public Image Image_Icon_Alipay;
public TMP_Text Text_Name_Alipay;
public Image Image_Suggest_Alipay;
public TMP_Text Text_Suggest_Alipay;
public Toggle Toggle_Select_Alipay;
public Image Image_Icon_Wechat;
public TMP_Text Text_Name_Wechat;
public Image Image_Suggest_Wechat;
public TMP_Text Text_Suggest_Wechat;
public Toggle Toggle_Select_Wechat;
public Image Image_Icon_Huabei;
public TMP_Text Text_Name_Huabei;
public Image Image_Suggest_Huabei;
public TMP_Text Text_Suggest_Huabei;
public Toggle Toggle_Select_Huabei;
public Image Image_LongLine1;
public Button Button_Pay;
public Image Image_TopBlackBar;
public Image Image_BottomBlackBar;
///Auto Gen End///
/// <summary>
/// 高斯模糊遮罩
/// </summary>
private RawImage rawImageGaussianBlurMask;
private DataCurrencyShopCfg currencyShopCfg;
private List<PayChannel> toggles;
public override void PreLoad(object data = null)
{
}
// Use this for initialization
public override void OnInit()
{
UI_PayWindowBinder.GetComponents(this);
rawImageGaussianBlurMask = GetComponent<RawImage>("GaussianBlurMask");
rawImageGaussianBlurMask.texture = CommonUtils.GetScreenTexture2D();
BindButton(Button_Back, Back);
BindButton(Button_Pay, OnSurePay);
// 开关
toggles = new List<PayChannel>
{
new(Toggle_Select_Alipay, IAPManager.PayChannel.Alipay),
new(Toggle_Select_Wechat, IAPManager.PayChannel.WeChat),
2024-11-11 15:35:17 +08:00
new(Toggle_Select_Huabei, IAPManager.PayChannel.Huabei)
};
foreach (var toggle in toggles)
{
toggle.SetInfo(() => OnToggleValueChanged(toggle));
}
}
private void OnToggleValueChanged(PayChannel selectedChannel)
{
if (selectedChannel.toggle.isOn)
{
IAPManager.Instance.SetCurrentPayChannel(selectedChannel.payChannel);
foreach (var toggle in toggles)
{
if (toggle != selectedChannel)
{
toggle.toggle.isOn = false;
}
}
}
}
private void OnSurePay()
{
#if DEVELOPMENT_BUILD || DEBUG
IAPManager.Instance.CheckAndBuyGoods(currencyShopCfg.Id);
2024-11-11 15:35:17 +08:00
#else
NetHelper.InAppPurchaseTest((uint)currencyShopCfg.Id);
#endif
/*UITipsManager.ShowTips("充值未开放");*/
}
private void Back()
{
CloseWindow();
}
//invoke when open window
protected override void OnShowWindow(object data)
{
2024-12-11 15:50:55 +08:00
if (data != null)
{
currencyShopCfg = data as DataCurrencyShopCfg;
RefreshGoods();
}
2024-11-11 15:35:17 +08:00
}
private void RefreshGoods()
{
Text_GoodsName.text = CommonUtils.GetLocalizeText(currencyShopCfg.NameLocal);
Text_Price.text = currencyShopCfg.NowPriceRMB.ToString();
}
//invoke when close window
protected override void OnHideWindow()
{
}
//invoke when destroy
public override void OnRelease()
2024-11-11 12:14:56 +08:00
{
2024-11-11 15:35:17 +08:00
base.OnRelease();
2024-11-11 12:14:56 +08:00
}
2024-11-11 15:35:17 +08:00
}