using System.Collections.Generic; using System.Collections.ObjectModel; namespace BriarQueen.Data.Identifiers { public enum ItemKey { None = 0, RustedKnife = 1, SharpenedKnife = 2, EmeraldAmulet = 3, DustyMirror = 4, SmallRag = 5, GreenCandle = 6, IndigoCandle = 7, DirtyMagnifyingGlass = 8, PumphouseKey = 9, RedCandle = 10, OrangeCandle = 11, YellowCandle = 12, BlueCandle = 13, VioletCandle = 14, Pliers = 15, Emerald = 16, Sapphire = 17, Ruby = 18, RubyRing = 19, SilverCoin = 20, GoldCoin = 21, GrindstoneAxlePin = 22, Diamond = 23, DiamondTiara = 24, DustySapphire = 25, } public enum EnvironmentKey { None = 0, ChainLock = 1, FountainVines = 2, GrindingStone = 3, WorkshopWindow = 4, WorkshopDamagedBook = 5, WorkshopBookSlot = 6, WorkshopDiary = 7, PumphouseWaterValve = 8, WorkshopFadedPhoto = 9, WorkshopDownstairsLight = 10, WorkshopBrokenLantern = 11, WorkshopWriting = 12, StreetVines = 13, } public enum PuzzleSlotKey { None = 0, WorkshopCandleSlot = 1, WorkshopPuzzleBoxSlot = 2, FountainGemSlot = 3, } public static class ItemIDs { public static readonly IReadOnlyDictionary PuzzleSlots = new ReadOnlyDictionary( new Dictionary { { PuzzleSlotKey.WorkshopCandleSlot, "PUZ_WorkshopCandleSlot" }, { PuzzleSlotKey.WorkshopPuzzleBoxSlot, "PUZ_WorkshopPuzzleBoxSlot" } }); public static readonly IReadOnlyDictionary Environment = new ReadOnlyDictionary( new Dictionary { { EnvironmentKey.ChainLock, "ENV_ChainLock" }, { EnvironmentKey.FountainVines, "ENV_FountainVines" }, { EnvironmentKey.GrindingStone, "ENV_GrindingStone" }, { EnvironmentKey.WorkshopWindow, "ENV_WorkshopWindow" }, { EnvironmentKey.WorkshopDamagedBook, "ENV_WorkshopDamagedBook" }, { EnvironmentKey.WorkshopBookSlot, "ENV_WorkshopBookSlot" }, { EnvironmentKey.WorkshopDiary, "ENV_WorkshopDiary" }, { EnvironmentKey.PumphouseWaterValve, "ENV_PumphouseWaterValve" }, { EnvironmentKey.WorkshopFadedPhoto, "ENV_WorkshopFadedPhoto" }, { EnvironmentKey.WorkshopDownstairsLight, "ENV_WorkshopDownstairsLight" }, { EnvironmentKey.WorkshopBrokenLantern, "ENV_WorkshopBrokenLantern" }, { EnvironmentKey.WorkshopWriting, "ENV_WorkshopWriting" }, { EnvironmentKey.StreetVines, "ENV_StreetVines" }, }); public static readonly IReadOnlyDictionary Pickups = new ReadOnlyDictionary( new Dictionary { { ItemKey.RustedKnife, "00_RustedKnife" }, { ItemKey.SharpenedKnife, "01_SharpenedKnife" }, { ItemKey.EmeraldAmulet, "02_EmeraldAmulet" }, { ItemKey.DustyMirror, "03_DustyMirror" }, { ItemKey.SmallRag, "04_SmallRag" }, { ItemKey.GreenCandle, "05_GreenCandle" }, { ItemKey.IndigoCandle, "06_IndigoCandle" }, { ItemKey.DirtyMagnifyingGlass, "07_DirtyMagnifyingGlass" }, { ItemKey.PumphouseKey, "08_PumphouseKey" }, { ItemKey.RedCandle, "09_RedCandle" }, { ItemKey.OrangeCandle, "10_OrangeCandle" }, { ItemKey.YellowCandle, "11_YellowCandle" }, { ItemKey.BlueCandle, "12_BlueCandle" }, { ItemKey.VioletCandle, "13_VioletCandle" }, { ItemKey.Pliers, "14_Pliers" }, { ItemKey.Emerald, "15_Emerald" }, { ItemKey.Sapphire, "16_Sapphire" }, { ItemKey.Ruby, "17_Ruby" }, { ItemKey.RubyRing, "18_RubyRing" }, { ItemKey.SilverCoin, "19_SilverCoin" }, { ItemKey.GoldCoin, "20_GoldCoin" }, { ItemKey.GrindstoneAxlePin, "21_GrindstoneAxlePin" }, { ItemKey.Diamond, "22_Diamond" }, { ItemKey.DiamondTiara, "23_DiamondTiara" }, { ItemKey.DustySapphire, "24_DustySapphire" }, }); public static string Get(ItemKey key) { return Pickups.TryGetValue(key, out var id) ? id : string.Empty; } public static string Get(EnvironmentKey key) { return Environment.TryGetValue(key, out var id) ? id : string.Empty; } public static string Get(PuzzleSlotKey key) { return PuzzleSlots.TryGetValue(key, out var id) ? id : string.Empty; } public static bool TryGet(ItemKey key, out string id) { return Pickups.TryGetValue(key, out id); } public static bool TryGet(EnvironmentKey key, out string id) { return Environment.TryGetValue(key, out id); } public static bool TryGet(PuzzleSlotKey key, out string id) { return PuzzleSlots.TryGetValue(key, out id); } public static IEnumerable GetAllItemIDs() { return Pickups.Values; } } }