82 lines
2.6 KiB
C#
82 lines
2.6 KiB
C#
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<EquipmentConsumableKind, EquipmentConsumableDescriptor> ByKind = BuildByKind();
|
|
private static readonly Dictionary<string, EquipmentConsumableDescriptor> ByKey = BuildByKey();
|
|
|
|
public static IReadOnlyList<EquipmentConsumableDescriptor> 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<EquipmentConsumableKind, EquipmentConsumableDescriptor> BuildByKind()
|
|
{
|
|
var map = new Dictionary<EquipmentConsumableKind, EquipmentConsumableDescriptor>();
|
|
for (int i = 0; i < Descriptors.Length; i++)
|
|
{
|
|
map[Descriptors[i].Kind] = Descriptors[i];
|
|
}
|
|
|
|
return map;
|
|
}
|
|
|
|
private static Dictionary<string, EquipmentConsumableDescriptor> BuildByKey()
|
|
{
|
|
var map = new Dictionary<string, EquipmentConsumableDescriptor>(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; }
|
|
}
|