using System; using System.Collections.Generic; namespace BriarQueen.Data.Identifiers { public enum UIKey { None = 0, InventorySlot, CodexLocationButton, CodexEntryButton } public enum SceneKey { None = 0, MainMenuScene, UIScene, OpeningCinematicScene, GameScene } [Serializable] public enum LevelKey { None = 0, ChapterOneVillageEdge, ChapterOneVillage, ChapterOneVillageFurther, ChapterOnePumphouse, ChapterOneFountain, ChapterOneWorkshop, ChapterOnePumphousePipes, ChapterOneWorkshopDrawer, ChapterOneWorkshopUpstairs, ChapterOneWorkshopCandlePuzzle, ChapterOneWorkshopJewelleryBox, ChapterOneWorkshopJewelleryBoxOpen, ChapterOneWorkshopSafe, ChapterOneWorkshopBag, ChapterOneWorkshopDownstairs, ChapterOnePumphouseTable, ChapterOneWorkshopBookcase, ChapterOneFountainPuzzle, ChapterOneStreetGateSign, ChapterOneStreetCart, } public enum AssetItemKey { None = 0, ChapterOneBoxPuzzlePiece1, ChapterOneBoxPuzzlePiece2, ChapterOneBoxPuzzlePiece3, ChapterOneBoxPuzzlePiece4, ChapterOneBoxPuzzlePiece5, ChapterOneBoxPuzzlePiece6, ChapterOneBoxPuzzlePiece7, ChapterOneBoxPuzzlePiece8, ChapterOneWorkshopWornBook } public static class AssetKeyIdentifiers { private const string UI_PREFIX = "UI:"; private const string SCENE_PREFIX = "Scene:"; private const string LEVEL_PREFIX = "Level:"; private const string ITEM_PREFIX = "Item:"; public static string Get(UIKey key) { if (key == UIKey.None) return string.Empty; return $"{UI_PREFIX}{key}"; } public static string Get(SceneKey key) { if (key == SceneKey.None) return string.Empty; return $"{SCENE_PREFIX}{key}"; } public static string Get(LevelKey key) { if (key == LevelKey.None) return string.Empty; return $"{LEVEL_PREFIX}{key}"; } public static string Get(AssetItemKey key) { if (key == AssetItemKey.None) return string.Empty; return $"{ITEM_PREFIX}{key}"; } public static bool TryGet(UIKey key, out string value) { value = Get(key); return !string.IsNullOrEmpty(value); } public static bool TryGet(SceneKey key, out string value) { value = Get(key); return !string.IsNullOrEmpty(value); } public static bool TryGet(LevelKey key, out string value) { value = Get(key); return !string.IsNullOrEmpty(value); } public static bool TryGet(AssetItemKey key, out string value) { value = Get(key); return !string.IsNullOrEmpty(value); } public static IEnumerable GetAllKeys() { foreach (UIKey key in Enum.GetValues(typeof(UIKey))) if (key != UIKey.None) yield return Get(key); foreach (SceneKey key in Enum.GetValues(typeof(SceneKey))) if (key != SceneKey.None) yield return Get(key); foreach (LevelKey key in Enum.GetValues(typeof(LevelKey))) if (key != LevelKey.None) yield return Get(key); foreach (AssetItemKey key in Enum.GetValues(typeof(AssetItemKey))) if (key != AssetItemKey.None) yield return Get(key); } } }