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 { /// /// 打开购买界面 /// public static async UniTask 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.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/// /// /// 高斯模糊遮罩 /// private RawImage rawImageGaussianBlurMask; private DataCurrencyShopCfg currencyShopCfg; private List toggles; public override void PreLoad(object data = null) { } // Use this for initialization public override void OnInit() { UI_PayWindowBinder.GetComponents(this); rawImageGaussianBlurMask = GetComponent("GaussianBlurMask"); rawImageGaussianBlurMask.texture = CommonUtils.GetScreenTexture2D(); BindButton(Button_Back, Back); BindButton(Button_Pay, OnSurePay); // 开关 toggles = new List { 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.IAPBuyGoods(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) { 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(); } }