Files
modular-vr/Assets/Escape Room Engine/Engine/Scripts/Requirements/OrientationRequirement.cs

34 lines
1.3 KiB
C#

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<Orientation>
{
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.ModulePlacement);
return false;
}
}
}
}