// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2021-04-25 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** namespace G.UI { using PureMVC.Interfaces; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; /// /// /// partial class BattlePassWindow { #region Field #pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null [KUIFlag] Button _btnBack; [KUIFlag] TextMeshProUGUI _tmpLevel; [KUIFlag] TextMeshProUGUI _tmpExp; [KUIFlag] TextMeshProUGUI _tmpTime; [KUIFlag] Slider _sldExp; [KUIFlag] Button _btnGetToken; [KUIFlag] TextMeshProUGUI _tmpTokenStatus; [KUIFlag] KUIToggleGroup _goPages; [KUIFlag] Button _btnTips; [KUIFlag] GameObject _goPanel1; [KUIFlag] KUIGrid __gridRewars; [KUIFlag] GameObject _goPanel2; [KUIFlag] KUIList __listMissions; [KUIFlag] Button _btnOnekey; [KUIFlag] Image _imgTokenProgress; [KUIFlag] TextMeshProUGUI _tmpTokenProgress; #pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null #endregion #region Method /// /// /// public void InitView() { SetViewData(); __gridRewars.uiPool.AddTemplate(true); __listMissions.AddTemplate(true); _btnOnekey.onClick.AddListener(this.OnOnekeyBtnClick); _btnGetToken.onClick.AddListener(this.OnTokenBtnClick); _goPages.onToggleSelected.AddListener(this.OnToggleSelected); _btnBack.onClick.AddListener(this.OnBackBtnClick); _btnTips.onClick.AddListener(this.OnTipsBtnClick); ShowReward(); } /// /// /// public void RefreshView() { RefreshActivation(); if (_goPanel1.activeSelf) { RefreshReward(); } else if (_goPanel2.activeSelf) { RefreshMission(); } } /// /// /// public void UpdateView() { _tmpTime.text = BattlePassProxy.Instance.remainTimeString; } void RefreshActivation() { var proxy = BattlePassProxy.Instance; _tmpLevel.text = proxy.level.ToString(); _tmpExp.text = $"{proxy.exp}/{proxy.expMax}"; _sldExp.value = Mathf.Clamp01(proxy.exp / (float)proxy.expMax); if (BattlePassProxy.Instance.isActivation) { _btnGetToken.interactable = false; _imgTokenProgress.gameObject.SetActive(false); _tmpTokenStatus.text = "已激活"; _tmpTokenProgress.gameObject.SetActive(false); } else { _btnGetToken.interactable = true; _tmpTokenStatus.text = "激活"; var tokenCount = proxy.tokenCount; var tokenCountMax = Mathf.Max(1, proxy.tokenCountMax); _imgTokenProgress.gameObject.SetActive(true); _imgTokenProgress.fillAmount = 1f - tokenCount / (float)tokenCountMax; _tmpTokenProgress.gameObject.SetActive(true); _tmpTokenProgress.text = $"{tokenCount}/{tokenCountMax}"; } } void RefreshReward() { var infos = BattlePassProxy.Instance.GetBattlePassLevelInfos(); int offset = 0; for (int i = 0; i < infos.Length; i++) { if (!infos[i].isUnlock) { offset = i; break; } } offset = Mathf.Max(0, offset - 5); __gridRewars.ClearItems(); __gridRewars.uiPool.SetItemDatas(infos); __gridRewars.RefillItems(offset); } void RefreshMission() { __listMissions.Clear(); var missions = MissionProxy.Instance.weeklyMissions; for (int i = 0, c = missions.Count; i < c; i++) { var mission = missions[i]; if (!mission.isRewarded && (mission.prevMission == null || mission.prevMission.isRewarded)) __listMissions.GetItem().SetData(mission); } } public void ShowReward() { _goPanel2.SetActive(false); _goPanel1.SetActive(true); RefreshReward(); } public void ShowMission() { _goPanel1.SetActive(false); _goPanel2.SetActive(true); RefreshMission(); } private void OnToggleSelected(int index) { if (index == 0) { ShowReward(); } else if (index == 1) { ShowMission(); } SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void OnOnekeyBtnClick() { if (_goPanel1.activeSelf) { BattlePassProxy.Instance.CollectAllRewards((error, message) => { if (error == 0) { RefreshView(); } else if (error == ErrorCode.REWARD_EMPTY) { ToastBox.ShowText(KLocalization.GetLocalString(19)); } }); } else// if (_goPanel2.activeSelf) { MissionProxy.Instance.OneKeyGainRewards(5, null); BattlePassProxy.Instance.SyncExp(); RefreshView(); } SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void OnTokenBtnClick() { if (!BattlePassProxy.Instance.isActivation) { var result = BattlePassProxy.Instance.Activation(); //if (!result) //ToastBox.ShowText("元宝不足"); //OpenWindow(MissionWindow.DAILY_PANEL); //else if (result) { ToastBox.ShowText("战令已激活"); RefreshView(); } } else { ToastBox.ShowText("战令已激活"); } SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void OnBackBtnClick() { CloseWindow(this); SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void OnTipsBtnClick() { MessageBox.ShowMessage(KLocalization.GetLocalString(58), KLocalization.GetLocalString(59)); SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } #endregion #region Mediator readonly int[] _notificationInterests = new int[] { GlobalDefine.EVENT_MONEY_CHANGED, }; public override IList ListNotificationInterests() { return _notificationInterests; } public override void HandleNotification(INotification notification) { if (notification.Name == GlobalDefine.EVENT_MONEY_CHANGED) { RefreshActivation(); } } #endregion } }