using UnityEngine;
using UnityEngine.UI;
using TMPro;
namespace Northbound
{
///
/// 유닛(플레이어, 적, 건물 등) 위에 표시되는 체력바
/// IHealthProvider 인터페이스를 구현하는 모든 유닛에서 사용 가능
///
public class UnitHealthBar : MonoBehaviour
{
[Header("UI References")]
[Tooltip("체력바 채우기 이미지 (Filled 타입 권장)")]
public Image fillImage;
[Tooltip("체력 텍스트 (선택사항)")]
public TextMeshProUGUI healthText;
[Tooltip("체력바 전체 컨테이너")]
public GameObject barContainer;
[Header("Settings")]
[Tooltip("유닛 위쪽으로의 높이 오프셋")]
public float heightOffset = 2f;
[Tooltip("체력이 가득 찼을 때 체력바 숨김 여부")]
public bool hideWhenFull = true;
[Tooltip("체력이 가득 찬 후 숨기까지의 지연 시간")]
public float hideDelay = 3f;
[Tooltip("초기 표시 지속 시간")]
public float initialShowDuration = 2f;
[Header("Colors")]
public Color fullHealthColor = Color.green;
public Color mediumHealthColor = Color.yellow;
public Color lowHealthColor = Color.red;
[Range(0f, 1f)] public float mediumHealthThreshold = 0.6f;
[Range(0f, 1f)] public float lowHealthThreshold = 0.3f;
private IHealthProvider _healthProvider;
private Camera _mainCamera;
private float _lastShowTime;
private Canvas _canvas;
private bool _initialized = false;
private Transform _targetTransform; // 따라갈 타겟
private void Awake()
{
// Canvas 설정
_canvas = GetComponent