59 lines
2.1 KiB
C#
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();
|
|
}
|
|
} |