using System.Collections.Generic;
using System.Linq;
using EscapeRoomEngine.Engine.Runtime.Modules;
using UnityEngine;
namespace EscapeRoomEngine.Engine.Runtime.Requirements
{
///
/// A generic requirement class that defines how requirements filter candidates.
///
public abstract class Requirement : ScriptableObject
{
protected abstract List FilterCandidates(List candidates, Module module, Space space);
protected static List Candidates(
List candidates,
IEnumerable> requirements,
Module module, Space space)
{
return requirements.Aggregate(candidates,
(current, requirement) => requirement.FilterCandidates(current, module, space));
}
}
}