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 "아직 입장할 수 없습니다."; } }