From 0ff1e92fb9be7ae9e99f5357ea73d327fe2eadd4 Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 10 Feb 2025 16:36:10 +0100 Subject: [PATCH] Implemeted dungeon map serialization. --- .../DungeonMapConsolePrinter/Program.cs | 6 +- .../Debug/net9.0/DungeonMapConsolePrinter.dll | Bin 5632 -> 5632 bytes .../Debug/net9.0/DungeonMapConsolePrinter.exe | Bin 145920 -> 145920 bytes .../bin/Debug/net9.0/DungeonMapGenerator.dll | Bin 23040 -> 23552 bytes .../DungeonMapGenerator/DungeonMap.cs | 13 +- .../DungeonMapSerializer.cs | 17 +- .../DungeonMapGenerator/Room.cs | 3 + .../netstandard2.0/DungeonMapGenerator.dll | Bin 23040 -> 23552 bytes Dungeons/dungeon.json | 1234 +++++++++++++++++ 9 files changed, 1267 insertions(+), 6 deletions(-) create mode 100644 Dungeons/dungeon.json diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs b/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs index 4dfcb0b..be2ab01 100644 --- a/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs +++ b/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs @@ -4,6 +4,9 @@ using DungeonMapGenerator; class Program { + private const string SAVED_DUNGEONS_PATH = @"C:\Users\User\repos\PuzzleGame\Dungeons"; + private const string DUNGEON_NAME = "dungeon"; + static void Main(string[] args) { // Create an instance of your DungeonMapGenerator class @@ -11,7 +14,8 @@ class Program generator.GenerateDungeon(25, .5f); // Call the method you want to run - var map = generator.GenerateDungeon(25, .5f); + DungeonMap map = generator.GenerateDungeon(25, .5f); + DungeonMapSerializer.SerializeToFile(map, SAVED_DUNGEONS_PATH, DUNGEON_NAME ); // Print the map to the console (assuming it returns a string or something printable) Console.WriteLine(map.GetMapAsString()); diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.dll b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.dll index 9f40139d34f4946ffe38ad8e9f25ceca12137878..43170ba2046e26d0d81eb877889a15e8589dfee2 100644 GIT binary patch delta 1509 zcmb`HT}+!*7{~wT&<|Sh<)d@Tn4!SJ%0^}>r3JRRb+mL-`LZxaM#MtfNmf@ZVj^a= z!)!{nsO1fbCNmhvGB!0)i3=C=#_63mUM%rOxiCge%)HPm=gs*&&;NPO z=lh=bfT|^|z+Ityz5yH%>(Yj6nrU2>75JWgY`BhZgbia@M;KwU!()eQlN^op@wv#nXE*sW~XKd%Q=RQX)&ldq8TRzCdr5K zlIA(mhI6Qs^_+GuJXpYn@Zvp;!%vQ&6R+wv1}x}-fl@4CH%?+v>_Zto!9KWfldQ!Z zvJpR$dlB2obQ`+J{fLm=c!qomDjp-dF@X!@XZ1juKHFF$^XR3xqIuz>U&R4~^xj?l`;p{@=A4#ijB*>(xt} zVcxZWkxM0fabHI~m26M>eL*h~4+K;G*0#WSFcE0?2NM%sZ(T1QRgOv6I|{3~Yhe)3?7q`&;6tH=g^jDSCUMctNUZt|;GKsNXJ^noXDU^);jXMoE8) z*OQMQ&xZ~&#f`UdmBJ#|JJ+hV J{UHio`@bGI1Tz2t delta 1132 zcmZ9LU1(ED6vzKFO>dH$8k5$FRjX+u_Nt+q<|gT_AGLLZwMcBGtE}upYraG%2ERZ- zO;!9BG+yzkpx}$NeOL&Jg6v|Sd{l6el_Kbyu*Vx>7Y5TByF7ul?|8wWeoSAzk zViU33S3P@1r~j?qTrGR8>eT+=rw(8Uv_2qXRNI;w#()O;bL)Yh+%_3=4~Pz#@wpeo zxk#(U2yGXeL_H=WoM-@oKAYjb2*llC>DiT@7s5Ec1TalwZA&|q?d2f7_5bk#-ttn4 zR)~NVR`HGP(rQ%hMz}L_UF9=VN6!HT2~4s@M@}3&eB{t^W&}3@54-5T5qLOe8bk;7 z4QALcqaRaqcZ`>F^p$bC7-*L8E9a}Qv3!2_Tv)|)Q`K;NeGD8|ba{0YfN7zEtQ21` zCJhvX;ud7(QcQ5Zff6nV1G~jvS|8Hm4?4qL`HJr(n8!rBw8?M6mO+H^ zN-rfipC6rrM=;Z(yMqYdgWY4;Fk1bKnf;OS_^4n0~tb>W{+mS z=Ah$YTNr9tea|Nf_8RVR3!+A^!3)h$=Mq2C->u3adw2BV=f~e?302y?m30ZO# z#>ps7lABN?ZM-J8V2=C|pUB->A0b!5GckW9tU_BB@UtX+V+&G>^(dRaj0F+4D*S)% znTx@#*>d6Jc(K>LUca;UvHqQKUwcn9G3t5y?BbO(-pucR4qpA?;NFD$)VC(Gt+C&T z$i{wOLtO+x4}=Kv0|@$l-9B0g|6y)+NBxgSQu$;$;dI${va36va-5~m`2W&en3-1{A6RJBzA diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.exe b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.exe index 3145996613b3b1deb2eef4dbd1ea6046ceb677a0..80eba3caf1abd8b0188fe6f7add7f5322be27d28 100644 GIT binary patch delta 99 zcmZqp!qEUkEsR^3R+##yF{CgUF(d-91&~Z*NM$euk|sdDIfDU|mB?TQ%nzBGm;AWQ}FjTtPqe>Y{~WB~yGdlGa2 diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapGenerator.dll b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapGenerator.dll index b34853f642d19530e7f319b7ecc748da9cc12abf..bf76f8034be066099185cbef1c545b9ea6cb6c97 100644 GIT binary patch delta 10821 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 HP_F+k^v5N? delta 10123 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 _monsterRooms = new List(); + [JsonProperty("EntranceRooms")] private List _entranceRooms = new List(); + [JsonProperty("NormalRooms")] private List _normalRooms = new List(); + [JsonProperty("BossRoom")] private Room _bossRoom; private HashSet _unoccupiedPoints = new HashSet(); private HashSet _occupiedPoints = new HashSet(); + public DungeonMap(){ } + public DungeonMap(int width, int height) { - _width = width; + this._width = width; _height = height; - _unoccupiedPoints.AddRange(Enumerable.Range(0, _width) + _unoccupiedPoints.AddRange(Enumerable.Range(0, this._width) .SelectMany(x => Enumerable.Range(0, _height) .Select(y => new Point(x,y)))); } diff --git a/DungeonMapGenerator/DungeonMapGenerator/DungeonMapSerializer.cs b/DungeonMapGenerator/DungeonMapGenerator/DungeonMapSerializer.cs index 7f19e67..aba3fda 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/DungeonMapSerializer.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/DungeonMapSerializer.cs @@ -7,14 +7,25 @@ namespace DungeonMapGenerator public class DungeonMapSerializer { // Serialize DungeonMap to JSON file - public static void SerializeToFile(DungeonMap dungeonMap, string filePath) + public static void SerializeToFile(DungeonMap dungeonMap, string directoryPath, string name) { try { - // Convert DungeonMap object to JSON string + string baseFilePath = Path.Combine(directoryPath, $"{name}.json"); + string filePath = baseFilePath; + int counter = 1; + + // Check if the file exists and rename it + while (File.Exists(filePath)) + { + filePath = Path.Combine(directoryPath, $"{name}{counter:00}.json"); // e.g., name01.json, name02.json + counter++; + } + + // Serialize the object string json = JsonConvert.SerializeObject(dungeonMap, Formatting.Indented); - // Write JSON string to a file + // Write JSON to the new file File.WriteAllText(filePath, json); } catch (Exception ex) diff --git a/DungeonMapGenerator/DungeonMapGenerator/Room.cs b/DungeonMapGenerator/DungeonMapGenerator/Room.cs index 2aa3108..723ed6c 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/Room.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/Room.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; namespace DungeonMapGenerator { @@ -11,6 +13,7 @@ namespace DungeonMapGenerator Left, Right } + [JsonConverter(typeof(StringEnumConverter))] public enum RoomType { Normal, diff --git a/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.dll b/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.dll index b34853f642d19530e7f319b7ecc748da9cc12abf..bf76f8034be066099185cbef1c545b9ea6cb6c97 100644 GIT binary patch delta 10821 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 HP_F+k^v5N? delta 10123 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