make sure space entrance door is always at edge of space

This commit is contained in:
2022-11-07 19:43:00 +01:00
parent c2386d8d65
commit aae5e78082
2 changed files with 59 additions and 37 deletions

View File

@@ -2,12 +2,10 @@ using System;
using System.Collections.Generic;
using System.Linq;
using Escape_Room_Engine.Engine.Scripts.Modules;
using Escape_Room_Engine.Engine.Scripts.Requirements;
using Escape_Room_Engine.Engine.Scripts.Utilities;
using UnityEngine;
using Logger = Escape_Room_Engine.Engine.Scripts.Utilities.Logger;
using LogType = Escape_Room_Engine.Engine.Scripts.Utilities.LogType;
using Random = UnityEngine.Random;
namespace Escape_Room_Engine.Engine.Scripts
{
@@ -68,8 +66,7 @@ namespace Escape_Room_Engine.Engine.Scripts
Logger.Log("Generating space...", LogType.RoomGeneration);
// create space
var rrDimensions = GenerateSpaceDimensions(entrance.rrPosition);
var space = new Space(rrDimensions, entrance);
var space = new Space(entrance);
// add exit
var exitDoor = new DoorModule(space, exitDoorTypes.RandomElement());
@@ -86,37 +83,6 @@ namespace Escape_Room_Engine.Engine.Scripts
room.AddSpace(space, exit);
}
/// <summary>
/// Generate space dimensions that fit the required size constraints and cover the position of the entrance.
/// </summary>
/// <param name="entranceRrPosition">The room relative (<i>RR</i>) position of the entrance.</param>
/// <returns>The generated room relative (<i>RR</i>) dimensions.</returns>
private Dimensions GenerateSpaceDimensions(Vector2Int entranceRrPosition)
{
var xMin = Utilities.Utilities.RandomInclusive(
0,
Math.Min(entranceRrPosition.x, playSpace.x - minRoomSize.x)
);
var xMax = Utilities.Utilities.RandomInclusive(
Math.Max(entranceRrPosition.x + 1, xMin + minRoomSize.x),
playSpace.x
);
var zMin = Utilities.Utilities.RandomInclusive(
0,
Math.Min(entranceRrPosition.y, playSpace.y - minRoomSize.y)
);
var zMax = Utilities.Utilities.RandomInclusive(
Math.Max(entranceRrPosition.y + 1, zMin + minRoomSize.y),
playSpace.y
);
var dimensions = new Dimensions(xMax - xMin, zMax - zMin, xMin, zMin);
Logger.Log($"Generated space dimensions {dimensions} from entrance position {entranceRrPosition}", LogType.RoomGeneration);
return dimensions;
}
public void HideOldestRoom()
{
if (NumberOfRooms > 0)