From 65b4cecd9bfc8d7e1aadf79544f2756108298858 Mon Sep 17 00:00:00 2001 From: "milan @ U1" Date: Wed, 14 Dec 2022 17:50:19 +0100 Subject: [PATCH] fix random puzzle order --- Assets/Desert/Assets/Desert.asset | 4 ++-- Assets/Engine/Runtime/Engine.cs | 3 +-- Assets/Engine/Runtime/Utilities/Utilities.cs | 9 ++++++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Assets/Desert/Assets/Desert.asset b/Assets/Desert/Assets/Desert.asset index 7c8d43d..c94d585 100644 --- a/Assets/Desert/Assets/Desert.asset +++ b/Assets/Desert/Assets/Desert.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 28d04249c1c4438da94b524e7d4afff2, type: 3} m_Name: Desert m_EditorClassIdentifier: - minRoomSize: {x: 3, y: 2} - playSpace: {x: 4, y: 2} + minRoomSize: {x: 3, y: 3} + playSpace: {x: 4, y: 3} spaceTile: {fileID: 3229991053255736984, guid: b8f192f7cebe686468af6b1a71c4605b, type: 3} environment: {fileID: 5743657079028767629, guid: 17ecdbaca50efaa4ab503614dfec54a8, diff --git a/Assets/Engine/Runtime/Engine.cs b/Assets/Engine/Runtime/Engine.cs index 8163b3a..04a7b9d 100644 --- a/Assets/Engine/Runtime/Engine.cs +++ b/Assets/Engine/Runtime/Engine.cs @@ -86,8 +86,7 @@ namespace EscapeRoomEngine.Engine.Runtime Space space; Passage exit = null; - var puzzle = _puzzles[0]; - _puzzles.RemoveAt(0); + var puzzle = _puzzles.PopRandomElement(); do { diff --git a/Assets/Engine/Runtime/Utilities/Utilities.cs b/Assets/Engine/Runtime/Utilities/Utilities.cs index b434ba7..c8af7c5 100644 --- a/Assets/Engine/Runtime/Utilities/Utilities.cs +++ b/Assets/Engine/Runtime/Utilities/Utilities.cs @@ -27,7 +27,14 @@ namespace EscapeRoomEngine.Engine.Runtime.Utilities public static int RandomInclusive(int from, int to) => Random.Range(from, to + 1); public static T RandomElement(this List list) => list[Random.Range(0, list.Count)]; - public static T RandomElement(this HashSet set) => set.ElementAt(Random.Range(0, set.Count)); + + public static T PopRandomElement(this List list) + { + var index = Random.Range(0, list.Count); + var element = list[index]; + list.RemoveAt(index); + return element; + } #endregion }