134 lines
3.3 KiB
C#
134 lines
3.3 KiB
C#
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class UIController : MonoBehaviour
|
|
{
|
|
[Header("Card UI")]
|
|
[SerializeField] private Image[] cardImages;
|
|
|
|
[Header("Card Sprites")]
|
|
[Tooltip("Element 0 = Card 1, Element 1 = Card 2 ... Element 9 = Card 10")]
|
|
[SerializeField] private Sprite[] cardSprites;
|
|
|
|
[Header("Text UI")]
|
|
[SerializeField] private TextMeshProUGUI scoreText;
|
|
[SerializeField] private TextMeshProUGUI turnText;
|
|
|
|
[Header("Action Buttons")]
|
|
[SerializeField] private Button hitButton;
|
|
[SerializeField] private Button standButton;
|
|
|
|
[Header("Result UI")]
|
|
[SerializeField] private GameObject resultPanel;
|
|
[SerializeField] private TextMeshProUGUI resultTitleText;
|
|
[SerializeField] private TextMeshProUGUI resultDescriptionText;
|
|
|
|
public void ClearUI()
|
|
{
|
|
ClearCards();
|
|
SetScore(0);
|
|
SetTurn("Player Turn");
|
|
HideResult();
|
|
SetActionButtons(true);
|
|
}
|
|
|
|
public void SetCardsByValues(List<int> cardValues)
|
|
{
|
|
ClearCards();
|
|
|
|
for (int i = 0; i < cardValues.Count; i++)
|
|
{
|
|
SetCardByValue(i, cardValues[i]);
|
|
}
|
|
}
|
|
|
|
public void SetCardByValue(int index, int cardValue)
|
|
{
|
|
if (cardImages == null || index < 0 || index >= cardImages.Length)
|
|
{
|
|
Debug.LogWarning($"Card Image index가 잘못되었습니다: {index}");
|
|
return;
|
|
}
|
|
|
|
if (cardImages[index] == null)
|
|
{
|
|
Debug.LogWarning($"Card Image {index}가 Inspector에 연결되지 않았습니다.");
|
|
return;
|
|
}
|
|
|
|
int spriteIndex = cardValue - 1;
|
|
|
|
if (cardSprites == null || spriteIndex < 0 || spriteIndex >= cardSprites.Length)
|
|
{
|
|
Debug.LogWarning($"Card Sprite가 없습니다. cardValue: {cardValue}");
|
|
return;
|
|
}
|
|
|
|
if (cardSprites[spriteIndex] == null)
|
|
{
|
|
Debug.LogWarning($"Card Sprite Element {spriteIndex}가 비어 있습니다.");
|
|
return;
|
|
}
|
|
|
|
cardImages[index].sprite = cardSprites[spriteIndex];
|
|
cardImages[index].enabled = true;
|
|
}
|
|
|
|
public void ClearCards()
|
|
{
|
|
if (cardImages == null)
|
|
return;
|
|
|
|
foreach (Image cardImage in cardImages)
|
|
{
|
|
if (cardImage == null)
|
|
continue;
|
|
|
|
cardImage.sprite = null;
|
|
cardImage.enabled = false;
|
|
}
|
|
}
|
|
|
|
public void SetScore(int score)
|
|
{
|
|
if (scoreText != null)
|
|
scoreText.text = $"Score : {score}";
|
|
}
|
|
|
|
public void SetTurn(string message)
|
|
{
|
|
if (turnText != null)
|
|
turnText.text = message;
|
|
}
|
|
|
|
public void SetActionButtons(bool isActive)
|
|
{
|
|
if (hitButton != null)
|
|
hitButton.interactable = isActive;
|
|
|
|
if (standButton != null)
|
|
standButton.interactable = isActive;
|
|
}
|
|
|
|
public void ShowResult(string title, string description)
|
|
{
|
|
if (resultPanel != null)
|
|
resultPanel.SetActive(true);
|
|
|
|
if (resultTitleText != null)
|
|
resultTitleText.text = title;
|
|
|
|
if (resultDescriptionText != null)
|
|
resultDescriptionText.text = description;
|
|
|
|
SetActionButtons(false);
|
|
}
|
|
|
|
public void HideResult()
|
|
{
|
|
if (resultPanel != null)
|
|
resultPanel.SetActive(false);
|
|
}
|
|
} |