requirements foundation

This commit is contained in:
2022-11-07 14:21:00 +01:00
parent 7e9331f612
commit 8719543f96
34 changed files with 332 additions and 160 deletions

View File

@@ -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
}

View File

@@ -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>

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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
}
}