Projext/Assets/7.Other Code/CardUI.cs
2026-01-29 15:58:38 +09:00

64 lines
2.0 KiB
C#

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)];
do
{
s2 = randomData.possibleStats[Random.Range(0, randomData.possibleStats.Length)];
} while (s1 == s2);
v1 = Random.Range(randomData.minValue, randomData.maxValue + 1);
v2 = -Random.Range(randomData.minValue, randomData.maxValue + 1);
effectText.text = $"{s1} +{v1}\n{s2} {v2}";
}
else
{
effectText.text = cardData.GetText();
}
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();
}
uiManager.Close();
}
}