Converted rewards data into dictionary - reduced need for reflection

Moved clone outside of `UpdateQuestsForGameEdition`
This commit is contained in:
Chomp
2025-07-26 12:53:56 +01:00
parent 8aff434933
commit bfd616e7c3
7 changed files with 63 additions and 94 deletions
@@ -231,19 +231,14 @@ public class HideoutCraftQuestIdGenerator(
return true;
}
private HashSet<Reward> CombineRewards(QuestRewards? questRewards)
/// <summary>
/// Merge all rewards together into one collection
/// </summary>
/// <param name="questRewards">Rewards to merge</param>
/// <returns>IEnumerable</returns>
protected IEnumerable<Reward> CombineRewards(Dictionary<string, List<Reward>>? questRewards)
{
var result = new HashSet<Reward>();
questRewards.Started?.ForEach(x => result.Add(x));
questRewards.Success?.ForEach(x => result.Add(x));
questRewards.AvailableForFinish?.ForEach(x => result.Add(x));
questRewards.Expired?.ForEach(x => result.Add(x));
questRewards.AvailableForStart?.ForEach(x => result.Add(x));
questRewards.Fail?.ForEach(x => result.Add(x));
questRewards.FailRestartable?.ForEach(x => result.Add(x));
questRewards.Started?.ForEach(x => result.Add(x));
return result;
return questRewards?.SelectMany(rewardKvP => rewardKvP.Value) ?? [];
}
}