using System; using System.Collections.Generic; public static class EquipmentConsumableCatalog { private static readonly EquipmentConsumableDescriptor[] Descriptors = { new EquipmentConsumableDescriptor(EquipmentConsumableKind.Material78101, "eqc_78101", "装备升级材料78101"), new EquipmentConsumableDescriptor(EquipmentConsumableKind.Material78111, "eqc_78111", "装备突破材料78111"), new EquipmentConsumableDescriptor(EquipmentConsumableKind.Material78121, "eqc_78121", "装备洗炼材料78121"), new EquipmentConsumableDescriptor(EquipmentConsumableKind.Material78131, "eqc_78131", "装备登顶材料78131") }; private static readonly Dictionary ByKind = BuildByKind(); private static readonly Dictionary ByKey = BuildByKey(); public static IReadOnlyList All => Descriptors; public static string GetKey(EquipmentConsumableKind kind) { return ByKind[kind].Key; } public static string GetDisplayName(EquipmentConsumableKind kind) { return ByKind[kind].DisplayName; } public static bool TryGetKind(string key, out EquipmentConsumableKind kind) { kind = default; if (string.IsNullOrEmpty(key)) { return false; } if (!ByKey.TryGetValue(key, out EquipmentConsumableDescriptor descriptor)) { return false; } kind = descriptor.Kind; return true; } private static Dictionary BuildByKind() { var map = new Dictionary(); for (int i = 0; i < Descriptors.Length; i++) { map[Descriptors[i].Kind] = Descriptors[i]; } return map; } private static Dictionary BuildByKey() { var map = new Dictionary(StringComparer.Ordinal); for (int i = 0; i < Descriptors.Length; i++) { map[Descriptors[i].Key] = Descriptors[i]; } return map; } } public sealed class EquipmentConsumableDescriptor { public EquipmentConsumableDescriptor(EquipmentConsumableKind kind, string key, string displayName) { Kind = kind; Key = key; DisplayName = displayName; } public EquipmentConsumableKind Kind { get; } public string Key { get; } public string DisplayName { get; } }