281 lines
6.2 KiB
C#
281 lines
6.2 KiB
C#
// ***********************************************************************
|
|
// Assembly : Game
|
|
// Author : Kimch
|
|
// Created : 2021-04-25
|
|
// Description :
|
|
// Last Modified By :
|
|
// Last Modified On :
|
|
// ***********************************************************************
|
|
// <copyright file= "BattlePassWindow.View" company="Kunpo"></copyright>
|
|
// <summary></summary>
|
|
// ***********************************************************************
|
|
namespace G.UI
|
|
{
|
|
using PureMVC.Interfaces;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
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
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public void InitView()
|
|
{
|
|
SetViewData();
|
|
__gridRewars.uiPool.AddTemplate<RewardWidget>(true);
|
|
__listMissions.AddTemplate<MissionWidget>(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();
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public void RefreshView()
|
|
{
|
|
RefreshActivation();
|
|
|
|
if (_goPanel1.activeSelf)
|
|
{
|
|
RefreshReward();
|
|
}
|
|
else if (_goPanel2.activeSelf)
|
|
{
|
|
RefreshMission();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
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>(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<int> ListNotificationInterests()
|
|
{
|
|
return _notificationInterests;
|
|
}
|
|
|
|
public override void HandleNotification(INotification notification)
|
|
{
|
|
if (notification.Name == GlobalDefine.EVENT_MONEY_CHANGED)
|
|
{
|
|
RefreshActivation();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|