备份CatanBuilding瘦身独立工程
This commit is contained in:
61
Assets/Scripts/UI/Home/HomeBtnPiggyBank.cs
Normal file
61
Assets/Scripts/UI/Home/HomeBtnPiggyBank.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
using GameCore;
|
||||
using asap.core;
|
||||
using System;
|
||||
using UniRx;
|
||||
using DG.Tweening;
|
||||
public class HomeBtnPiggyBank : MonoBehaviour
|
||||
{
|
||||
private Image _bar;
|
||||
private TMP_Text _textTime;
|
||||
private Button _btn;
|
||||
private PiggyBankPackData _pbpd;
|
||||
private IDisposable _timer;
|
||||
private void Awake()
|
||||
{
|
||||
_bar = transform.Find("bar").GetComponent<Image>();
|
||||
_textTime = transform.Find("text_time").GetComponent<TMP_Text>();
|
||||
_btn = GetComponent<Button>();
|
||||
_pbpd = GContext.container.Resolve<PiggyBankPackData>();
|
||||
if (!_pbpd.IsPackActivated)
|
||||
gameObject.SetActive(false);
|
||||
GContext.OnEvent<PiggyBankProgressEvent>().Subscribe(UpdateBar).AddTo(this);
|
||||
}
|
||||
private void Start()
|
||||
{
|
||||
_btn.onClick.AddListener(OpenPanel);
|
||||
}
|
||||
private async void OpenPanel()
|
||||
{
|
||||
await UIManager.Instance.ShowUI(UITypes.GiftPiggyBankPopupPanel);
|
||||
}
|
||||
private void OnEnable()
|
||||
{
|
||||
_textTime.text = ConvertTools.ConvertTime2(_pbpd.RemainingTime);
|
||||
_timer = Observable.Interval(TimeSpan.FromSeconds(1.0f))
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
_textTime.text = ConvertTools.ConvertTime2(_pbpd.RemainingTime);
|
||||
if (_pbpd.RemainingTime.TotalSeconds <= 0 || _pbpd.PurchaseCount >= _pbpd.MaxCount)
|
||||
gameObject.SetActive(false);
|
||||
});
|
||||
_bar.fillAmount = (float)_pbpd.Progress / (float)_pbpd.Target;
|
||||
}
|
||||
private void OnDisable()
|
||||
{
|
||||
_timer?.Dispose();
|
||||
}
|
||||
private void UpdateBar(PiggyBankProgressEvent e)
|
||||
{
|
||||
//Debug.Log($"update bar {e.type}");
|
||||
if (e.type == 0)
|
||||
_bar.fillAmount = ((float)_pbpd.Progress - (float)e.addProgress) / (float)_pbpd.Target;
|
||||
else
|
||||
{
|
||||
float f = _bar.fillAmount;
|
||||
_bar.DOFillAmount(f + (float)e.addProgress / (float)_pbpd.Target, 0.5f);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user