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 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(maxHeartCount); for (var i = 0; i < maxHeartCount; i++) { var newHeart = Instantiate(heartPrefab, heartsLayout).GetComponent(); 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; } } } } }