From 80435ff69610b6264c55da66ebe327bd2dcc6dcc Mon Sep 17 00:00:00 2001 From: "milan @ U1" Date: Thu, 15 Dec 2022 23:40:55 +0100 Subject: [PATCH] fix end space --- Assets/Engine/Runtime/Engine.cs | 35 ++++++++++++++++++++++----------- Assets/Engine/Runtime/Room.cs | 7 +------ Assets/Scenes/TestScene.unity | 17 +--------------- 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/Assets/Engine/Runtime/Engine.cs b/Assets/Engine/Runtime/Engine.cs index a4f5944..f6b3270 100644 --- a/Assets/Engine/Runtime/Engine.cs +++ b/Assets/Engine/Runtime/Engine.cs @@ -63,7 +63,15 @@ namespace EscapeRoomEngine.Engine.Runtime var room = new Room(entrance); _rooms.Add(room); - GenerateSpace(room, entrance); + if (_plannedPuzzles.Count > 0) + { + GeneratePuzzleSpace(room, entrance); + } + else + { + GenerateEndSpace(room, entrance); + GameControl.Instance.StopGame(); + } var roomId = _rooms.Count - 1; room.InstantiateRoom(_playSpaceOrigin.transform, roomId * roomOffset, roomId.ToString()); @@ -77,15 +85,14 @@ namespace EscapeRoomEngine.Engine.Runtime UpdateUI(); } - private void GenerateSpace(Room room, Passage entrance) + private void GeneratePuzzleSpace(Room room, Passage entrance) { var puzzlesAdded = 0; var tries = 0; Space space; - Passage exit = null; + Passage exit; // choose the next puzzle - // PlanPuzzles(); var puzzle = ChoosePuzzle(); GameControl.Instance.CurrentPuzzle = puzzle; @@ -98,17 +105,14 @@ namespace EscapeRoomEngine.Engine.Runtime space = new Space(room, entrance); // add exit - if (_plannedPuzzles.Count > 0) + var exitDoor = new DoorModule(space, theme.exitDoorTypes.RandomElement()); + if (!space.AddModuleWithRequirements(exitDoor)) { - var exitDoor = new DoorModule(space, theme.exitDoorTypes.RandomElement()); - if (!space.AddModuleWithRequirements(exitDoor)) - { - throw new EngineException("Could not satisfy requirements for exit door."); - } - exit = new Passage(exitDoor); + throw new EngineException("Could not satisfy requirements for exit door."); } + exit = new Passage(exitDoor); - // add puzzle + // add puzzle if (space.AddModuleWithRequirements(Module.CreateModuleByType(space, puzzle))) { puzzlesAdded++; @@ -123,6 +127,13 @@ namespace EscapeRoomEngine.Engine.Runtime room.AddSpace(space, exit); } + private void GenerateEndSpace(Room room, Passage entrance) + { + Logger.Log($"Generating end space...", LogType.RoomGeneration); + + room.AddSpace(new Space(room, entrance), null); + } + private PuzzleModuleDescription ChoosePuzzle() { // choose a puzzle from the plan and remove it from both the plan and later available puzzles (so it is only chosen once) diff --git a/Assets/Engine/Runtime/Room.cs b/Assets/Engine/Runtime/Room.cs index 838b6f6..52918ce 100644 --- a/Assets/Engine/Runtime/Room.cs +++ b/Assets/Engine/Runtime/Room.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using EscapeRoomEngine.Engine.Runtime.Measurements; using EscapeRoomEngine.Engine.Runtime.Modules; -using EscapeRoomEngine.Engine.Runtime.UI; using UnityEngine; using Logger = EscapeRoomEngine.Engine.Runtime.Utilities.Logger; using LogType = EscapeRoomEngine.Engine.Runtime.Utilities.LogType; @@ -62,11 +61,7 @@ namespace EscapeRoomEngine.Engine.Runtime { Measure.Solve((PuzzleModuleDescription)puzzle.description); - if (LastRoom) - { - GameControl.Instance.StopGame(); - } - else if (puzzles.All(p => p.PuzzleState.Solved)) + if (puzzles.All(p => p.PuzzleState.Solved)) { exit.fromOut.DoorState.Unlock(); } diff --git a/Assets/Scenes/TestScene.unity b/Assets/Scenes/TestScene.unity index bc13952..d000a55 100644 --- a/Assets/Scenes/TestScene.unity +++ b/Assets/Scenes/TestScene.unity @@ -547,7 +547,6 @@ GameObject: - component: {fileID: 1568048334} - component: {fileID: 1568048339} - component: {fileID: 1568048336} - - component: {fileID: 1568048340} m_Layer: 0 m_Name: Engine m_TagString: Untagged @@ -599,7 +598,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: loggingEnabled: 1 - typeFilter: 0000000009000000 + typeFilter: 00000000 --- !u!114 &1568048339 MonoBehaviour: m_ObjectHideFlags: 0 @@ -613,17 +612,3 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: databasePath: measurements.realm ---- !u!114 &1568048340 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1568048333} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 599a288d4210437698dc391e5cc84a8a, type: 3} - m_Name: - m_EditorClassIdentifier: - values: a3000000110100007c0000002801000029000000 - target: 600