62 lines
1.1 KiB
C#
62 lines
1.1 KiB
C#
|
using System;
|
||
|
using TMPro;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace RoR2.UI;
|
||
|
|
||
|
[RequireComponent(typeof(RectTransform))]
|
||
|
public class MoneyText : MonoBehaviour
|
||
|
{
|
||
|
public TextMeshProUGUI targetText;
|
||
|
|
||
|
public FlashPanel flashPanel;
|
||
|
|
||
|
private int displayAmount;
|
||
|
|
||
|
private float updateTimer;
|
||
|
|
||
|
private float coinSoundCooldown;
|
||
|
|
||
|
public int targetValue;
|
||
|
|
||
|
public string sound = "Play_UI_coin";
|
||
|
|
||
|
public void Update()
|
||
|
{
|
||
|
coinSoundCooldown -= Time.deltaTime;
|
||
|
if (!targetText)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
if (updateTimer <= 0f)
|
||
|
{
|
||
|
int num = 0;
|
||
|
if (displayAmount != targetValue)
|
||
|
{
|
||
|
num = Math.DivRem(targetValue - displayAmount, 3, out var result);
|
||
|
if (result != 0)
|
||
|
{
|
||
|
num += Math.Sign(result);
|
||
|
}
|
||
|
if (num > 0)
|
||
|
{
|
||
|
if (coinSoundCooldown <= 0f)
|
||
|
{
|
||
|
coinSoundCooldown = 0.025f;
|
||
|
Util.PlaySound(sound, RoR2Application.instance.gameObject);
|
||
|
}
|
||
|
if ((bool)flashPanel)
|
||
|
{
|
||
|
flashPanel.Flash();
|
||
|
}
|
||
|
}
|
||
|
displayAmount += num;
|
||
|
}
|
||
|
float num2 = Mathf.Min(0.5f / (float)num, 0.25f);
|
||
|
targetText.text = TextSerialization.ToStringNumeric(displayAmount);
|
||
|
updateTimer = num2;
|
||
|
}
|
||
|
updateTimer -= Time.deltaTime;
|
||
|
}
|
||
|
}
|