58 lines
2.0 KiB
C#
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 "아직 입장할 수 없습니다.";
|
|
}
|
|
}
|