using UnityEngine;
using UnityEngine.UI;
namespace WL.UI
{
///
/// 좌상단 플레이어 레벨 표기 (구 WL PD #727 · 레퍼런스 XP Hero: 레벨 배지 + 경험치 바).
///
/// 힘민지 이식(PD #766 · 2026-09-06):
/// 원본은 구 WL 의 WL.Player.PlayerProgress 를 구독했지만 힘민지에는 그 타입이 없다.
/// → 자체 데이터 소스를 갖지 않는 **표시 전용** 컴포넌트로 바꾸고, 값은 외부(WLHudBinder)가
/// 로 밀어 넣는다. 직렬화 필드 이름(levelText/xpText/xpFill)은
/// 프리팹 바인딩이 끊기지 않도록 그대로 두었고, .meta GUID 도 구 WL 것을 유지한다.
/// (HUD_Level.prefab 은 levelText 만 연결돼 있고 xpText·xpFill 은 비어 있다 — 정상.)
///
public class PlayerLevelHud : MonoBehaviour
{
[Header("참조")]
[Tooltip("레벨 숫자")]
[SerializeField] private Text levelText;
[Tooltip("경험치 텍스트 (현재/필요)")]
[SerializeField] private Text xpText;
[Tooltip("경험치 바 채움 이미지 (Image Type = Filled · Horizontal)")]
[SerializeField] private Image xpFill;
public int Level { get; private set; }
/// 레벨 + 경험치 진행도(0~1)를 갱신한다. xpText 는 비어 있으면 무시된다.
public void SetValues(int level, float xpNormalized, string xpLabel = null)
{
Level = level;
if (levelText != null) levelText.text = level.ToString();
if (xpFill != null) xpFill.fillAmount = Mathf.Clamp01(xpNormalized);
if (xpText != null && xpLabel != null) xpText.text = xpLabel;
}
/// 1.08M · 4.31K · 121 형식.
public static string Format(long v)
{
if (v >= 1000000L) return (v / 1000000f).ToString("0.00") + "M";
if (v >= 1000L) return (v / 1000f).ToString("0.00") + "K";
return v.ToString();
}
}
}