using TMPro;
using System;
using Gameplay;
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();
}
}