using Obvious.Soap; using TMPro; using UnityEngine; using UnityEngine.UI; public class UI_GearDamage : MonoBehaviour { public FloatVariable tensionScale; [SerializeField] private Image _FillImage; [SerializeField] private Image _GearImage; [SerializeField] private Image maskImage; [SerializeField] private FloatVariable GearDamage; [SerializeField] private TextMeshProUGUI DamageText; [SerializeField] private ScriptableEventNoParam _onDamageRaised; private void OnEnable() { GearDamageOnOnValueChanged(GearDamage.Value); GearDamage.OnValueChanged += GearDamageOnOnValueChanged; _onDamageRaised.OnRaised += OnDamageRaisedOnOnRaised; } private void OnDisable() { GearDamage.OnValueChanged -= GearDamageOnOnValueChanged; _onDamageRaised.OnRaised -= OnDamageRaisedOnOnRaised; } private void OnDamageRaisedOnOnRaised() { _GearImage.color = Color.red; } private void GearDamageOnOnValueChanged(float obj) { _ = Mathf.Ceil(obj * 25f) / 25f; maskImage.fillAmount = obj; DamageText.text = (obj * 100f).ToString("0") + "%"; _GearImage.color = Color.red; } private void Update() { _FillImage.fillAmount = tensionScale.Value; _FillImage.color = _GearImage.color; DamageText.color = _GearImage.color; if (!(_GearImage.color == Color.white)) { _GearImage.color += Color.white * Time.deltaTime * 25f; } } }