using System.Collections.Generic; using UnityEngine; public partial class ActBillboardAwardConfig : ConfigBase { // 模板编号: 名次A :配置ID private static Dictionary> infoDict = new Dictionary>(); // 模板编号 名次A private static Dictionary> sortDict = new Dictionary>(); protected override void OnConfigParseCompleted() { if (!infoDict.TryGetValue(TemplateID, out var dict)) { dict = new Dictionary(); infoDict[TemplateID] = dict; } dict[RankA] = ID; } private static void LoadSortList() { if (!sortDict.IsNullOrEmpty()) return; foreach (var kvp in infoDict) { int templateID = kvp.Key; List list = new List(kvp.Value.Keys); list.Sort(); sortDict[templateID] = list; } } public static List GetRankASortList(int templateID) { LoadSortList(); sortDict.TryGetValue(templateID, out var list); return list; } public static Dictionary GetTemplateIDDict(int templateID) { infoDict.TryGetValue(templateID, out var dict); return dict; } public static int GetID(int templateID, int rankA) { var dict = GetTemplateIDDict(templateID); if (dict == null) return 0; dict.TryGetValue(rankA, out var id); return id; } public static ActBillboardAwardConfig GetConfig(int templateID, int rankA) { int id = GetID(templateID, rankA); return Get(id); } public static float GetTop3MinCalNeedValue(int templateID) { var list = GetRankASortList(templateID); float res = float.MaxValue; foreach (var rankA in list) { if (rankA > 3) continue; var config = GetConfig(templateID, rankA); if (config == null) continue; res = Mathf.Min(res, config.NeedValue); } return res == float.MaxValue ? 0 : res; } }