requirements for exit door

This commit is contained in:
2022-11-07 19:05:00 +01:00
parent 9e748a0f38
commit c2386d8d65
10 changed files with 95 additions and 71 deletions

View File

@@ -1,9 +1,27 @@
using UnityEngine;
using System.Collections.Generic;
using Escape_Room_Engine.Engine.Scripts.Modules;
using UnityEngine;
namespace Escape_Room_Engine.Engine.Scripts.Requirements
{
public abstract class Requirement : ScriptableObject
public abstract class Requirement<T> : ScriptableObject
{
protected abstract IEnumerable<T> GenerateCandidates(Module module, Space space);
public void Restrict(HashSet<T> candidates, Module module, Space space) =>
candidates.IntersectWith(GenerateCandidates(module, space));
public static HashSet<T> Candidates(
HashSet<T> initialCandidates,
IEnumerable<Requirement<T>> requirements,
Module module, Space space)
{
foreach (var requirement in requirements)
{
requirement.Restrict(initialCandidates, module, space);
}
return initialCandidates;
}
}
}