备份CatanBuilding瘦身独立工程
This commit is contained in:
218
Assets/Scripts/UI/BattlePass/BattlePassRecordPanel.cs
Normal file
218
Assets/Scripts/UI/BattlePass/BattlePassRecordPanel.cs
Normal file
@@ -0,0 +1,218 @@
|
||||
using asap.core;
|
||||
using game;
|
||||
using GameCore;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class BattlePassRecordPanel : MonoBehaviour
|
||||
{
|
||||
[Range(0f, 2f), SerializeField]
|
||||
private float waveWaitTimer = 1.2f;
|
||||
|
||||
[SerializeField]
|
||||
BPRewardBar pfb_bar;
|
||||
[SerializeField]
|
||||
Button btn_buyLevel;
|
||||
//[SerializeField]
|
||||
//GameObject buyGO;
|
||||
|
||||
[SerializeField]
|
||||
GameObject
|
||||
go_cashBox_mask,
|
||||
go_cashBox;
|
||||
|
||||
[SerializeField]
|
||||
Transform
|
||||
tran_barParent,
|
||||
bottom,
|
||||
mask_content;
|
||||
|
||||
[SerializeField]
|
||||
Button
|
||||
btn_GetAllReward;
|
||||
|
||||
[SerializeField]
|
||||
PanelScroll
|
||||
sr_bars;
|
||||
|
||||
[SerializeField]
|
||||
TMP_Text
|
||||
txt_bpRedeemCount,
|
||||
txt_cashBox,
|
||||
text_num_icon_money;
|
||||
|
||||
List<int> rewardBarDatas = new();
|
||||
Dictionary<int, BPRewardBar> dic_bars = new();
|
||||
BattlePassDataProvider _dataProvider;
|
||||
PlayerItemData _playerItemData;
|
||||
CompositeDisposable disposables = new();
|
||||
|
||||
private int _curSpeicalIndex;
|
||||
public void Awake()
|
||||
{
|
||||
_dataProvider = GContext.container.Resolve<BattlePassDataProvider>();
|
||||
_playerItemData = GContext.container.Resolve<PlayerItemData>();
|
||||
for (int j = 0; j < _dataProvider.BPMaxLevel; j++)
|
||||
{
|
||||
rewardBarDatas.Add(j + 1);
|
||||
}
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
btn_buyLevel?.onClick.AddListener(async () => await UIManager.Instance.ShowUI(UITypes.BattlePassBuyGradePopupPanel));
|
||||
RefreshView();
|
||||
GContext.OnEvent<GetBattlePassRewardEvent>().Subscribe(OnGetBPReward).AddTo(disposables);
|
||||
|
||||
GContext.OnEvent<BpGetExp>().Subscribe(_ => RefreshGetAllBtn()).AddTo(disposables);
|
||||
txt_bpRedeemCount.text = "100";
|
||||
text_num_icon_money.text = (_playerItemData.GetExtraCoinMag(_dataProvider.curPassMain.ExpToCash)).ToString();
|
||||
btn_GetAllReward.OnClickAsObservable().Subscribe(x => OnGetAllReward()).AddTo(disposables);
|
||||
}
|
||||
|
||||
public async void BpVipUnlock()
|
||||
{
|
||||
await new WaitForSeconds(waveWaitTimer);
|
||||
if (this == null)
|
||||
return;
|
||||
var go = sr_bars.transform.Find("particle_jiesuo").gameObject;
|
||||
go.SetActive(true);
|
||||
await new WaitForSeconds(2f);
|
||||
if (this != null)
|
||||
go.SetActive(false);
|
||||
}
|
||||
|
||||
public void Open()
|
||||
{
|
||||
gameObject.SetActive(true);
|
||||
}
|
||||
public void Close()
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
public void RefreshView()
|
||||
{
|
||||
_dataProvider.CheckIfRefreshBattblePass();
|
||||
pfb_bar.gameObject.SetActive(false);
|
||||
dic_bars.Clear();
|
||||
|
||||
|
||||
for (int i = tran_barParent.childCount - 1; i >= 2; i--)
|
||||
{
|
||||
Destroy(tran_barParent.GetChild(i).gameObject);
|
||||
}
|
||||
|
||||
var pos = _dataProvider.GetBarsDefaultPos() + 1;
|
||||
if (_dataProvider.GetBPCurLevel == _dataProvider.BPMaxLevel)
|
||||
{
|
||||
sr_bars.Init<BPRewardBar, int>(pfb_bar.rectTransform.rect.height, pfb_bar.gameObject, null, rewardBarDatas, _currentIndex: _dataProvider.BPMaxLevel);
|
||||
sr_bars.verticalNormalizedPosition = 0f;
|
||||
// sr_bars.JumpToTarget(_dataProvider.BPMaxLevel,maxLevelOffsetY);
|
||||
}
|
||||
else
|
||||
{
|
||||
sr_bars.Init<BPRewardBar, int>(pfb_bar.rectTransform.rect.height, pfb_bar.gameObject, null, rewardBarDatas, _currentIndex: _dataProvider.GetBarsDefaultPos() - 1);
|
||||
if (pos <= 3)
|
||||
{
|
||||
sr_bars.verticalNormalizedPosition = 1f;
|
||||
}
|
||||
else
|
||||
{
|
||||
sr_bars.JumpToTarget(pos);
|
||||
}
|
||||
}
|
||||
|
||||
RefreshGetAllBtn();
|
||||
sr_bars.onValueChanged.AddListener(OnValueChanged);
|
||||
bottom.GetComponent<RectTransform>().sizeDelta = tran_barParent.GetComponent<RectTransform>().sizeDelta;
|
||||
}
|
||||
|
||||
private void RefreshGetAllBtn()
|
||||
{
|
||||
txt_cashBox.text = ConvertTools.GetNumberString(_playerItemData.GetExtraCoinMag(_dataProvider.GetCashBoxCount()));
|
||||
go_cashBox_mask.SetActive(_dataProvider.GetBPCurLevel < _dataProvider.BPMaxLevel);
|
||||
//btn_buyLevel.transform.parent.gameObject.SetActive(_dataProvider.GetBPCurLevel < _dataProvider.BPMaxLevel);
|
||||
//go_cashBox_mask.SetActive(_dataProvider.GetCashBoxCount() <= 0);
|
||||
btn_GetAllReward.transform.parent.gameObject.SetActive(_dataProvider.GetAllToGetRewardCount() >= 1);
|
||||
bottom.localPosition = new Vector3(0, -_dataProvider.GetBPCurLevel * pfb_bar.rectTransform.rect.height, 0);
|
||||
}
|
||||
void OnValueChanged(Vector2 pos)
|
||||
{
|
||||
mask_content.position = tran_barParent.position;
|
||||
}
|
||||
|
||||
private void OnGetBPReward(GetBattlePassRewardEvent data)
|
||||
{
|
||||
List<int> dropIDs = new List<int>();
|
||||
for (int i = 0; i < data.NormalLevels.Count; i++)
|
||||
{
|
||||
dropIDs.Add(_dataProvider.GetSlotDropID(data.NormalLevels[i], true));
|
||||
_dataProvider.SetLevelRewardGet(data.NormalLevels[i], true);
|
||||
}
|
||||
for (int i = 0; i < data.VipLevels.Count; i++)
|
||||
{
|
||||
dropIDs.Add(_dataProvider.GetSlotDropID(data.VipLevels[i], false));
|
||||
_dataProvider.SetLevelRewardGet(data.VipLevels[i], false);
|
||||
}
|
||||
|
||||
var itemDatas = _playerItemData.AddItemByDropList(dropIDs);
|
||||
GContext.Publish(new ShowData());
|
||||
_dataProvider.Data.SaveBattlePassRecord();
|
||||
#if AGG
|
||||
using (var e = GEvent.GameEvent("bp_level_reward"))
|
||||
{
|
||||
e.AddContent("bp_level", _dataProvider.GetBPCurLevel)
|
||||
.AddContent("drop_id_list", JsonConvert.SerializeObject(dropIDs));
|
||||
if (itemDatas != null && itemDatas.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < itemDatas.Count; i++)
|
||||
{
|
||||
if (itemDatas[i].id == 1001)
|
||||
{
|
||||
e.AddContent("reward_hook", itemDatas[i].count);
|
||||
}
|
||||
else if (itemDatas[i].id == 1002)
|
||||
{
|
||||
e.AddContent("reward_cash", itemDatas[i].count);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
RefreshGetAllBtn();
|
||||
}
|
||||
|
||||
|
||||
private async void OnGetAllReward()
|
||||
{
|
||||
_dataProvider.GetAllBpRewards();
|
||||
RefreshGetAllBtn();
|
||||
GContext.Publish(new ShowData());
|
||||
GContext.Publish(new GetAllBPRewards());
|
||||
|
||||
await new WaitForSeconds(0.2f);
|
||||
var rewardPanelTask = new RewardPopupData();
|
||||
GContext.Publish(rewardPanelTask);
|
||||
if (rewardPanelTask.tcs != null)
|
||||
{
|
||||
await rewardPanelTask.tcs.Task;
|
||||
}
|
||||
sr_bars.JumpToTarget(_dataProvider.GetBarsDefaultPos() + 1, pfb_bar.rectTransform.rect.height / 3);
|
||||
|
||||
// _dataProvider
|
||||
}
|
||||
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
disposables.Dispose();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user