// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2020-12-01 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** using PureMVC.Interfaces; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; namespace G.UI { partial class ChaPanel { /// /// /// public class BagPage : KUIWidget { #region Field #pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null [KUIFlag] KUIGrid __gridEquipments; [KUIFlag] KUIGrid __gridProps; [KUIFlag] Button _btnOneSell; [KUIFlag] Button _btnOneSet; [KUIFlag] Toggle _tgSort; [KUIFlag] TextMeshProUGUI _tmpSortLabel; [KUIFlag] Button _btnOneUpGem; [KUIFlag] Button _btnOneSetGem; [KUIFlag] Button _btnCombine; [KUIFlag] Button _btnExpansion; [KUIFlag] TextMeshProUGUI _tmpCapacity; #pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null private int _sortModel = 1; private int _pageType = 0; private SmartCostWidget _smartCostWidget; #endregion #region Method /// /// /// public override void Refresh() { if (_pageType == 0) { __gridProps.gameObject.SetActive(false); __gridEquipments.gameObject.SetActive(true); _tgSort.gameObject.SetActive(true); _btnOneSet.gameObject.SetActive(true); _btnOneSell.gameObject.SetActive(true); _btnCombine.gameObject.SetActive(FunctionProxy.Instance.GetFunctionUnlock(FunctionProxy.FunctionId.重铸)); _btnOneUpGem.gameObject.SetActive(false); _btnOneSetGem.gameObject.SetActive(false); var bagEquipments = BagProxy.Instance.GetBagEquipments(_sortModel); __gridEquipments.uiPool.SetItemDatas(bagEquipments); __gridEquipments.RefillItems();//refill _btnExpansion.gameObject.SetActive(true); _smartCostWidget.SetAdTicket(MoneyProxy.Instance.GetMoney(Item.Id.kAdTicket)); RefreshBagCapacity(); //_tmpCapacity.text = $"{bagEquipments.Count}/{BagProxy.Instance.bagCapacity}"; } else { __gridEquipments.gameObject.SetActive(false); __gridProps.gameObject.SetActive(true); _tgSort.gameObject.SetActive(false); _btnOneSet.gameObject.SetActive(false); _btnOneSell.gameObject.SetActive(false); _btnCombine.gameObject.SetActive(false); _btnOneUpGem.gameObject.SetActive(true); _btnOneSetGem.gameObject.SetActive(true); var bagProps = BagProxy.Instance.GetBagProps(); __gridProps.uiPool.SetItemDatas(bagProps); __gridProps.RefillItems(); _btnExpansion.gameObject.SetActive(false); } } private void RefreshDataOnly() { if (_pageType == 0) { var bagEquipments = BagProxy.Instance.GetBagEquipments(_sortModel); __gridEquipments.uiPool.SetItemDatas(bagEquipments); __gridEquipments.RefreshItems(); } else { var bagProps = BagProxy.Instance.GetBagProps(); __gridProps.uiPool.SetItemDatas(bagProps); __gridProps.RefreshItems(); } } private void RefreshBagCapacity() { int cur = BagProxy.Instance.GetBagItemCount(); int max = BagProxy.Instance.bagCapacity; if (cur > max) _tmpCapacity.color = Color.red; else _tmpCapacity.color = Color.black; _tmpCapacity.text = $"{cur}/{max}"; } public void ShowPage(int index) { _pageType = index; Refresh(); } private void OnBtnOneSellClick() { KUIWindow.OpenWindow(); SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void OnBtnOneSetClick() { BagProxy.Instance.OneKeySetEquipments(); SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } /// /// /// private void OnBtnOneUpGemClick() { KUIWindow.OpenWindow(); SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } /// /// /// private void OnBtnOneSetGemClick() { if (!BagProxy.Instance.OneKeySetGems()) { ToastBox.ShowText(KLocalization.GetLocalString(23)); } SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void OnCombineBtnClick() { KUIWindow.OpenWindow(); SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void OnSortToggleValueChanged(bool value) { if (value) { _tmpSortLabel.text = "按等级排序"; if (_sortModel != 1) { _sortModel = 1; RefreshDataOnly(); } } else { _tmpSortLabel.text = "按品质排序"; if (_sortModel != 2) { _sortModel = 2; RefreshDataOnly(); } } SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void OnExpansionBtnClick() { if (!BagProxy.Instance.isBagCapacityLimit) { AdProxy.Instance.PlayAdChange("bag", "add_capacity", (error, message) => { if (error == 0) { BagProxy.Instance.bagCapacity += 5; RefreshBagCapacity(); ToastBox.ShowText("背包容积+5"); } }); } else { ToastBox.ShowText("背包容积已达上限"); } } #endregion #region Unity /// /// /// private void Awake() { SetViewData(); //var ei = __gridEquipments.uiPool.AddTemplate(true); //ei.SetParticleMask(true); __gridEquipments.uiPool.AddTemplate(true); __gridProps.uiPool.AddTemplate(true); _tgSort.onValueChanged.AddListener(this.OnSortToggleValueChanged); _btnOneSet.onClick.AddListener(this.OnBtnOneSetClick); _btnOneSell.onClick.AddListener(this.OnBtnOneSellClick); _btnOneUpGem.onClick.AddListener(this.OnBtnOneUpGemClick); _btnOneSetGem.onClick.AddListener(this.OnBtnOneSetGemClick); _btnCombine.onClick.AddListener(this.OnCombineBtnClick); _btnExpansion.onClick.AddListener(this.OnExpansionBtnClick); _smartCostWidget = _btnExpansion.gameObject.AddComponent(); } private bool _started; private System.Collections.IEnumerator Start() { yield return null; _started = true; Refresh(); } private void OnEnable() { GlobalVar.BagPageShow = true; RegisterThis(); if (_started) Refresh(); } private void OnDisable() { GlobalVar.BagPageShow = false; UnregisterThis(); } readonly int[] _notificationInterests = new int[] { GlobalDefine.EVENT_PLAYER_EQUIPMENT_CHANGED, GlobalDefine.EVENT_EQUIPMENT_SELL, GlobalDefine.EVENT_EQUIPMENT_GET, GlobalDefine.EVENT_EQUIPMENT_LOCK, GlobalDefine.EVENT_GEM_CHANGED, GlobalDefine.EVENT_PROP_CHANGED,}; public override IList ListNotificationInterests() { return _notificationInterests; } public override void HandleNotification(INotification notification) { if (notification.Name == GlobalDefine.EVENT_PLAYER_EQUIPMENT_CHANGED) { if (notification.Type == "set" || notification.Type == "sets") RefreshDataOnly(); } else if (notification.Name == GlobalDefine.EVENT_EQUIPMENT_SELL) { ToastBox.ShowText(string.Format(KLocalization.GetLocalString(21), notification.Body)); if (notification.Type == "sell") RefreshDataOnly(); else Refresh(); } else if (notification.Name == GlobalDefine.EVENT_EQUIPMENT_GET) { Refresh(); } else if (notification.Name == GlobalDefine.EVENT_EQUIPMENT_LOCK) { RefreshDataOnly(); } else if (notification.Name == GlobalDefine.EVENT_GEM_CHANGED) { Refresh(); } else if (notification.Name == GlobalDefine.EVENT_PROP_CHANGED) { Refresh(); } } #endregion } } }