using SPTarkov.Server.Core.Models.Eft.Common.Tables;
namespace SPTarkov.Server.Core.Extensions;
public static class QuestConditionExtensions
{
///
/// Get all quest conditions from provided list
///
/// Input conditions
/// OPTIONAL - Additional filter code to run
///
public static List GetQuestConditions(
this IEnumerable questConditions,
Func>? furtherFilter = null
)
{
return FilterConditions(questConditions, "Quest", furtherFilter);
}
public static List GetLevelConditions(
this IEnumerable questConditions,
Func>? furtherFilter = null
)
{
return FilterConditions(questConditions, "Level", furtherFilter);
}
public static List GetLoyaltyConditions(
this IEnumerable questConditions,
Func>? furtherFilter = null
)
{
return FilterConditions(questConditions, "TraderLoyalty", furtherFilter);
}
public static List GetStandingConditions(
this IEnumerable questConditions,
Func>? furtherFilter = null
)
{
return FilterConditions(questConditions, "TraderStanding", furtherFilter);
}
private static List FilterConditions(
IEnumerable questConditions,
string questType,
Func>? furtherFilter = null
)
{
var filteredQuests = questConditions
.Where(c =>
{
if (c.ConditionType == questType)
// return true or run the passed in function
{
return furtherFilter is null || furtherFilter(c).Any();
}
return false;
})
.ToList();
return filteredQuests;
}
}