52 lines
1.1 KiB
C#
52 lines
1.1 KiB
C#
|
using UnityEngine;
|
||
|
using UnityEngine.UI;
|
||
|
|
||
|
namespace RoR2.UI;
|
||
|
|
||
|
public class InfiniteTowerWaveProgressBar : MonoBehaviour
|
||
|
{
|
||
|
[SerializeField]
|
||
|
[Tooltip("The bar we're filling up")]
|
||
|
private Image barImage;
|
||
|
|
||
|
[SerializeField]
|
||
|
private Animator animator;
|
||
|
|
||
|
private InfiniteTowerWaveController waveController;
|
||
|
|
||
|
private float previousFillAmount;
|
||
|
|
||
|
private void OnEnable()
|
||
|
{
|
||
|
InfiniteTowerRun infiniteTowerRun = Run.instance as InfiniteTowerRun;
|
||
|
if ((bool)infiniteTowerRun)
|
||
|
{
|
||
|
waveController = infiniteTowerRun.waveController;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void Update()
|
||
|
{
|
||
|
if (!waveController)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
float normalizedProgress = waveController.GetNormalizedProgress();
|
||
|
if (normalizedProgress > previousFillAmount)
|
||
|
{
|
||
|
previousFillAmount = normalizedProgress;
|
||
|
if ((bool)animator)
|
||
|
{
|
||
|
int layerIndex = animator.GetLayerIndex("Base");
|
||
|
animator.Play("Idle", layerIndex);
|
||
|
animator.Update(0f);
|
||
|
animator.Play((normalizedProgress >= 1f) ? "Ready" : "Pulse", layerIndex);
|
||
|
}
|
||
|
if ((bool)barImage)
|
||
|
{
|
||
|
barImage.fillAmount = normalizedProgress;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|