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