219 lines
6.7 KiB
C#
219 lines
6.7 KiB
C#
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();
|
|
}
|
|
|
|
}
|