Projext/Assets/7.Other Code/Card_Scripts/CardUI.cs

59 lines
2.1 KiB
C#
Raw Normal View History

2026-01-29 06:58:38 +00:00
using UnityEngine;
using TMPro;
using UnityEngine.UI; //
2026-01-29 06:58:38 +00:00
public class CardUI : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI effectText;
[SerializeField] private Image iconImage;
[SerializeField] private Outline selectionOutline; // ⭐ 인스펙터에서 테두리 컴포넌트 연결
2026-01-29 06:58:38 +00:00
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; // 처음엔 테두리 끔
2026-01-29 06:58:38 +00:00
// (랜덤 스탯 카드 데이터 처리 로직 - 기존 코드 유지)
2026-01-29 06:58:38 +00:00
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);
2026-01-29 06:58:38 +00:00
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;
2026-01-29 06:58:38 +00:00
}
// APPLY 버튼 누를 때 최종 실행될 효과
public void ApplyCurrentEffect()
2026-01-29 06:58:38 +00:00
{
if (isRandomCard)
{
RandomStatCardData rd = cardData as RandomStatCardData;
rd.ApplyToPlayer(s1, v1); rd.ApplyToPlayer(s2, v2);
2026-01-29 06:58:38 +00:00
}
else { cardData.Execute(); }
FindObjectOfType<PlayerHealth>()?.RefreshHealthUI();
2026-01-29 06:58:38 +00:00
}
}