From 40967e95108f1b468ead1cf3fd60598a8a379238 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 20 Feb 2025 08:35:03 +0100 Subject: [PATCH] Implemented adding very hard locks to dead ends and adding a couple hard locks --- .../netstandard2.0/DiceProbabilities.dll | Bin 6656 -> 6656 bytes .../bin/Debug/net9.0/DiceProbabilities.dll | Bin 6656 -> 6656 bytes .../Debug/net9.0/DungeonMapConsolePrinter.dll | Bin 6144 -> 6144 bytes .../Debug/net9.0/DungeonMapConsolePrinter.exe | Bin 145920 -> 145920 bytes .../bin/Debug/net9.0/DungeonMapGenerator.dll | Bin 29696 -> 30208 bytes .../DungeonLockPopulator.cs | 26 +- .../DungeonMapGenerator/Lock.cs | 23 + .../DungeonMapGenerator/Room.cs | 2 +- .../netstandard2.0/DiceProbabilities.dll | Bin 6656 -> 6656 bytes .../netstandard2.0/DungeonMapGenerator.dll | Bin 29696 -> 30208 bytes Dungeons/dungeon 30x20(02).json | 1367 +++ Dungeons/dungeon 30x20(03).json | 1166 ++ Dungeons/dungeon 30x20(04).json | 1135 ++ Dungeons/dungeon 30x20(05).json | 1143 ++ Dungeons/dungeon 30x20(06).json | 1233 ++ Dungeons/dungeon 30x20(07).json | 1134 ++ Dungeons/dungeon 30x20(08).json | 1184 ++ Dungeons/dungeon 30x20(09).json | 1220 ++ Dungeons/dungeon 30x20(10).json | 1193 ++ Dungeons/dungeon 30x20(11).json | 1138 ++ .../Scenes/LooksLikeItCouldBeGood.unity | 10102 ++++++++++++++++ .../Scenes/LooksLikeItCouldBeGood.unity.meta | 7 + 22 files changed, 22069 insertions(+), 4 deletions(-) create mode 100644 Dungeons/dungeon 30x20(02).json create mode 100644 Dungeons/dungeon 30x20(03).json create mode 100644 Dungeons/dungeon 30x20(04).json create mode 100644 Dungeons/dungeon 30x20(05).json create mode 100644 Dungeons/dungeon 30x20(06).json create mode 100644 Dungeons/dungeon 30x20(07).json create mode 100644 Dungeons/dungeon 30x20(08).json create mode 100644 Dungeons/dungeon 30x20(09).json create mode 100644 Dungeons/dungeon 30x20(10).json create mode 100644 Dungeons/dungeon 30x20(11).json create mode 100644 PuzzleGameProject/Assets/Scenes/LooksLikeItCouldBeGood.unity create mode 100644 PuzzleGameProject/Assets/Scenes/LooksLikeItCouldBeGood.unity.meta diff --git a/DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.dll b/DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.dll index 417e586d0a0898b7f5cd1bf074acb04f7da160d6..d4d9f933108fed5d67a2dd0db9ddbe20c283e5da 100644 GIT binary patch delta 237 zcmZoLX)u}4!E(ap?V*i58~6k&w)mQGEwJ;RV7aqo`Xx!R%|85A9 delta 237 zcmZoLX)u}4!D8?)p?zb|20np(_J)eb7vJ?;S>Dr5PC+S*D~J7^N5)rzR#D8CjSc8=I#k8zwS9fZc~TwA9 delta 237 zcmZoLX)u}4!D8?)p?zb|20np(_J)eb7vJ?;S>Dr5PC+S*D~J7^N5)rzR#D8CjSc8=I#k8zwS9fZc~TwU0LD0=XHrQ>yp0=n-_4FFlwZjC#G4XB%34~ znHX85TBceUT9{iHS*Dn#m>QdznWdzeCtIeNTN+Qc;g(@Bz3lU6atwEXKnmwIx6N=dSc`TPZBFC~XZ25EFlR_)NMo>I zNMT53FacsCAZY~Tr!rUqu?2%65Ss(B5s;t4U<$^@3}#@M0@P^^)B}<+2a?8{*@b?x F0ssM6MBe}a delta 235 zcmZoLXfT-2!4f|`qG@9f3#Y(?n-+}?8@v4$x}8pM-!k$qlSrrVXCFEfw^gl zVPcx0fuV6yih+r_v5C2^5%yo$8ZM-*yQxAE6e!e zyv^UrXWzLm-zM+jZdHH^Cc^}Qs-50*NX4hmPg)|}eNSt1B2PH0zX^i@gCRpIgC&D8 zkY&zb%8&x&Co-e~Nsx>&LlRKLfWZVPXACAyfuto68ZsCG#Z7^tW3Zsf!Kn<5Qxoz*a*l^ eVK4<_V+J!YOabaN2kHUIm;*`U?cYtAI9UKQR}#Yj delta 99 zcmZqp!qEUkEsR^3R+##mFc>fxGNdwCG8h9{<_x9`DL{TALmH3-$rv*v0YwZLOn`F6 hVA2#wS^}XVgAq{N6ewy2)NcVKfvUEDH)Y~v0RZU05jOw; diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapGenerator.dll b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapGenerator.dll index fca1078a3d1826d90265a3bd8a08e2636a33a8c6..7e2e81e6637fd396d9a8b9f1b47b0f5132c401dc 100644 GIT binary patch delta 12974 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 K80A2X|9=6Cg}G$_ delta 12263 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 0) { @@ -31,7 +41,6 @@ namespace DungeonMapGenerator List alreadyLockedRooms = new List(); List adjacentRooms = new List(); - // Get all adjacent rooms that haven't been locked at foreach (Room room in currentRooms.ToList()) { foreach (Room adjacentRoom in room.GetAdjacentRooms()) @@ -83,15 +92,26 @@ namespace DungeonMapGenerator currentRooms = adjacentRooms; } - - // Check if all locks were set + + int hardLocksAdded = 0; foreach (var room in dungeon.GetAllRooms()) { + // Check if all locks were set if (room.Lock == null) { Console.WriteLine($"Room at {room.GetCenterOfRoom()} wasn't seen whilst populating locks"); room.Lock = Lock.NormalLocks[random.Next(0, Lock.NormalLocks.Count)]; } + + // Add two hard locks + if (hardLocksAdded < MAX_HARD_LOCKS + && room.TypeOfRoom == RoomType.Normal + && room.GetAdjacentRooms().All(adjacent => adjacent.TypeOfRoom == RoomType.Normal) + && (room.Lock.GetLock() == "4" || room.Lock.GetLock() == "10")) + { + room.Lock = Lock.GetRandomHardLock(); + hardLocksAdded++; + } } } diff --git a/DungeonMapGenerator/DungeonMapGenerator/Lock.cs b/DungeonMapGenerator/DungeonMapGenerator/Lock.cs index 3502cba..c17c74a 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/Lock.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/Lock.cs @@ -1,4 +1,6 @@ +using System; using System.Collections.Generic; +using System.Linq; using DiceProbabilities; using Newtonsoft.Json; @@ -33,6 +35,27 @@ namespace DungeonMapGenerator [JsonProperty("LockType")] private string _lockType; + public static Lock GetRandomVeryHardLock() + { + return GetRandomLockFromList(VeryHardLocks); + } + + public static Lock GetRandomHardLock() + { + return GetRandomLockFromList(HardLocks); + } + + public static Lock GetRandomNormalLock() + { + return GetRandomLockFromList(NormalLocks); + } + + private static Lock GetRandomLockFromList(List list) + { + Random random = new Random(); + return new Lock(list[random.Next(0, list.Count())].GetLock()); + } + public Lock() { diff --git a/DungeonMapGenerator/DungeonMapGenerator/Room.cs b/DungeonMapGenerator/DungeonMapGenerator/Room.cs index 9d992db..727fb76 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/Room.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/Room.cs @@ -35,7 +35,7 @@ namespace DungeonMapGenerator [JsonProperty("AdjacentRoomIds")] private HashSet _adjacentRoomIds = new HashSet(); - private List _adjacentRooms = new List(); + private HashSet _adjacentRooms = new HashSet(); private readonly Dictionary> _adjacentRoomsBySide = new Dictionary>(); public Room() diff --git a/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DiceProbabilities.dll b/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DiceProbabilities.dll index 417e586d0a0898b7f5cd1bf074acb04f7da160d6..d4d9f933108fed5d67a2dd0db9ddbe20c283e5da 100644 GIT binary patch delta 237 zcmZoLX)u}4!E(ap?V*i58~6k&w)mQGEwJ;RV7aqo`Xx!R%|85A9 delta 237 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 K80A2X|9=6Cg}G$_ delta 12263 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