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,11 +1,35 @@
using System.Collections.Generic;
using System.Linq;
using Escape_Room_Engine.Engine.Scripts.Modules;
using Escape_Room_Engine.Engine.Scripts.Utilities;
using UnityEngine;
namespace Escape_Room_Engine.Engine.Scripts.Requirements
{
public abstract class PlacementRequirement : Requirement
public abstract class PlacementRequirement : Requirement<Vector2Int>
{
public abstract IEnumerable<Vector2Int> PlacementCandidates(Module module, Space space);
protected abstract override IEnumerable<Vector2Int> GenerateCandidates(Module module, Space space);
public static bool TryPlacing(Module module, Space space)
{
var placementCandidates = Candidates(
space.rrDimensions.EveryPosition,
module.description.placementRequirements,
module, space);
Utilities.Logger.Log($"placement candidates: {string.Join(", ", placementCandidates.ToList().ConvertAll(c => c.ToString()))}", Utilities.LogType.RequirementResolution);
if (placementCandidates.Count > 0)
{
module.Place(placementCandidates.RandomElement());
return true;
}
// ReSharper disable once RedundantIfElseBlock
else
{
Utilities.Logger.Log("Could not find suitable placement for module", Utilities.LogType.PuzzleGeneration);
return false;
}
}
}
}