using Cysharp.Threading.Tasks; using Framework; using Gameplay; using Gameplay.Common; using System; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; using Button = UnityEngine.UI.Button; using Image = UnityEngine.UI.Image; public class UI_CreditPointExchangePanelController : UIWindow { //UI GameObj ///Auto Gen Start/// public Image Image_TopBar; public Image Image_Bg; public Button Button_Close; public TMP_Text Text_Title; public Image Image_GoldBg; public Image Image_GoldIconBg; public Image Image_GoldIcon; public TMP_Text Text_GoldNum; public Image Image_DiamondBg; public Image Image_DiamondIconBg; public Image Image_DiamondIcon; public TMP_Text Text_DiamondNum; public Button Button_DiamondAdd; //public Button Button_Back; public Button Button_back; public TMP_Text Text_Back; public Button Button_Home; public Image Image_CreditPointBg; public Image Image_CreditPoint; public TMP_Text Text_CreditPointNum; public Image Image_Arrow; public Image Image_StuffBg; public Image Image_Stuff; public TMP_Text Text_StuffNum; public Button Button_Zero; public TMP_Text Text_Zero; public Button Button_Decrease; //public TMP_Text Text_Decrease; public Button Button_Add; //public TMP_Text Text_Add; public Button Button_Max; public TMP_Text Text_Max; public Image Image_NumBg; public TMP_Text Text_Num; public TMP_InputField InputField_Num; public TMP_Text Text_Cost; public Image Image_CostIcon; public TMP_Text Text_CostNum; public Button Button_ExchangeBtn; ///Auto Gen End/// public Image ImageActiveEnough; private bool showTip; private long UseCount = 0; private long exchangeCount = 0; private string creditPointLocalizeString; private string stuffLocalizeString; public async static UniTask Open(int defaultCount = 0, bool needShowTip = false) { CommonUtils.CaptureScreenshot(); var openData = new OpenData() { DefaultCount = defaultCount, NeedShowTip = needShowTip, }; return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_CreditPointExchangePanel, openData); } private class OpenData { public int DefaultCount; public bool NeedShowTip; } // deal with input data public override void PreLoad(object data = null) { if (data is not OpenData openData) return; UseCount = openData.DefaultCount; showTip = openData.NeedShowTip; } // Use this for initialization public override void OnInit() { //bind UI GameObj UI_CreditPointExchangePanelBinder.GetComponents(this); var rawImage = GetComponent("GaussianBlurMask"); rawImage.texture = CommonUtils.GetScreenTexture2D(); var itemCfg = TableManager.Instance.Tables.Item.DataMap[GLConfig.Inst.data.PurchaseDiamondID]; exchangeCount = itemCfg.Param3; var exchangeItemCfg = TableManager.Instance.Tables.Item.DataMap[itemCfg.Param2]; BindButton(Button_Close, OnBackClick); BindButton(Button_Add, OnPlusClick); BindButton(Button_Decrease, OnMinusClick); BindButton(Button_Max, OnMaxClick); BindButton(Button_Zero, OnZeroClick); BindButton(Button_ExchangeBtn, OnConfirmClick); BindButton(Button_DiamondAdd, OnButtonDiamondAddClick); creditPointLocalizeString = CommonUtils.GetLocalizeText(itemCfg.NameLocal); stuffLocalizeString = CommonUtils.GetLocalizeText(exchangeItemCfg.NameLocal); Text_Title.text = string.Format(CommonUtils.GetLocalizeText("shop_Creditpoint"), stuffLocalizeString); EventManager.Instance.Register(EventManager.EventName.ItemChange, OnItemChange); Text_CreditPointNum.text = $"{creditPointLocalizeString}*1"; Text_StuffNum.text = $"{stuffLocalizeString}*{exchangeCount}"; UI_CurrencyList currenyList = GetComponent("TopNode/UI_CurrencyList"); currenyList.SetData(new List<(bool, int)> { (false, GLConfig.Inst.data.DiamondItemId), (true, GLConfig.Inst.data.PurchaseDiamondID) }); InputField_Num.onSelect.AddListener((str) => { InputField_Num.text = UseCount.ToString(); }); InputField_Num.onEndEdit.AddListener((str) => { if (string.IsNullOrEmpty(str)) { UseCount = 0; } else { UseCount = long.Parse(str); if (UseCount <= 0) { UseCount = 0; } } RefreshCountUI(); }); } //invoke when open window protected override void OnShowWindow(object data = null) { ImageActiveEnough.gameObject.IsScaleShow(showTip); //RefreshTopBar(); RefreshCountUI(); UI_CurrencyList currenyList = GetComponent("TopNode/UI_CurrencyList"); currenyList.Refresh(); } //invoke when reload window protected override void OnReloadWindow(object data = null) { } //invoke when close window protected override void OnHideWindow() { } //invoke when destroy public override void OnRelease() { base.OnRelease(); EventManager.Instance.Unregister(EventManager.EventName.ItemChange, OnItemChange); } //void RefreshTopBar() //{ // Text_GoldNum.text = CategoryManager.Instance.GetItemCount(GLConfig.Inst.data.DiamondItemId).ToString(); // Text_DiamondNum.text = CategoryManager.Instance.GetItemCount(GLConfig.Inst.data.PurchaseDiamondID).ToString(); //} void RefreshCountUI() { var creditPoint = UseCount; var getItemCount = exchangeCount * creditPoint; //Text_CreditPointNum.text = creditPointLocalizeString + "*" + creditPoint; //Text_StuffNum.text = stuffLocalizeString + "*" + getItemCount.ToString(); string str = creditPoint.ToString(); if (UseCount > 999999999) { InputField_Num.text = UseCount.ToString("E"); Text_CostNum.text = creditPoint.ToString("E"); } else { InputField_Num.text = UseCount.ToString(); Text_CostNum.text = creditPoint.ToString(); } if (UseCount > CategoryManager.Instance.GetItemCount(GLConfig.Inst.data.PurchaseDiamondID)) { Text_CostNum.color = Color.red; } else { Text_CostNum.color = Color.white; } Button_ExchangeBtn.interactable = UseCount > 0; } void OnBackClick() { AudioManager.Instance.PlayAudio(Framework.Constants.Sound.COMMON_CLICK); CloseWindow(); } void OnPlusClick() { UseCount++; AudioManager.Instance.PlayAudio(Framework.Constants.Sound.COMMON_CLICK); RefreshCountUI(); } void OnMinusClick() { AudioManager.Instance.PlayAudio(Framework.Constants.Sound.COMMON_CLICK); if (UseCount > 0) { UseCount--; RefreshCountUI(); } } void OnMaxClick() { AudioManager.Instance.PlayAudio(Framework.Constants.Sound.COMMON_CLICK); UseCount = (int)CategoryManager.Instance.GetItemCount(GLConfig.Inst.data.PurchaseDiamondID); RefreshCountUI(); } void OnZeroClick() { AudioManager.Instance.PlayAudio(Framework.Constants.Sound.COMMON_CLICK); UseCount = 0; RefreshCountUI(); } void OnConfirmClick() { if (UseCount > 0) { AudioManager.Instance.PlayAudio(Framework.Constants.Sound.COMMON_CLICK); var maxCount = CategoryManager.Instance.GetItemCount(GLConfig.Inst.data.PurchaseDiamondID); if (UseCount > maxCount) { CommonUtils.ShowMessageTips(CommonUtils.GetLocalizeText("shop_CreditpointNotEnough")); return; } //NetHelper.UseItem((uint)GLConfig.Inst.data.PurchaseDiamondID, (uint)UseCount); UI_CreditPointExchangeTipController.Open(new long[] { UseCount, UseCount * exchangeCount }).Forget(); } } void OnButtonDiamondAddClick() { AudioManager.Instance.PlayAudio(Framework.Constants.Sound.COMMON_CLICK); UI_ShopNewController.Open(ShopManager.RechargeShopId).Forget(); } void OnItemChange(uint itemID) { if (itemID != GLConfig.Inst.data.PurchaseDiamondID) return; UseCount = 0; //RefreshTopBar(); RefreshCountUI(); UI_CurrencyList currenyList = GetComponent("TopNode/UI_CurrencyList"); currenyList.Refresh(); } }