diff --git a/Scenes/Maps/Roguelike.tscn b/Scenes/Maps/Roguelike.tscn index df72358a..4ea36328 100644 --- a/Scenes/Maps/Roguelike.tscn +++ b/Scenes/Maps/Roguelike.tscn @@ -27,7 +27,6 @@ process_mode = 1 y_sort_enabled = true script = ExtResource("4_jtlua") MapThemes = Array[Object]([ExtResource("25_7gtqx")]) -ManualSeed = "8303399526188049494" [node name="CameraController" type="Camera2D" parent="."] process_mode = 1 diff --git a/Scripts/Controllers/RogueliteRoomManager.cs b/Scripts/Controllers/RogueliteRoomManager.cs index 3fd15bba..7b183407 100644 --- a/Scripts/Controllers/RogueliteRoomManager.cs +++ b/Scripts/Controllers/RogueliteRoomManager.cs @@ -198,12 +198,8 @@ public partial class RogueliteRoomManager : Node2D foreach (var direction in directions) { - // var randOffshootStartIndex = SpawnedRooms.Count(x => - // x.RoomResource.Type is RoomType.Regular && - // x.RoomResource.HasDoors(DoorDirections.West | DoorDirections.East)); - - //var offshootTypeToSpawn = shuffledOffshoots[currentOffshoot % shuffledOffshoots.Count()]; - + GD.Print($"Offshoot trying {direction}"); + if (!offshootsQueue.TryDequeue(out var offshootTypeToSpawn)) { GD.Print("Ran out of offshoot types"); @@ -222,6 +218,8 @@ public partial class RogueliteRoomManager : Node2D new Queue().EnqueueRange(MapTheme.Rooms .Where(x => x.Type == offshootTypeToSpawn).ToList()); + GD.Print($"Trying to spawn {roomsInOffshot} rooms ending in {endRooms.Peek()}"); + var res = SpawnOffshoot(lastRoom, direction, offshootTypeToSpawn, roomsInOffshot, offshootRoomsQueue, endRooms); if (res) @@ -342,6 +340,16 @@ public partial class RogueliteRoomManager : Node2D return null; } + // Shift position by the size + var posToSpawn = direction switch + { + Direction.Up => nextPos - new Vector2I(0, roomToSpawn.Size.Y -1), + Direction.Down => nextPos, + Direction.Left => nextPos - new Vector2I(roomToSpawn.Size.X -1, 0), + Direction.Right => nextPos, + _ => nextPos + }; + var spawnedRoom = TrySpawnRoom(roomToSpawn, nextPos, direction); if (spawnedRoom is null) { diff --git a/Scripts/Resources/Roguelite/RogueliteRoomResource.cs b/Scripts/Resources/Roguelite/RogueliteRoomResource.cs index 5bcd109f..3f2f413a 100644 --- a/Scripts/Resources/Roguelite/RogueliteRoomResource.cs +++ b/Scripts/Resources/Roguelite/RogueliteRoomResource.cs @@ -41,7 +41,7 @@ public partial class RogueliteRoomResource : Resource case Direction.Up: for (int i = 0; i < Size.X; i++) - offsets.Add(new Vector2I(gridPosition.X - i, gridPosition.Y + Size.Y - 1)); + offsets.Add(new Vector2I(gridPosition.X - i, gridPosition.Y + (Size.Y - 1))); break; case Direction.Right: @@ -51,7 +51,7 @@ public partial class RogueliteRoomResource : Resource case Direction.Left: for (int i = 0; i < Size.Y; i++) - offsets.Add(new Vector2I(gridPosition.X + Size.X - 1, gridPosition.Y - i)); + offsets.Add(new Vector2I(gridPosition.X - (Size.X - 1), gridPosition.Y - i)); break; }