// ***********************************************************************
// 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
}
}