using System.Collections.Generic; using Escape_Room_Engine.Engine.Scripts.Modules; using NaughtyAttributes; using UnityEngine; namespace Escape_Room_Engine.Engine.Scripts.Requirements { [CreateAssetMenu(menuName = "Requirements/No Overlap")] public class NoOverlap : PlacementRequirement { [InfoBox("A module relative position will be oriented with the module (e.g. (0, 1) is always in front of the module).")] [Label("Reserved Positions (Module Relative)")] public List mrReservedPositions; protected override IEnumerable GenerateCandidates(Module module, Space space) { var candidates = space.rrDimensions.EveryPosition; space.Modules.ForEach(m => { candidates.Remove(m.SrPosition); m.description.placementRequirements .FindAll(r => r is NoOverlap) .ForEach(r => ((NoOverlap)r).mrReservedPositions .ForEach(p => candidates.Remove(m.ToSpaceRelative(p)))); }); return candidates; } } }