Set rooms to be generated in the middle range of outcomes 4-10

This commit is contained in:
Max 2025-02-19 17:19:05 +01:00
parent 401e93075d
commit d7af8dc4c2
16 changed files with 15675 additions and 17 deletions

View file

@ -11,15 +11,15 @@ class Program
{
// Create an instance of your DungeonMapGenerator class
var generator = new DungeonGenerator();
generator.GenerateDungeon(25, .5f);
// Call the method you want to run
DungeonMap map = generator.GenerateDungeon(25, .5f);
int width = 30;
int height = 20;
DungeonMap map = generator.GenerateDungeon(width, height, 5);
DungeonLockPopulator.PopulateLocksOfDungeon(map);
DungeonMapSerializer.SerializeToFile(map, SAVED_DUNGEONS_PATH, DUNGEON_NAME );
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)
Console.WriteLine(map.GetMapAsString());
Console.ReadLine();
}
}

View file

@ -17,10 +17,10 @@ namespace DungeonMapGenerator
private int _xLength = 40;
private int _yLength = 28;
public DungeonMap GenerateDungeon(int length, float monsterRoomRatio)
public DungeonMap GenerateDungeon(int xlength, int yLength, int numberOfMonsterRooms)
{
_xLength = 40;
_yLength = 28;
_xLength = xlength;
_yLength = yLength;
Random random = new Random();
DungeonMap dungeonMap = new DungeonMap(_xLength, _yLength);
@ -29,7 +29,6 @@ namespace DungeonMapGenerator
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
int numberOfMonsterRooms = 7; // TODO: Calculate from ratio
for (var i = 0; i < numberOfMonsterRooms; i ++)
{

View file

@ -77,7 +77,7 @@ namespace DungeonMapGenerator
{
foreach (Room room in locklessRooms)
{
room.Lock = Lock.PossibleLocks[random.Next(0, Lock.PossibleLocks.Count)];
room.Lock = Lock.NormalLocks[random.Next(0, Lock.NormalLocks.Count)];
}
}
@ -90,7 +90,7 @@ namespace DungeonMapGenerator
if (room.Lock == null)
{
Console.WriteLine($"Room at {room.GetCenterOfRoom()} wasn't seen whilst populating locks");
room.Lock = Lock.PossibleLocks[random.Next(0, Lock.PossibleLocks.Count)];
room.Lock = Lock.NormalLocks[random.Next(0, Lock.NormalLocks.Count)];
}
}
}
@ -98,7 +98,7 @@ namespace DungeonMapGenerator
private static List<Lock> GenerateLocks(List<Lock> pregeneratedLocks, int numLocks, float successChance)
{
List<Lock> locks = new List<Lock>();
if (FindCombination(pregeneratedLocks, locks, numLocks, successChance, Lock.PossibleLocks))
if (FindCombination(pregeneratedLocks, locks, numLocks, successChance, Lock.NormalLocks))
{
return locks;
}

View file

@ -18,7 +18,7 @@ namespace DungeonMapGenerator
// 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
filePath = Path.Combine(directoryPath, $"{name}({counter:00}).json"); // e.g., name01.json, name02.json
counter++;
}

View file

@ -6,11 +6,9 @@ namespace DungeonMapGenerator
{
public class Lock
{
public static readonly List<Lock> PossibleLocks = new List<Lock>()
public static readonly List<Lock> NormalLocks = new List<Lock>()
{
new Lock("="),
new Lock("2"),
new Lock("3"),
new Lock("4"),
new Lock("5"),
new Lock("6"),
@ -18,8 +16,18 @@ namespace DungeonMapGenerator
new Lock("8"),
new Lock("9"),
new Lock("10"),
new Lock("11"),
new Lock("12"),
};
public static readonly List<Lock> HardLocks = new List<Lock>()
{
new Lock("3"),
new Lock("11")
};
public static readonly List<Lock> VeryHardLocks = new List<Lock>()
{
new Lock("2"),
new Lock("12")
};
[JsonProperty("LockType")]

File diff suppressed because it is too large Load diff

1191
Dungeons/dungeon 30x20.json Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,966 @@
{
"Width": 30,
"Height": 20,
"MonsterRooms": [
{
"AdjacentRoomIds": [
527,
524,
521
],
"TypeOfRoom": "Monster",
"Lock": {
"LockType": "="
},
"Height": 4,
"Width": 4,
"PositionOfTopLeft": {
"X": 2,
"Y": 1
},
"Id": 23
},
{
"AdjacentRoomIds": [
533,
537
],
"TypeOfRoom": "Monster",
"Lock": {
"LockType": "4"
},
"Height": 4,
"Width": 4,
"PositionOfTopLeft": {
"X": 25,
"Y": 15
},
"Id": 153
},
{
"AdjacentRoomIds": [
547,
546,
559,
556
],
"TypeOfRoom": "Monster",
"Lock": {
"LockType": "9"
},
"Height": 4,
"Width": 4,
"PositionOfTopLeft": {
"X": 7,
"Y": 13
},
"Id": 233
},
{
"AdjacentRoomIds": [
565,
562
],
"TypeOfRoom": "Monster",
"Lock": {
"LockType": "6"
},
"Height": 4,
"Width": 4,
"PositionOfTopLeft": {
"X": 25,
"Y": 0
},
"Id": 322
},
{
"AdjacentRoomIds": [
574,
571,
1,
10,
2,
3
],
"TypeOfRoom": "Monster",
"Lock": {
"LockType": "9"
},
"Height": 4,
"Width": 4,
"PositionOfTopLeft": {
"X": 13,
"Y": 2
},
"Id": 426
}
],
"EntranceRooms": [
{
"AdjacentRoomIds": [
2,
574,
426
],
"TypeOfRoom": "Entrance",
"Lock": {
"LockType": "2"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 12,
"Y": 0
},
"Id": 1
},
{
"AdjacentRoomIds": [
8
],
"TypeOfRoom": "Entrance",
"Lock": {
"LockType": "3"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 0,
"Y": 7
},
"Id": 7
},
{
"AdjacentRoomIds": [
2,
426
],
"TypeOfRoom": "Entrance",
"Lock": {
"LockType": "4"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 16,
"Y": 0
},
"Id": 3
},
{
"AdjacentRoomIds": [
615,
662,
4,
6
],
"TypeOfRoom": "Entrance",
"Lock": {
"LockType": "5"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 28,
"Y": 9
},
"Id": 5
},
{
"AdjacentRoomIds": [
662,
660,
5
],
"TypeOfRoom": "Entrance",
"Lock": {
"LockType": "6"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 28,
"Y": 11
},
"Id": 6
},
{
"AdjacentRoomIds": [
7,
9
],
"TypeOfRoom": "Entrance",
"Lock": {
"LockType": "7"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 0,
"Y": 9
},
"Id": 8
},
{
"AdjacentRoomIds": [
8
],
"TypeOfRoom": "Entrance",
"Lock": {
"LockType": "8"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 0,
"Y": 11
},
"Id": 9
},
{
"AdjacentRoomIds": [
615,
5
],
"TypeOfRoom": "Entrance",
"Lock": {
"LockType": "9"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 28,
"Y": 7
},
"Id": 4
},
{
"AdjacentRoomIds": [
1,
3,
426
],
"TypeOfRoom": "Entrance",
"Lock": {
"LockType": "10"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 14,
"Y": 0
},
"Id": 2
}
],
"NormalRooms": [
{
"AdjacentRoomIds": [
23,
596
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "6"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 5,
"Y": 5
},
"Id": 521
},
{
"AdjacentRoomIds": [
23
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "8"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 0,
"Y": 2
},
"Id": 524
},
{
"AdjacentRoomIds": [
23,
653
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "9"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 6,
"Y": 0
},
"Id": 527
},
{
"AdjacentRoomIds": [
153,
622,
537
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "4"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 23,
"Y": 15
},
"Id": 533
},
{
"AdjacentRoomIds": [
660,
656,
533,
153
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "10"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 24,
"Y": 13
},
"Id": 537
},
{
"AdjacentRoomIds": [
233
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "8"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 5,
"Y": 16
},
"Id": 546
},
{
"AdjacentRoomIds": [
635,
233,
10
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "10"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 11,
"Y": 12
},
"Id": 547
},
{
"AdjacentRoomIds": [
233
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "9"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 10,
"Y": 17
},
"Id": 556
},
{
"AdjacentRoomIds": [
603,
10,
604,
233
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "9"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 8,
"Y": 11
},
"Id": 559
},
{
"AdjacentRoomIds": [
322,
608
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "10"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 26,
"Y": 4
},
"Id": 562
},
{
"AdjacentRoomIds": [
637,
322
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "7"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 23,
"Y": 0
},
"Id": 565
},
{
"AdjacentRoomIds": [
426
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "4"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 17,
"Y": 3
},
"Id": 571
},
{
"AdjacentRoomIds": [
650,
426,
585,
1
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "6"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 11,
"Y": 2
},
"Id": 574
},
{
"AdjacentRoomIds": [
10
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "9"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 20,
"Y": 10
},
"Id": 582
},
{
"AdjacentRoomIds": [
10,
574
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "6"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 10,
"Y": 4
},
"Id": 585
},
{
"AdjacentRoomIds": [
629,
10,
631
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "10"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 16,
"Y": 12
},
"Id": 591
},
{
"AdjacentRoomIds": [
521,
598
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "7"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 5,
"Y": 7
},
"Id": 596
},
{
"AdjacentRoomIds": [
603,
596
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "6"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 4,
"Y": 9
},
"Id": 598
},
{
"AdjacentRoomIds": [
598,
604,
559
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "10"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 6,
"Y": 10
},
"Id": 603
},
{
"AdjacentRoomIds": [
10,
603,
559
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "6"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 8,
"Y": 9
},
"Id": 604
},
{
"AdjacentRoomIds": [
611,
562,
615
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "5"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 25,
"Y": 6
},
"Id": 608
},
{
"AdjacentRoomIds": [
615,
608
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "9"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 24,
"Y": 8
},
"Id": 611
},
{
"AdjacentRoomIds": [
611,
4,
5,
608,
662
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "8"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 26,
"Y": 8
},
"Id": 615
},
{
"AdjacentRoomIds": [
533,
625
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "4"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 21,
"Y": 16
},
"Id": 622
},
{
"AdjacentRoomIds": [
622,
626
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "5"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 19,
"Y": 17
},
"Id": 625
},
{
"AdjacentRoomIds": [
631,
629,
625
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "10"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 18,
"Y": 15
},
"Id": 626
},
{
"AdjacentRoomIds": [
591,
631,
626
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "8"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 18,
"Y": 13
},
"Id": 629
},
{
"AdjacentRoomIds": [
633,
629,
626,
591
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "7"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 16,
"Y": 14
},
"Id": 631
},
{
"AdjacentRoomIds": [
631,
635
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "4"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 14,
"Y": 14
},
"Id": 633
},
{
"AdjacentRoomIds": [
547,
10,
633
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "9"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 13,
"Y": 12
},
"Id": 635
},
{
"AdjacentRoomIds": [
639,
565,
642
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "7"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 21,
"Y": 0
},
"Id": 637
},
{
"AdjacentRoomIds": [
637,
642
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "="
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 19,
"Y": 0
},
"Id": 639
},
{
"AdjacentRoomIds": [
639,
645,
637
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "9"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 20,
"Y": 2
},
"Id": 642
},
{
"AdjacentRoomIds": [
642
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "8"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 20,
"Y": 4
},
"Id": 645
},
{
"AdjacentRoomIds": [
653,
574
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "6"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 9,
"Y": 1
},
"Id": 650
},
{
"AdjacentRoomIds": [
650,
527
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "4"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 7,
"Y": 2
},
"Id": 653
},
{
"AdjacentRoomIds": [
662,
660,
537
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "10"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 24,
"Y": 11
},
"Id": 656
},
{
"AdjacentRoomIds": [
656,
6,
537,
662
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "7"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 26,
"Y": 12
},
"Id": 660
},
{
"AdjacentRoomIds": [
5,
656,
6,
615,
660
],
"TypeOfRoom": "Normal",
"Lock": {
"LockType": "9"
},
"Height": 2,
"Width": 2,
"PositionOfTopLeft": {
"X": 26,
"Y": 10
},
"Id": 662
}
],
"BossRoom": {
"AdjacentRoomIds": [
604,
582,
559,
585,
547,
426,
635,
591
],
"TypeOfRoom": "Boss",
"Lock": {
"LockType": "="
},
"Height": 6,
"Width": 10,
"PositionOfTopLeft": {
"X": 10,
"Y": 6
},
"Id": 10
}
}

1124
Dungeons/dungeon08.json Normal file

File diff suppressed because it is too large Load diff

1154
Dungeons/dungeon09.json Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 73357e28c85c29d49b06eea404f6dfe6
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: