Files
2026-05-26 16:15:54 +08:00

109 lines
3.7 KiB
C#

using asap.core;
using DG.Tweening;
using GameCore;
using TMPro;
using UniRx;
using UnityEngine;
using UnityEngine.UI;
public class AdvertData
{
public int ID;
public int index;
public int day;
public string cdTime;
public bool isOpen;
}
public class AdvertPanel : MonoBehaviour
{
Button btn_close;
TMP_Text txt_energy, txt_money, txt_ticket;
ulong _curGold;
int _curEnergy;
int _curTicket;
protected CompositeDisposable disposables = new CompositeDisposable();
private void Awake()
{
txt_ticket = transform.Find("top_area/resource/icon_ticket/text_num").GetComponent<TMP_Text>();
txt_energy = transform.Find("top_area/resource/icon_energy/text_num").GetComponent<TMP_Text>();
txt_money = transform.Find("top_area/resource/icon_money/text_num").GetComponent<TMP_Text>();
btn_close = transform.Find("root/btn_close").GetComponent<Button>();
}
private void Start()
{
var playerData = GContext.container.Resolve<PlayerData>();
_curGold = playerData.gold;
_curEnergy = playerData.Energy;
_curTicket = GContext.container.Resolve<PlayerShopData>().GetAdticketCount();
txt_money.text = ConvertTools.GetNumberString2(_curGold);
txt_energy.text = ConvertTools.GetNumberString2(_curEnergy);
txt_ticket.text = ConvertTools.GetNumberString2(_curTicket);
btn_close.onClick.AddListener(() =>
{
GContext.Publish(new RestartShowHomeUIEvent());
UIManager.Instance.DestroyUI(UITypes.AdvertPanel);
});
GContext.OnEvent<ResAddEvent>().Where(x => x.id == 1002).Subscribe(x =>
{
GoldAddAnim();
}).AddTo(disposables);
GContext.OnEvent<ResAddEvent>().Where(x => x.id == 1001).Subscribe(x =>
{
EnergyAddAnim();
}).AddTo(disposables);
GContext.OnEvent<ResAddEvent>().Where(x => x.id == 1006).Subscribe(x =>
{
TicketAddAnim();
}).AddTo(disposables);
}
//private async System.Threading.Tasks.Task WaitForRewardPanel()
//{
// await new WaitForSeconds(0.5f);
// var rewardPanelTask = new RewardPopupData();
// GContext.Publish(rewardPanelTask);
// if (rewardPanelTask.tcs != null)
// {
// await rewardPanelTask.tcs.Task;
// }
//}
void GoldAddAnim()
{
//await WaitForRewardPanel();
DOTween.Kill("txt_money");
txt_money.text = ConvertTools.GetNumberString2(_curGold);
var EndDiamond = GContext.container.Resolve<PlayerData>().gold;
DOTween.To(() => _curGold, x => _curGold = x, EndDiamond, 1f).OnUpdate(() =>
{
txt_money.text = ConvertTools.GetNumberString2(_curGold);
}).SetId("txt_money");
}
void EnergyAddAnim()
{
//await WaitForRewardPanel();
DOTween.Kill("advert_text_energy");
txt_energy.text = ConvertTools.GetNumberString2(_curEnergy);
var EndEnergy = GContext.container.Resolve<PlayerData>().Energy;
DOTween.To(() => _curEnergy, x => _curEnergy = x, EndEnergy, 1f).OnUpdate(() =>
{
txt_energy.text = ConvertTools.GetNumberString2(_curEnergy);
}).SetId("advert_text_energy");
}
void TicketAddAnim()
{
//await WaitForRewardPanel();
DOTween.Kill("text_ticket");
txt_ticket.text = ConvertTools.GetNumberString2(_curTicket);
var Ticket = GContext.container.Resolve<PlayerShopData>().GetAdticketCount();
DOTween.To(() => _curTicket, x => _curTicket = x, Ticket, 1f).OnUpdate(() =>
{
txt_ticket.text = ConvertTools.GetNumberString2(_curTicket);
}).SetId("text_ticket");
}
private void OnDestroy()
{
disposables.Dispose();
}
}