Projext/Assets/Scripts/Player/Upgrade/UI/CardUI.cs
2026-02-02 17:30:23 +09:00

59 lines
2.1 KiB
C#

using UnityEngine;
using TMPro;
using UnityEngine.UI; //
public class CardUI : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI effectText;
[SerializeField] private Image iconImage;
[SerializeField] private Outline selectionOutline; // ⭐ 인스펙터에서 테두리 컴포넌트 연결
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;
if (selectionOutline != null) selectionOutline.enabled = false; // 처음엔 테두리 끔
// (랜덤 스탯 카드 데이터 처리 로직 - 기존 코드 유지)
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(Mathf.Max(1, randomData.minValue), Mathf.Max(1, randomData.maxValue) + 1);
v2 = Random.Range(Mathf.Min(-1, randomData.minValue), -1 + 1);
effectText.text = $"{s1} +{v1}\n{s2} {v2}";
}
else { effectText.text = cardData.GetText(); }
}
// 카드 클릭 시 매니저에게 알림
public void OnClick() { uiManager.OnCardClick(this); }
// 선택 시 하이라이트 연출
public void SetSelected(bool isSelected)
{
if (selectionOutline != null) selectionOutline.enabled = isSelected;
transform.localScale = isSelected ? Vector3.one * 1.05f : Vector3.one;
}
// APPLY 버튼 누를 때 최종 실행될 효과
public void ApplyCurrentEffect()
{
if (isRandomCard)
{
RandomStatCardData rd = cardData as RandomStatCardData;
rd.ApplyToPlayer(s1, v1); rd.ApplyToPlayer(s2, v2);
}
else { cardData.Execute(); }
FindObjectOfType<PlayerHealth>()?.RefreshHealthUI();
}
}