备份CatanBuilding瘦身独立工程
This commit is contained in:
169
Assets/Scripts/UI/BattlePass/BPBanner.cs
Normal file
169
Assets/Scripts/UI/BattlePass/BPBanner.cs
Normal file
@@ -0,0 +1,169 @@
|
||||
using asap.core;
|
||||
using DG.Tweening;
|
||||
using GameCore;
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class BPBanner : MonoBehaviour
|
||||
{
|
||||
#region Banner
|
||||
[SerializeField]
|
||||
TMP_Text txt_exp, txt_level;
|
||||
|
||||
[SerializeField]
|
||||
Image img_expBar;
|
||||
|
||||
[SerializeField]
|
||||
Animation anim_levelCoin;
|
||||
[SerializeField]
|
||||
RewardItemNew _tokenItem;
|
||||
#endregion
|
||||
|
||||
BattlePassDataProvider _dataProvider;
|
||||
|
||||
public async void RefreshLevelBanner()
|
||||
{
|
||||
_dataProvider = GContext.container.Resolve<BattlePassDataProvider>();
|
||||
|
||||
_tokenItem.SetData(new ItemData { id = _dataProvider.curPassMain.ExpItem, count = 0 });
|
||||
_tokenItem.transform.Find("text_num").gameObject.SetActive(false);
|
||||
var nextLevel = _dataProvider.GetBPNextLevel;
|
||||
var maxLevel = _dataProvider.BPMaxLevel;
|
||||
|
||||
txt_level.text = nextLevel.ToString();
|
||||
|
||||
var curExp = _dataProvider.GetBPCurExp();
|
||||
|
||||
var levelUpExp = _dataProvider.GetTotalExpFromLevelRange(nextLevel - 1, nextLevel);
|
||||
//满级了
|
||||
if (_dataProvider.GetBPCurLevel == maxLevel)
|
||||
{
|
||||
txt_exp.text = LocalizationMgr.GetText("UI_FishingRodPanel_Advanced_18");
|
||||
img_expBar.fillAmount = 1;
|
||||
return;
|
||||
}
|
||||
txt_exp.text = $"{curExp}/{levelUpExp}";
|
||||
img_expBar.fillAmount = (float)curExp / (float)levelUpExp;
|
||||
|
||||
|
||||
if (_dataProvider.CheckIfPopBuyVipPanel())
|
||||
{
|
||||
await UIManager.Instance.ShowUI(UITypes.BattlePassBuyNoticePopupPanel);
|
||||
_dataProvider.UpdateVipToastLevel();
|
||||
}
|
||||
}
|
||||
|
||||
public async void ResAnimation(CancellationToken token, float _fillTime, float _levelUpWaitTime)
|
||||
{
|
||||
var curNextLevel = int.Parse(txt_level.text);
|
||||
var newNextLevel = _dataProvider.GetBPNextLevel;
|
||||
var maxLevel = _dataProvider.BPMaxLevel;
|
||||
if (curNextLevel == maxLevel)
|
||||
{
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
do
|
||||
{
|
||||
var levelUpExp = _dataProvider.GetTotalExpFromLevelRange(curNextLevel - 1, curNextLevel);
|
||||
var addation = 0;
|
||||
|
||||
if (_dataProvider.GetBPCurLevel == maxLevel)
|
||||
{
|
||||
addation = 1;
|
||||
}
|
||||
var curExp = (addation + img_expBar.fillAmount) * levelUpExp + addation;
|
||||
|
||||
|
||||
if (curNextLevel < newNextLevel)
|
||||
{
|
||||
|
||||
img_expBar.DOFillAmount(1f, _fillTime).OnUpdate(
|
||||
() =>
|
||||
{
|
||||
var curExp = img_expBar.fillAmount * levelUpExp;
|
||||
txt_exp.text = $"{(int)curExp}/{levelUpExp}";
|
||||
}
|
||||
).OnComplete(() => anim_levelCoin.Play()).SetId("BPFill1");
|
||||
await Task.Delay((int)((_fillTime + _levelUpWaitTime) * 1000), token);
|
||||
if (this == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
curNextLevel++;
|
||||
txt_level.text = (curNextLevel).ToString();
|
||||
img_expBar.fillAmount = 0f;
|
||||
curExp = 0;
|
||||
levelUpExp = _dataProvider.GetTotalExpFromLevelRange(curNextLevel - 1, curNextLevel);
|
||||
txt_exp.text = $"{(int)curExp}/{levelUpExp}";
|
||||
}
|
||||
else
|
||||
{
|
||||
var targetExp = _dataProvider.Data.BattlePassRecord.Exp;
|
||||
//满级了
|
||||
if (_dataProvider.GetBPCurLevel == maxLevel)
|
||||
{
|
||||
|
||||
levelUpExp = _dataProvider.GetTotalExpFromLevelRange(_dataProvider.BPMaxLevel - 1, _dataProvider.BPMaxLevel);
|
||||
targetExp += levelUpExp;
|
||||
}
|
||||
var curRate = 0f;
|
||||
var txts = txt_exp.text.Split('/');
|
||||
var curFillAmount = (float)int.Parse(txts[0]) / (float)int.Parse(txts[1]);
|
||||
DOTween.To(
|
||||
() => curFillAmount,
|
||||
(value) => curRate = value,
|
||||
(float)targetExp / (float)levelUpExp,
|
||||
_fillTime
|
||||
).OnUpdate(
|
||||
|
||||
() =>
|
||||
{
|
||||
img_expBar.fillAmount = curRate;
|
||||
var curExp = curRate * levelUpExp;
|
||||
|
||||
txt_exp.text = $"{(int)curExp}/{levelUpExp}";
|
||||
}
|
||||
);
|
||||
|
||||
await Task.Delay((int)(_fillTime * 1000), token);
|
||||
if (this == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
} while (curNextLevel <= newNextLevel && curNextLevel <= maxLevel);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
DOTween.Kill("BPFill1");
|
||||
DOTween.Kill("BPFill2");
|
||||
return;
|
||||
}
|
||||
finally
|
||||
{
|
||||
}
|
||||
txt_level.text = $"{newNextLevel}";
|
||||
if (_dataProvider.GetBPCurLevel == maxLevel)
|
||||
{
|
||||
txt_exp.text = LocalizationMgr.GetText("UI_FishingRodPanel_Advanced_18");
|
||||
return;
|
||||
}
|
||||
txt_exp.text = $"{(int)(_dataProvider.Data.BattlePassRecord.Exp + (_dataProvider.GetBPCurLevel == maxLevel ? 1000 : 0))}/{_dataProvider.GetTotalExpFromLevelRange(_dataProvider.GetBPNextLevel - 1, _dataProvider.GetBPNextLevel)}";
|
||||
// txt_level.text = newLevel.ToString();
|
||||
|
||||
if (_dataProvider.CheckIfPopBuyVipPanel())
|
||||
{
|
||||
await UIManager.Instance.ShowUI(UITypes.BattlePassBuyNoticePopupPanel);
|
||||
_dataProvider.UpdateVipToastLevel();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user