using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class StatPanelController : MonoBehaviour { [Header("Health Bar")] [SerializeField] private Image healthBarImage; [SerializeField] private TMP_Text healthText; [Header("Reputation")] [SerializeField] private Image reputationBarImage; [SerializeField] private TMP_Text reputationText; [Header("Clock Time")] [SerializeField] private TMP_Text clockTimeText; [SerializeField] private TMP_Text ampmText; [Header("Day")] [SerializeField] private TMP_Text dayCountText; private GameConstants _gameConstants = new GameConstants(); private void Start() { PlayerStats.Instance.OnStatsChanged += UpdateStat; GameManager.Instance.OnDayChanged += UpdateDay; InitStats(); } private void OnDisable() { // 이벤트 구독 해제 PlayerStats.Instance.OnStatsChanged -= UpdateStat; GameManager.Instance.OnDayChanged -= UpdateDay; } private void InitStats() { var nowHealth = PlayerStats.Instance.HealthStat; var nowReputation = PlayerStats.Instance.ReputationStat; var nowTime = PlayerStats.Instance.TimeStat; SetStat(nowTime, nowReputation, nowHealth); } private void UpdateStat(PlayerStats.StatsChangeData statData) { SetStat(statData.Time, statData.Reputation, statData.Health); } private void SetStat(float time, float reputation, float health) { healthBarImage.fillAmount = health / PlayerStats.Instance.MaxHealth; healthText.text = $"{health}/{PlayerStats.Instance.MaxHealth}"; reputationBarImage.fillAmount = reputation / _gameConstants.maxReputation; reputationText.text = $"{reputation}/{_gameConstants.maxReputation}"; if (time > 12) // 오후, 13부터 { time -= 12; clockTimeText.text = $"{time}:00"; ampmText.text = "PM"; } else // 오전 { clockTimeText.text = $"{time}:00"; ampmText.text = "AM"; } dayCountText.text = GameManager.Instance.CurrentDay.ToString(); } private void UpdateDay(int day) { dayCountText.text = day.ToString(); } }