requirements foundation
This commit is contained in:
@@ -16,7 +16,6 @@ namespace Escape_Room_Engine.Engine.Scripts.Modules
|
||||
|
||||
internal DoorModule(Space space, DoorModuleDescription description) : base(space, description)
|
||||
{
|
||||
_description.types.Add((ModuleType)description.doorType);
|
||||
srDimensions.Size = Vector2Int.one; // door always has size 1x1
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ namespace Escape_Room_Engine.Engine.Scripts.Modules
|
||||
[CreateAssetMenu(menuName = "Modules/Door")]
|
||||
public class DoorModuleDescription : ModuleDescription
|
||||
{
|
||||
public DoorType doorType;
|
||||
/// <summary>
|
||||
/// The description for the door that should be connected with this one.
|
||||
/// <example>If this is a teleporter entrance, the connected door should be a teleporter exit.</example>
|
||||
|
||||
@@ -8,6 +8,11 @@ using Object = UnityEngine.Object;
|
||||
|
||||
namespace Escape_Room_Engine.Engine.Scripts.Modules
|
||||
{
|
||||
public enum Orientation
|
||||
{
|
||||
North = 0, East = 90, South = 180, West = 270
|
||||
}
|
||||
|
||||
public class Module
|
||||
{
|
||||
/// <summary>
|
||||
@@ -25,6 +30,7 @@ namespace Escape_Room_Engine.Engine.Scripts.Modules
|
||||
/// The space relative (<i>SR</i>) dimensions of this module.
|
||||
/// </summary>
|
||||
protected Dimensions srDimensions;
|
||||
protected Orientation orientation;
|
||||
|
||||
private readonly Space _space;
|
||||
|
||||
@@ -65,7 +71,8 @@ namespace Escape_Room_Engine.Engine.Scripts.Modules
|
||||
{
|
||||
_moduleObject = new GameObject(ToString());
|
||||
_moduleObject.transform.SetParent(parent, false);
|
||||
_moduleObject.transform.localPosition = new Vector3(srDimensions.x, 0, srDimensions.z);
|
||||
_moduleObject.transform.localPosition = new Vector3(srDimensions.x + .5f, 0, srDimensions.z + .5f);
|
||||
_moduleObject.transform.Rotate(Vector3.up, (float)orientation);
|
||||
|
||||
Object.Instantiate(_description.modulePrefab, _moduleObject.transform, false);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using Escape_Room_Engine.Engine.Scripts.Requirements;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Escape_Room_Engine.Engine.Scripts.Modules
|
||||
@@ -6,7 +7,12 @@ namespace Escape_Room_Engine.Engine.Scripts.Modules
|
||||
[CreateAssetMenu(menuName = "Modules/Generic Module")]
|
||||
public class ModuleDescription : ScriptableObject
|
||||
{
|
||||
public readonly HashSet<ModuleType> types = new();
|
||||
public List<ModuleType> types = new();
|
||||
public GameObject modulePrefab;
|
||||
public List<Requirement> requirements = new();
|
||||
|
||||
public List<PlacementRequirement> PlacementRequirements => requirements
|
||||
.FindAll(requirement => requirement is PlacementRequirement)
|
||||
.ConvertAll(requirement => (PlacementRequirement)requirement);
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,6 @@ namespace Escape_Room_Engine.Engine.Scripts.Modules
|
||||
{
|
||||
internal PuzzleModule(Space space, PuzzleModuleDescription description) : base(space, description)
|
||||
{
|
||||
_description.types.Add(ModuleType.Puzzle);
|
||||
srDimensions.Size = Vector2Int.one; // TODO: larger modules
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user