orientation requirements

This commit is contained in:
2022-11-07 15:41:00 +01:00
parent 8719543f96
commit d9513f70b3
17 changed files with 133 additions and 19 deletions

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Escape_Room_Engine.Engine.Scripts.Utilities;
using UnityEngine;
@@ -15,6 +16,11 @@ namespace Escape_Room_Engine.Engine.Scripts.Modules
public class Module
{
public static HashSet<Orientation> EveryOrientation => new(new[]
{
Orientation.North, Orientation.East, Orientation.South, Orientation.West
});
/// <summary>
/// Get the space relative (<i>SR</i>) position of this module.
/// </summary>
@@ -67,6 +73,11 @@ namespace Escape_Room_Engine.Engine.Scripts.Modules
Logger.Log($"{this} has been placed at {srPosition} (SR)", LogType.ModulePlacement);
}
internal void Orient(Orientation o)
{
orientation = o;
}
internal void InstantiateModule(Transform parent)
{
_moduleObject = new GameObject(ToString());
@@ -79,7 +90,7 @@ namespace Escape_Room_Engine.Engine.Scripts.Modules
public override string ToString()
{
return $"Module ({string.Join(',', _description.types.ToList().ConvertAll(type => type.ToString()))})";
return $"Module ({string.Join(", ", _description.types.ToList().ConvertAll(type => type.ToString()))})";
}
}
}

View File

@@ -11,8 +11,9 @@ namespace Escape_Room_Engine.Engine.Scripts.Modules
public GameObject modulePrefab;
public List<Requirement> requirements = new();
public List<PlacementRequirement> PlacementRequirements => requirements
.FindAll(requirement => requirement is PlacementRequirement)
.ConvertAll(requirement => (PlacementRequirement)requirement);
public List<T> RequirementsOfType<T>() where T : Requirement
{
return requirements.FindAll(requirement => requirement is T).ConvertAll(requirement => (T)requirement);
}
}
}