From 57f6ee51e1124e5be5ca5d47f7d3a05d64c52068 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 20 Feb 2025 15:21:10 +0100 Subject: [PATCH] Implemented generation of room rewards --- .../DungeonMapConsolePrinter/Program.cs | 9 +++- .../Debug/net9.0/DungeonMapConsolePrinter.dll | Bin 6144 -> 6656 bytes .../Debug/net9.0/DungeonMapConsolePrinter.exe | Bin 145920 -> 145920 bytes .../bin/Debug/net9.0/DungeonMapGenerator.dll | Bin 30720 -> 31744 bytes .../DungeonMapGenerator/DungeonGenerator.cs | 8 +-- .../DungeonLootPopulator.cs | 50 ++++++++++++++++++ .../DungeonMapGenerator/Room.cs | 16 +++++- .../netstandard2.0/DungeonMapGenerator.dll | Bin 30720 -> 31744 bytes 8 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 DungeonMapGenerator/DungeonMapGenerator/DungeonLootPopulator.cs diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs b/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs index ea38424..53a86e0 100644 --- a/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs +++ b/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs @@ -13,10 +13,15 @@ class Program var generator = new DungeonGenerator(); // Call the method you want to run - int width = 100; - int height = 50; + int width = 40; + int height = 28; DungeonMap map = generator.GenerateDungeon(width, height, 5); DungeonLockPopulator.PopulateLocksOfDungeon(map); + List potentialLootRooms = new List(); + potentialLootRooms.AddRange(map.GetNormalRooms()); + potentialLootRooms.AddRange(map.GetMonsterRooms()); + potentialLootRooms.Add(map.GetBossRoom()); + DungeonLootPopulator.GenerateLootInRooms(potentialLootRooms); DungeonMapSerializer.SerializeToFile(map, SAVED_DUNGEONS_PATH, $"{DUNGEON_NAME} {width}x{height}" ); // Print the map to the console (assuming it returns a string or something printable) diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.dll b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.dll index c8b935dde2296f1dd133a469b5e82de5b5fbe369..38a600ca902775fc35b401b20a6ca7b76124fe38 100644 GIT binary patch delta 1687 zcmZWpZERCj7=F&ZUB9<=EgRba*R@3Ix-@Oqbu2={7!#W@U{qA%5Zd()7Q5cj7J)?E zh(XwhAKTTK_(LEuMEIpyLcl;Ggv4kh8XzXdM2Q$bV*HBY4`S5k+*0GmN#5tY&-1?L zz2}_!-a8$gPP}+D&@uA%E!-V95r9iXfjSD#iWumeJM(be)iAJ03TuFM*12|{dne!~ zf2RX@$Y@tOjcsCuGbANHtS_)G-+qLVVmgER#-@V5ge9DpFFS&d8X zsIghGOr5U?4JdIJPG?)l)wa}awb_^G_2jjVkVo#V)IjuE8Y~XoOHcPnQL;t(6H zuGh+I^-^hzt{dOl-nDGd^|Eo?{?t0^8|9KbBNHW<1v6z$##4o=RvzNR%386)|F;jL z#j(%R@agZDZ@mBV;Hx)gU%U0?#jlMMj@FGHo7LNAw|fT~y(!@xY8bZpRque^Zm)q5 z-T`Yxw);_W9DX4hz1xHj7C*d0HKab?vlQj>h3k$!5n37TNp>f*u~@t}n~Wz$6JzmQ zG#87GCP%wt2`!u}_*nC`eM%2M(2pKskbw(s)dALjSm=KAWW?=*CG zt0FoVj=7%^#z*d#7V7HGsGC+IiXJ4^@drGx?(jmidwoKPk*9Gi|Tw7q456xJ<=G}Ib+VahgQrnj7qsU9q zur2&HOB2#{|KplFuHDEoyGhmtrgx!%qFIX0xMuHG3A_jNhYn3?K--(Z&x}(#^RfBa zcS6oJ&O85DlOCs3 zULB*pOx`EFX=g_RzV~Ax2uHXk@U{xH`41^TFhs$VoeEp3ZDNg7zz5_%B7DCZk8jKi?ynyU*EDn<~acZj*b=;AJ1BZK5f zOjfSoQSEDpGHxh&w%OuTatwi^dH|L#5G4)n-Qr{&WCSV2oMNxypyH_Fgkqi)I8HX= z6~!gez!I|BgSd!(?Ga9H=@~MCa)jZIkW3&)E@=Ju2nYB|F5{-?$7K#Rg4fj$VfgSI z!Z7g}+Hnl)VlQfO9eeqL{7AOo7TJcoWCB_CW^kB1fM>}*yhIKue~j!y5g+CmPT*5< zKYWWj$HzlZ*E)|Qup=19aa5`8UwfxxOC9|G>xNWk2YMJi*GSa&&dj){N{>y?p3KkB zyQRvv#vS2(XI}R{4xI4Dg0J@7K41Fc&xPNf{NTbLXNM2EQ}D%vF!dNj4U=e8%CJOD z&|hQqnx-`n9rVX^Yrr(k8VF$xRC;QAg`F%plWxj!vbkd3aneOMU&uM7$k$d}I zTllqgb7;dm{cfW#xarw-XVO(Ov9D^%u`gX2Ts`;xmuI?8um7}M{n*H%KaqKCrL{?0 z?X29ZdrMTpk#&7Ii4q)4!sVOh@Xqp;C?c=&G&7fZfu6&hHGng@$0&x<9ArKldSOQsQK-z>M8Hm$>tQ4TC6rh{| hP{a&~O@V9^hEy<41M&)^I delta 99 zcmZqp!qEUkEsR^3R+#!5Fr+Y8Fr+c0G8h7B3kDMgONL~IL@?V3$VvsWlYn9tKy_(A fY|dZ`6f*|O7=ob*P$mf|V+2-{wEep&6DJD*KR6RQ diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapGenerator.dll b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapGenerator.dll index c229425c6a498550673d72147b6ef39a312c5684..a1835388933d0933853ff5e7627234a378ad33d2 100644 GIT binary patch delta 15929 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 delta 14956 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 diff --git a/DungeonMapGenerator/DungeonMapGenerator/DungeonGenerator.cs b/DungeonMapGenerator/DungeonMapGenerator/DungeonGenerator.cs index 6df7f11..de4cff3 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/DungeonGenerator.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/DungeonGenerator.cs @@ -14,8 +14,8 @@ namespace DungeonMapGenerator private const int WIDTH_OF_BOSS = 10; private const int HEIGHT_OF_BOSS = 6; - private int _xLength = 40; - private int _yLength = 28; + private int _xLength; + private int _yLength; public DungeonMap GenerateDungeon(int xlength, int yLength, int numberOfMonsterRooms) { @@ -25,7 +25,7 @@ namespace DungeonMapGenerator Random random = new Random(); DungeonMap dungeonMap = new DungeonMap(_xLength, _yLength); - dungeonMap.AddRooms(GenerateEntranceRooms(_xLength, _yLength, random.Next(1,4))); + dungeonMap.AddRooms(GenerateEntranceRooms(_xLength, _yLength, random.Next(1,3))); dungeonMap.AddRoom(GenerateOnlyBossRoom(_xLength, _yLength, WIDTH_OF_BOSS, HEIGHT_OF_BOSS)); EvenDisperser disperser = new EvenDisperser(_xLength, _yLength, dungeonMap.GetUnoccupiedPoints()); //TODO calculate L and W from length @@ -43,7 +43,7 @@ namespace DungeonMapGenerator AddConnectionRooms(dungeonMap); ConnectAllAdjacentRooms(dungeonMap); AddAdjacentRoomsToEntranceRooms(dungeonMap); - + return dungeonMap; } diff --git a/DungeonMapGenerator/DungeonMapGenerator/DungeonLootPopulator.cs b/DungeonMapGenerator/DungeonMapGenerator/DungeonLootPopulator.cs new file mode 100644 index 0000000..6cd6ed9 --- /dev/null +++ b/DungeonMapGenerator/DungeonMapGenerator/DungeonLootPopulator.cs @@ -0,0 +1,50 @@ +using System.Collections.Generic; +using System.Linq; + +namespace DungeonMapGenerator +{ + public static class DungeonLootPopulator + { + private const int MONSTER_ROOM_DIAMONDS = 2; + private const int BOSS_ROOM_DIAMONDS = 6; + private const int BOSS_ROOM_DAMAGE = 2; + + public static void GenerateLootInRooms(List rooms) + { + foreach (Room room in rooms) + { + switch (room.TypeOfRoom) + { + case RoomType.Normal: + if (Lock.HardLocks.Any(l => l.GetLock() == room.Lock.GetLock())) + { + room.AddLoot(LootType.Chest); + } + else if (Lock.VeryHardLocks.Any(l => l.GetLock() == room.Lock.GetLock())) + { + room.AddLoot(LootType.Diamond); + } + break; + case RoomType.Monster: + for (int i = 0; i < MONSTER_ROOM_DIAMONDS; i++) + { + room.AddLoot(LootType.Diamond); + } + break; + case RoomType.Boss: + for (int i = 0; i < BOSS_ROOM_DIAMONDS; i++) + { + room.AddLoot(LootType.Diamond); + } + + for (int i = 0; i < BOSS_ROOM_DAMAGE; i++) + { + room.AddLoot(LootType.Diamond); + } + break; + } + + } + } + } +} \ No newline at end of file diff --git a/DungeonMapGenerator/DungeonMapGenerator/Room.cs b/DungeonMapGenerator/DungeonMapGenerator/Room.cs index 727fb76..9031140 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/Room.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/Room.cs @@ -21,6 +21,13 @@ namespace DungeonMapGenerator Monster, Boss } + + public enum LootType + { + Diamond, + Chest, + Damage + } public class Room { @@ -32,7 +39,8 @@ namespace DungeonMapGenerator public int Width { get; set; } public Point PositionOfTopLeft { get; set; } public int Id { get; set; } - + [JsonProperty("Loot")] + private List _loot = new List(); [JsonProperty("AdjacentRoomIds")] private HashSet _adjacentRoomIds = new HashSet(); private HashSet _adjacentRooms = new HashSet(); @@ -57,8 +65,12 @@ namespace DungeonMapGenerator _adjacentRooms.Add(room); _adjacentRoomIds.Add(room.Id); } - + public void AddLoot(LootType loot) + { + _loot.Add(loot); + } + public HashSet GetAdjacentRoomIds() { return new HashSet(_adjacentRoomIds); diff --git a/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.dll b/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.dll index c229425c6a498550673d72147b6ef39a312c5684..a1835388933d0933853ff5e7627234a378ad33d2 100644 GIT binary patch delta 15929 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 delta 14956 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