using UnityEngine; using TMPro; using UnityEngine.UI; public class CardUI : MonoBehaviour { [SerializeField] private TextMeshProUGUI effectText; [SerializeField] private Image iconImage; private CardData cardData; private LevelUpUIManager uiManager; private StatType s1, s2; private int v1, v2; private bool isRandomCard = false; public void Setup(CardData data, LevelUpUIManager manager) { cardData = data; uiManager = manager; RandomStatCardData randomData = cardData as RandomStatCardData; if (randomData != null) { isRandomCard = true; // 스탯 2개 랜덤 선택 (중복 방지) s1 = randomData.possibleStats[Random.Range(0, randomData.possibleStats.Length)]; do { s2 = randomData.possibleStats[Random.Range(0, randomData.possibleStats.Length)]; } while (s1 == s2); // ✅ v1 = 무조건 양수 int positiveMin = Mathf.Max(1, randomData.minValue); int positiveMax = Mathf.Max(1, randomData.maxValue); v1 = Random.Range(positiveMin, positiveMax + 1); // ✅ v2 = 무조건 음수 int negativeMin = Mathf.Min(-1, randomData.minValue); int negativeMax = -1; v2 = Random.Range(negativeMin, negativeMax + 1); effectText.text = $"{s1} +{v1}\n{s2} {v2}"; } else { effectText.text = cardData.GetText(); } } public void OnClick() { if (isRandomCard) { Debug.Log($"[CardClick] clicked = {gameObject.name}"); RandomStatCardData randomData = cardData as RandomStatCardData; randomData.ApplyToPlayer(s1, v1); randomData.ApplyToPlayer(s2, v2); } else { cardData.Execute(); } // ⭐ [추가] 카드 선택 직후 플레이어의 체력 UI를 강제로 동기화합니다. // 씬에서 PlayerHealth 스크립트를 찾아 갱신 함수를 실행합니다. FindObjectOfType()?.RefreshHealthUI(); uiManager.Close(); } }