113 lines
3.0 KiB
C#
113 lines
3.0 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.UI;
|
|
|
|
public class RoomDetailUI : MonoBehaviour
|
|
{
|
|
[Header("References")]
|
|
[SerializeField] private TMP_Text roomNameText;
|
|
[SerializeField] private TMP_Text roomDescriptionText;
|
|
[SerializeField] private TMP_Text roomStatusText;
|
|
[SerializeField] private Button enterButton;
|
|
[SerializeField] private TMP_Text enterButtonText;
|
|
|
|
[Header("Default Text")]
|
|
[SerializeField] private string emptyNameText = "방을 선택하세요";
|
|
[TextArea(2, 4)]
|
|
[SerializeField] private string emptyDescriptionText = "이동할 방을 선택하면 설명이 표시됩니다.";
|
|
[SerializeField] private string emptyStatusText = "상태: -";
|
|
|
|
private void Awake()
|
|
{
|
|
ShowEmpty();
|
|
}
|
|
|
|
public void ShowEmpty()
|
|
{
|
|
if (roomNameText != null)
|
|
{
|
|
roomNameText.text = emptyNameText;
|
|
}
|
|
|
|
if (roomDescriptionText != null)
|
|
{
|
|
roomDescriptionText.text = emptyDescriptionText;
|
|
}
|
|
|
|
if (roomStatusText != null)
|
|
{
|
|
roomStatusText.text = emptyStatusText;
|
|
}
|
|
|
|
if (enterButtonText != null)
|
|
{
|
|
enterButtonText.text = "입장하기";
|
|
}
|
|
|
|
if (enterButton != null)
|
|
{
|
|
enterButton.onClick.RemoveAllListeners();
|
|
enterButton.interactable = false;
|
|
}
|
|
}
|
|
|
|
public void ShowRoom(RoomData roomData, RoomState state, int currentMemoryPieces, UnityAction enterAction)
|
|
{
|
|
if (roomData == null)
|
|
{
|
|
ShowEmpty();
|
|
return;
|
|
}
|
|
|
|
if (roomNameText != null)
|
|
{
|
|
roomNameText.text = roomData.RoomName;
|
|
}
|
|
|
|
if (roomDescriptionText != null)
|
|
{
|
|
roomDescriptionText.text = roomData.Description;
|
|
}
|
|
|
|
if (roomStatusText != null)
|
|
{
|
|
roomStatusText.text = GetStatusText(roomData, state, currentMemoryPieces);
|
|
}
|
|
|
|
bool canEnter = state != RoomState.Locked;
|
|
|
|
if (enterButtonText != null)
|
|
{
|
|
enterButtonText.text = canEnter ? "입장하기" : "입장 불가";
|
|
}
|
|
|
|
if (enterButton != null)
|
|
{
|
|
enterButton.onClick.RemoveAllListeners();
|
|
enterButton.interactable = canEnter;
|
|
|
|
if (canEnter && enterAction != null)
|
|
{
|
|
enterButton.onClick.AddListener(enterAction);
|
|
}
|
|
}
|
|
}
|
|
|
|
private string GetStatusText(RoomData roomData, RoomState state, int currentMemoryPieces)
|
|
{
|
|
switch (state)
|
|
{
|
|
case RoomState.Locked:
|
|
return $"잠김 - {roomData.GetLockedMessage(currentMemoryPieces)}";
|
|
case RoomState.Cleared:
|
|
return "클리어 완료";
|
|
case RoomState.MemoryGot:
|
|
return "기억의 조각 획득 완료";
|
|
case RoomState.Unlocked:
|
|
default:
|
|
return "입장 가능";
|
|
}
|
|
}
|
|
}
|