Files
bansonic_beta_main/Assets/scripts/_runtimecache/EquipmentConsumableCatalog.cs
T

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; }
}