diff --git a/Fantasy-Grower/Assets/Scripts/Dungeon.meta b/Fantasy-Grower/Assets/Scripts/Dungeon.meta new file mode 100644 index 0000000..0184fea --- /dev/null +++ b/Fantasy-Grower/Assets/Scripts/Dungeon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 54f89240703479c4aac198efdadf69c3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs b/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs new file mode 100644 index 0000000..5bbd743 --- /dev/null +++ b/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs @@ -0,0 +1,42 @@ +using System; +using UnityEngine; + +public enum DungeonState +{ + None, // 초기 상태, 던전이 시작되지 않은 상태 + Start, // 던전이 시작된 상태 + InProgress, // 던전이 진행 중인 상태 + Failed, // 클리어에 실패한 상태 + Completed, // 클리어에 성공한 상태 +} + +[CreateAssetMenu(fileName = "DungeonState", menuName = "ScriptableObjects/DungeonState", order = 1)] +public class SO_DungeonState : ScriptableObject +{ + private DungeonState currentState; + + /// + /// 상태 변경 시 이벤트를 발생시키는 프로퍼티 + /// + public DungeonState CurrentState + { + get => currentState; + set + { + if (currentState == value) + return; + currentState = value; + OnDungeonStateChanged?.Invoke(currentState); + } + } + + /// + /// 사용 예 : state.OnDungeonStateChanged += (newState) => { Debug.Log($"Dungeon state changed to: {newState}"); }; + /// + public event Action OnDungeonStateChanged; + + private void OnEnable() + { + currentState = DungeonState.None; // 초기 상태 설정 + } +} diff --git a/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs.meta b/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs.meta new file mode 100644 index 0000000..0a0503b --- /dev/null +++ b/Fantasy-Grower/Assets/Scripts/Dungeon/SO_DungeonState.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f519d2f876e2d2544aa07bf492a39730 \ No newline at end of file