station 46 room
This commit is contained in:
@@ -72,14 +72,20 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
public void GenerateRoom()
|
||||
{
|
||||
Logger.Log("Generating room...", LogType.RoomGeneration);
|
||||
|
||||
var intro = NumberOfRooms == 0;
|
||||
|
||||
// get the last entrance from the newest room or create a spawn passage with no entrance door for where the player will start
|
||||
var entrance = NumberOfRooms > 0 ? _rooms.Last().exit : new Passage(new DoorModule(null, theme.spawnDoor));
|
||||
var entrance = intro ? new Passage(new DoorModule(null, theme.spawnDoor)) : _rooms.Last().exit;
|
||||
|
||||
var room = new Room(entrance);
|
||||
_rooms.Add(room);
|
||||
|
||||
if (_plannedPuzzles.Count > 0)
|
||||
|
||||
if (intro)
|
||||
{
|
||||
GenerateIntroSpace(room, entrance);
|
||||
}
|
||||
else if (_plannedPuzzles.Count > 0)
|
||||
{
|
||||
GeneratePuzzleSpace(room, entrance);
|
||||
}
|
||||
@@ -92,7 +98,12 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
var roomId = _rooms.Count - 1;
|
||||
room.InstantiateRoom(_playSpaceOrigin.transform, roomId * roomOffset, roomId.ToString());
|
||||
|
||||
if (theme.environment)
|
||||
if (intro)
|
||||
{
|
||||
Instantiate(theme.intro, room.roomObject.transform, false);
|
||||
FindObjectOfType<Intro>().Place(room.exit.fromOut.DoorState.transform);
|
||||
}
|
||||
else if (theme.environment)
|
||||
{
|
||||
Instantiate(theme.environment, room.roomObject.transform, false);
|
||||
}
|
||||
@@ -101,6 +112,20 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
UpdateUI();
|
||||
}
|
||||
|
||||
private void GenerateIntroSpace(Room room, Passage entrance)
|
||||
{
|
||||
Logger.Log($"Generating intro space...", LogType.RoomGeneration);
|
||||
|
||||
var space = new IntroSpace(room, entrance);
|
||||
var exitDoor = new DoorModule(space, theme.introExitDoor);
|
||||
if (!space.AddModuleWithRequirements(exitDoor))
|
||||
{
|
||||
throw new EngineException("Could not satisfy requirements for exit door.");
|
||||
}
|
||||
var exit = new Passage(exitDoor);
|
||||
room.AddSpace(space, exit);
|
||||
}
|
||||
|
||||
private void GeneratePuzzleSpace(Room room, Passage entrance)
|
||||
{
|
||||
var puzzlesAdded = 0;
|
||||
@@ -183,15 +208,11 @@ namespace EscapeRoomEngine.Engine.Runtime
|
||||
GameControl.Instance.PlannedPuzzles = _plannedPuzzles;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hide or destroy the room two rooms ago. The actual previous room is kept for the player to be able to backtrack one room.
|
||||
/// </summary>
|
||||
/// <param name="destroy"></param>
|
||||
public void HidePreviousRoom(bool destroy = true)
|
||||
{
|
||||
if (NumberOfRooms > 2)
|
||||
if (NumberOfRooms >= 2)
|
||||
{
|
||||
var room = _rooms[NumberOfRooms - 3];
|
||||
var room = _rooms[NumberOfRooms - 2];
|
||||
|
||||
// lock the doors that might be used to return to the old room
|
||||
room.exit.toIn.DoorState.Lock();
|
||||
|
||||
Reference in New Issue
Block a user