179 lines
4.7 KiB
C#
179 lines
4.7 KiB
C#
using TMPro;
|
|
using System;
|
|
using Gameplay;
|
|
using Gameplay.Net;
|
|
using cfg.ChargeCfg;
|
|
using UnityEngine.UI;
|
|
using Cysharp.Threading.Tasks;
|
|
using System.Collections.Generic;
|
|
using Image = UnityEngine.UI.Image;
|
|
using Button = UnityEngine.UI.Button;
|
|
using Toggle = UnityEngine.UI.Toggle;
|
|
|
|
public class UI_PayWindowController : UIWindow
|
|
{
|
|
/// <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;
|
|
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),
|
|
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);
|
|
#else
|
|
NetHelper.InAppPurchaseTest((uint)currencyShopCfg.Id);
|
|
#endif
|
|
/*UITipsManager.ShowTips("充值未开放");*/
|
|
}
|
|
|
|
private void Back()
|
|
{
|
|
CloseWindow();
|
|
}
|
|
|
|
//invoke when open window
|
|
protected override void OnShowWindow(object data)
|
|
{
|
|
if (data != null)
|
|
{
|
|
currencyShopCfg = data as DataCurrencyShopCfg;
|
|
RefreshGoods();
|
|
}
|
|
}
|
|
|
|
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()
|
|
{
|
|
base.OnRelease();
|
|
}
|
|
} |