projectEli/Assets/NeoFPS/Core/HUD/HudSlowMoCharge.cs
2022-11-06 20:28:33 -05:00

51 lines
1.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace NeoFPS
{
[HelpURL("https://docs.neofps.com/manual/hudref-mb-hudslowmocharge.html")]
[RequireComponent(typeof(RectTransform))]
public class HudSlowMoCharge : PlayerCharacterHudBase
{
[SerializeField, Tooltip("The rect transform of the filled bar.")]
private RectTransform m_BarRect = null;
private ISlowMoSystem m_SlowMoSystem = null;
protected override void OnDestroy()
{
base.OnDestroy();
OnPlayerCharacterChanged(null);
}
public override void OnPlayerCharacterChanged(ICharacter character)
{
// Unsubscribe from old slow-mo system
if (m_SlowMoSystem != null)
m_SlowMoSystem.onChargeChanged -= OnChargeChanged;
// Get new slow-mo system
if (character as Component != null)
m_SlowMoSystem = character.GetComponent<ISlowMoSystem>();
else
m_SlowMoSystem = null;
// Subscribe to new slow-mo system
if (m_SlowMoSystem != null)
{
m_SlowMoSystem.onChargeChanged += OnChargeChanged;
OnChargeChanged(m_SlowMoSystem.charge);
gameObject.SetActive(true);
}
else
gameObject.SetActive(false);
}
private void OnChargeChanged(float charge)
{
m_BarRect.localScale = new Vector2(charge, 1f);
}
}
}