lcy
2026-06-10 bcbbdae9f85dbb3efd58f0eaafe9f548caa5d923
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System.Collections.Generic;
 
public partial class FamilyAtkDefBatTreasureConfig : ConfigBase<int, FamilyAtkDefBatTreasureConfig>
{
    // 双层字典:AwardColor(品质) -> LibType(胜负库) -> List<config>
    private static Dictionary<int, Dictionary<int, List<FamilyAtkDefBatTreasureConfig>>> s_TreasureDict;
 
    protected override void OnConfigParseCompleted()
    {
        if (s_TreasureDict == null)
            s_TreasureDict = new Dictionary<int, Dictionary<int, List<FamilyAtkDefBatTreasureConfig>>>();
 
        if (!s_TreasureDict.TryGetValue(AwardColor, out var libDict))
        {
            libDict = new Dictionary<int, List<FamilyAtkDefBatTreasureConfig>>();
            s_TreasureDict[AwardColor] = libDict;
        }
 
        if (!libDict.TryGetValue(LibType, out var list))
        {
            list = new List<FamilyAtkDefBatTreasureConfig>();
            libDict[LibType] = list;
        }
 
        list.Add(this);
    }
 
    /// <summary>按品质和库类型获取宝藏奖励配置列表(已按 SortOrder→AwardID 排序)</summary>
    /// <param name="quality">奖励品质(1-普通;2-稀有;3-珍稀)</param>
    /// <param name="libType">胜负库类型(1-胜者库;2-败者库)</param>
    public static List<FamilyAtkDefBatTreasureConfig> GetItemsByQualityAndLibType(int quality, int libType)
    {
        if (s_TreasureDict != null
            && s_TreasureDict.TryGetValue(quality, out var libDict)
            && libDict.TryGetValue(libType, out var list))
        {
            // 排序:SortOrder 小的靠前,SortOrder 相同时 AwardID 小的靠前
            list.Sort((a, b) =>
            {
                int cmp = a.SortOrder.CompareTo(b.SortOrder);
                if (cmp != 0) return cmp;
                return a.AwardID.CompareTo(b.AwardID);
            });
            return list;
        }
        return null;
    }
}