Files
WhaleAdventure_VR/Assets/My project/RoomSelect/Scripts/RoomData.cs
skrwns304@gmail.com b1e85a5b89 2026-06-19 UI, UI로직
2026-06-19 14:27:40 +09:00

58 lines
2.0 KiB
C#

using UnityEngine;
[CreateAssetMenu(menuName = "Adventure/Room Select/Room Data", fileName = "RoomData_NewRoom")]
public class RoomData : ScriptableObject
{
[Header("Basic Info")]
[SerializeField] private string roomId = "NewRoom";
[SerializeField] private string roomName = "새로운 방";
[TextArea(3, 6)]
[SerializeField] private string description = "방 설명을 입력하세요.";
[SerializeField] private Sprite roomIcon;
[Header("Enter")]
[Tooltip("씬 이동 방식을 사용할 때 불러올 씬 이름입니다. 한 씬 안에서 이동만 할 경우 비워둬도 됩니다.")]
[SerializeField] private string sceneName = "";
[Header("Unlock Condition")]
[Min(0)]
[SerializeField] private int requiredMemoryPieces = 0;
[SerializeField] private RoomState defaultState = RoomState.Unlocked;
[TextArea(2, 4)]
[SerializeField] private string lockReasonOverride = "";
[Header("Reward Info")]
[Tooltip("이 방에서 기억의 조각을 얻을 수 있는지 표시용으로 사용합니다.")]
[SerializeField] private bool hasMemoryPieceReward = false;
public string RoomId => roomId;
public string RoomName => roomName;
public string Description => description;
public Sprite RoomIcon => roomIcon;
public string SceneName => sceneName;
public int RequiredMemoryPieces => requiredMemoryPieces;
public RoomState DefaultState => defaultState;
public string LockReasonOverride => lockReasonOverride;
public bool HasMemoryPieceReward => hasMemoryPieceReward;
public bool HasSceneName()
{
return !string.IsNullOrWhiteSpace(sceneName);
}
public string GetLockedMessage(int currentMemoryPieces)
{
if (!string.IsNullOrWhiteSpace(lockReasonOverride))
{
return lockReasonOverride;
}
if (requiredMemoryPieces > currentMemoryPieces)
{
return $"기억의 조각 {requiredMemoryPieces}개 필요";
}
return "아직 입장할 수 없습니다.";
}
}