using System.Collections.Generic; using System.Linq; using Unity.Services.Analytics; //分部类 public partial class MineAreaItemConfig : IConfigPostProcess { //物品ID: 物品等级 :矿物ID private static Dictionary> typeToIDDict = new Dictionary>(); //物品ID:解锁等级 private static Dictionary itemIDToLimitLVDict = new Dictionary(); //物品ID:展示排序优先级 private static Dictionary itemIDToSortDict = new Dictionary(); //物品ID:展示排序优先级 private static Dictionary itemIDToSameItemLVSortDict = new Dictionary(); //物品ID:等级项 private static Dictionary> itemIDToItemLVListDict = new Dictionary>(); public void OnConfigParseCompleted() { if (!typeToIDDict.ContainsKey(ItemID)) typeToIDDict[ItemID] = new Dictionary(); typeToIDDict[ItemID][ItemLV] = MineID; if (!itemIDToLimitLVDict.ContainsKey(ItemID)) itemIDToLimitLVDict[ItemID] = LimitLV; if (!itemIDToSortDict.ContainsKey(ItemID)) itemIDToSortDict[ItemID] = ItemIDSort; if (!itemIDToSameItemLVSortDict.ContainsKey(ItemID)) itemIDToSameItemLVSortDict[ItemID] = SameItemLVSort; } //通过物品ID和物品等级找矿物ID public static bool TryGetMineID(int itemID, int itemLV, out int mineID) { mineID = 0; if (!typeToIDDict.TryGetValue(itemID, out var dict)) return false; return dict.TryGetValue(itemLV, out mineID); } public static Dictionary> GetTypeToIDDict() { return typeToIDDict; } public static Dictionary GetItemIDToLimitLVDict() { return itemIDToLimitLVDict; } public static Dictionary GetItemIDToSortDict() { return itemIDToSortDict; } public static Dictionary GetItemIDToSameItemLVSortDict() { return itemIDToSameItemLVSortDict; } public static Dictionary> GetItemIDToItemLVListDict() { if (itemIDToItemLVListDict.IsNullOrEmpty()) { var list = GetKeys(); for (int i = 0; i < list.Count; i++) { int mineId = int.Parse(list[i]); var config = Get(mineId); int itemId = config.ItemID; int itemIv = config.ItemLV; if (!itemIDToItemLVListDict.ContainsKey(itemId)) itemIDToItemLVListDict[itemId] = new List(); if (!itemIDToItemLVListDict[itemId].Contains(itemIv)) itemIDToItemLVListDict[itemId].Add(itemIv); } var keys = itemIDToItemLVListDict.Keys.ToList(); for (int i = 0; i < keys.Count; i++) { int itemId = keys[i]; itemIDToItemLVListDict[itemId].Sort(); } } return itemIDToItemLVListDict; } }