2026-01-29 06:58:38 +00:00
|
|
|
|
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;
|
|
|
|
|
|
s1 = randomData.possibleStats[Random.Range(0, randomData.possibleStats.Length)];
|
2026-01-29 16:11:10 +00:00
|
|
|
|
do { s2 = randomData.possibleStats[Random.Range(0, randomData.possibleStats.Length)]; } while (s1 == s2);
|
2026-01-29 06:58:38 +00:00
|
|
|
|
v1 = Random.Range(randomData.minValue, randomData.maxValue + 1);
|
|
|
|
|
|
v2 = -Random.Range(randomData.minValue, randomData.maxValue + 1);
|
|
|
|
|
|
effectText.text = $"{s1} +{v1}\n{s2} {v2}";
|
|
|
|
|
|
}
|
2026-01-29 16:11:10 +00:00
|
|
|
|
else { effectText.text = cardData.GetText(); }
|
2026-01-29 06:58:38 +00:00
|
|
|
|
iconImage.sprite = cardData.icon;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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();
|
|
|
|
|
|
}
|
2026-01-29 16:11:10 +00:00
|
|
|
|
|
|
|
|
|
|
// ⭐ [추가] 카드 선택 직후 플레이어의 체력 UI를 강제로 동기화합니다.
|
|
|
|
|
|
// 씬에서 PlayerHealth 스크립트를 찾아 갱신 함수를 실행합니다.
|
|
|
|
|
|
FindObjectOfType<PlayerHealth>()?.RefreshHealthUI();
|
|
|
|
|
|
|
2026-01-29 06:58:38 +00:00
|
|
|
|
uiManager.Close();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|