84 lines
2.2 KiB
C#
84 lines
2.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace RND
|
|
{
|
|
|
|
public class RewardTimerButton : RewardButton
|
|
{
|
|
[Header("Fields")] [SerializeField] private Image _timer;
|
|
[SerializeField] private Text _power;
|
|
|
|
[Header("Settings")] [SerializeField, Range(1, 100)] private int _maximumPower = 5;
|
|
[SerializeField, Range(1, 100)] private int _minimumPower = 2;
|
|
[SerializeField] private Color _timerLoadColour;
|
|
|
|
public int Power { get; private set; } = 5;
|
|
|
|
private Color _textColour;
|
|
|
|
protected override void Init()
|
|
{
|
|
_textColour = _power.color;
|
|
}
|
|
|
|
public override void Begin()
|
|
{
|
|
base.Begin();
|
|
|
|
Power = _maximumPower;
|
|
_minimumPower = Mathf.Clamp(_minimumPower, 1, _maximumPower);
|
|
_timer.fillAmount = 0f;
|
|
|
|
_timer.gameObject.Hide();
|
|
_power.gameObject.Hide();
|
|
}
|
|
|
|
protected override void OnRewardLoaded()
|
|
{
|
|
base.OnRewardLoaded();
|
|
|
|
StartCoroutine(PowerReduceRoutine());
|
|
}
|
|
|
|
private IEnumerator PowerReduceRoutine()
|
|
{
|
|
_power.text = $"x{Power}";
|
|
_power.color = _timerLoadColour;
|
|
_power.gameObject.Show();
|
|
|
|
_timer.fillAmount = 0f;
|
|
_timer.color = _timerLoadColour;
|
|
_timer.gameObject.Show();
|
|
|
|
const float firstReduceDelay = 0.33f;
|
|
yield return new WaitForSeconds(firstReduceDelay);
|
|
|
|
while (Power > _minimumPower)
|
|
{
|
|
_power.text = $"x{Power}";
|
|
float currentFill = _timer.fillAmount;
|
|
|
|
const float mainReduceDelay = 1f;
|
|
yield return Tween.DoTween(mainReduceDelay,
|
|
t => { _timer.fillAmount = Mathf.Lerp(currentFill, 1f, t); });
|
|
|
|
_timer.fillAmount = 0f;
|
|
Power--;
|
|
}
|
|
|
|
_power.text = $"x{Power}";
|
|
_power.color = _textColour;
|
|
_timer.color = _textColour;
|
|
yield return null;
|
|
}
|
|
|
|
protected void OnDisable()
|
|
{
|
|
StopAllCoroutines();
|
|
}
|
|
}
|
|
}
|