OldBlueWater/BlueWater/Assets/02.Scripts/Ui/HeartHpUi.cs
NTG f1d0c6d371 Closes #244, #254 CombatPlayer 개선, 하트 시스템 추가
+ CombatPlayer 기능별 분리
+ Combat, CombatUi 전용 input action map 추가
+ 스킬 시스템 로직 수정
+ 전투플레이어 스킬(검의 왈츠) 로직 변경
2024-05-08 00:37:33 +09:00

67 lines
1.9 KiB
C#

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;
}
}
}
}
}