OldBlueWater/BlueWater/Assets/02.Scripts/Ui/HeartHpUi.cs

67 lines
1.9 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.UI;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class HeartHpUi : MonoBehaviour
{
[SerializeField, Required] private Transform heartsLayout;
[SerializeField, Required] private GameObject heartPrefab;
[Range(1, 10)]
[SerializeField] private int maxHeartCount = 5;
[SerializeField] private List<Image> heartImageList = new();
// Resources
[SerializeField] private Sprite fullHeart;
[SerializeField] private Sprite halfHeart;
[SerializeField] private Sprite emptyHeart;
private void Awake()
{
InitHeart();
}
private void InitHeart()
{
foreach (Transform element in heartsLayout)
{
Destroy(element.gameObject);
}
heartImageList = new List<Image>(maxHeartCount);
for (var i = 0; i < maxHeartCount; i++)
{
var newHeart = Instantiate(heartPrefab, heartsLayout).GetComponent<Image>();
heartImageList.Add(newHeart);
}
}
public void SetCurrentHp(int currentHp)
{
var fullHearts = currentHp / 2;
var existHalfHeart = currentHp % 2 != 0;
for (var i = 0; i < heartImageList.Count; i++)
{
if (i < fullHearts)
{
heartImageList[i].sprite = fullHeart;
}
else if (i == fullHearts && existHalfHeart)
{
heartImageList[i].sprite = halfHeart;
}
else
{
heartImageList[i].sprite = emptyHeart;
}
}
}
}
}