Files
SPT-Server-Build/Libraries/SPTarkov.Server.Core/Helpers/QuestConditionHelper.cs
T
2025-03-07 13:16:43 +00:00

59 lines
1.9 KiB
C#

using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Common.Annotations;
namespace SPTarkov.Server.Core.Helpers;
[Injectable]
public class QuestConditionHelper
{
public List<QuestCondition> GetQuestConditions(
List<QuestCondition> questConditions,
Func<QuestCondition, List<QuestCondition>>? furtherFilter = null)
{
return FilterConditions(questConditions, "Quest", furtherFilter);
}
public List<QuestCondition> GetLevelConditions(
List<QuestCondition> questConditions,
Func<QuestCondition, List<QuestCondition>>? furtherFilter = null)
{
return FilterConditions(questConditions, "Level", furtherFilter);
}
public List<QuestCondition> GetLoyaltyConditions(
List<QuestCondition> questConditions,
Func<QuestCondition, List<QuestCondition>>? furtherFilter = null)
{
return FilterConditions(questConditions, "TraderLoyalty", furtherFilter);
}
public List<QuestCondition> GetStandingConditions(
List<QuestCondition> questConditions,
Func<QuestCondition, List<QuestCondition>>? furtherFilter = null)
{
return FilterConditions(questConditions, "TraderStanding", furtherFilter);
}
protected List<QuestCondition> FilterConditions(
List<QuestCondition> questConditions,
string questType,
Func<QuestCondition, List<QuestCondition>>? 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;
}
}