requirements for exit door
This commit is contained in:
@@ -1,10 +1,34 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Escape_Room_Engine.Engine.Scripts.Modules;
|
||||
using Escape_Room_Engine.Engine.Scripts.Utilities;
|
||||
|
||||
namespace Escape_Room_Engine.Engine.Scripts.Requirements
|
||||
{
|
||||
public abstract class OrientationRequirement : Requirement
|
||||
public abstract class OrientationRequirement : Requirement<Orientation>
|
||||
{
|
||||
public abstract IEnumerable<Orientation> OrientationCandidates(Module module, Space space);
|
||||
protected abstract override IEnumerable<Orientation> GenerateCandidates(Module module, Space space);
|
||||
|
||||
public static bool TryOrienting(Module module, Space space)
|
||||
{
|
||||
var orientationCandidates = Candidates(
|
||||
Module.EveryOrientation,
|
||||
module.description.orientationRequirements,
|
||||
module, space);
|
||||
|
||||
Logger.Log($"orientation candidates: {string.Join(",", orientationCandidates.ToList().ConvertAll(c => c.ToString()))}", LogType.RequirementResolution);
|
||||
|
||||
if (orientationCandidates.Count > 0)
|
||||
{
|
||||
module.orientation = orientationCandidates.RandomElement();
|
||||
return true;
|
||||
}
|
||||
// ReSharper disable once RedundantIfElseBlock
|
||||
else
|
||||
{
|
||||
Logger.Log("Could not find suitable orientation for module", LogType.PuzzleGeneration);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user