59 lines
1.3 KiB
C#
59 lines
1.3 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
/// <summary>
|
|
/// HUD element which displays a ships remaining boost capacity.
|
|
/// </summary>
|
|
public class BoostCapacityUI : MonoBehaviour
|
|
{
|
|
[SerializeField] private Image fillImage;
|
|
[SerializeField] private Sprite fillSpriteGood;
|
|
[SerializeField] private Sprite fillSpriteWarn;
|
|
[SerializeField] private TextMeshProUGUI hint;
|
|
private float minBoostRatio = 0.5f;
|
|
|
|
/// <summary>
|
|
/// Ratio of capacity to max capacity under which the
|
|
/// boost capacity is considered critically low.
|
|
/// </summary>
|
|
/// <param name="minBoostRatio"></param>
|
|
public void SetMinBoostRatio(float minBoostRatio)
|
|
{
|
|
this.minBoostRatio = minBoostRatio;
|
|
}
|
|
|
|
public void SetPlayerName(Player p)
|
|
{
|
|
hint.SetText($"{p.playerName}\n{p.character.ShipName}");
|
|
}
|
|
|
|
public void SetIsOut(Player p)
|
|
{
|
|
hint.SetText($"{p.playerName}\nOUT!");
|
|
UpdateFill(0);
|
|
}
|
|
public void SetIsIn(Player p)
|
|
{
|
|
SetPlayerName(p);
|
|
//UpdateFill(1);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the color and fill of the capacity meter.
|
|
/// </summary>
|
|
/// <param name="fill">Fill percentage</param>
|
|
public void UpdateFill(float fill)
|
|
{
|
|
fillImage.fillAmount = fill;
|
|
if (fill <= minBoostRatio)
|
|
{
|
|
fillImage.sprite = fillSpriteWarn;
|
|
}
|
|
else
|
|
{
|
|
fillImage.sprite = fillSpriteGood;
|
|
}
|
|
}
|
|
}
|