Left paths

This commit is contained in:
Marco 2025-04-20 17:47:57 +02:00
commit ee7ee8b955
18 changed files with 52 additions and 8 deletions

View file

@ -70,7 +70,9 @@ public partial class RogueliteRoomManager : Node2D
}
private IEnumerable<RogueliteRoomResource> StarterRooms => Rooms.Where(x => x.Type is RoomType.Starter);
private IEnumerable<RogueliteRoomResource> RegularRooms => Rooms.Where(x => x.Type is RoomType.Regular);
private IEnumerable<RogueliteRoomResource> RegularRooms => Rooms.Where(x => x.Type is RoomType.Regular && x.HasDoors(DoorDirections.North | DoorDirections.South));
private IEnumerable<RogueliteRoomResource> OffshootRooms => Rooms.Where(x => x.Type is RoomType.Regular && x.HasDoors(DoorDirections.East | DoorDirections.West));
private IEnumerable<RogueliteRoomResource> BossRooms => Rooms.Where(x => x.Type is RoomType.Boss);
private List<Vector2I> _mainPath = new();
@ -92,6 +94,8 @@ public partial class RogueliteRoomManager : Node2D
var randomRoomsList = RegularRooms.Shuffle(DungeonLength).ToList();
var randomOffshootRoomsList = OffshootRooms.Shuffle(MaxBranchLength).ToList();
var currentPos = origin;
_connections.Add(new RoomConnection(origin, currentPos + new Vector2I(0, 1)));
Vector2I nextPos;
@ -152,12 +156,29 @@ public partial class RogueliteRoomManager : Node2D
// Spawn offshoot here
var offshootToSpawn = shuffledOffshoots[currentOffshoot % shuffledOffshoots.Count()];
var offshootTypeToSpawn = shuffledOffshoots[currentOffshoot % shuffledOffshoots.Count()];
int roomsInOffshot = GD.RandRange(0, MaxBranchLength);
var leftPosition = spawnedRoom.GridPosition;
for (int j = 0; j < roomsInOffshot; j++)
{
var room = randomOffshootRoomsList.Shuffle().FirstOrDefault();
var offshootCoord = leftPosition - new Vector2I(room.Size.X, 0);
SpawnRoom(room, offshootCoord, out var spanwedOffshooot);
_connections.Add(new RoomConnection(leftPosition, offshootCoord + new Vector2I(room.Size.X -1, 0)));
leftPosition = offshootCoord;
// Get a random room with the required doors
//var leftToRightRooms =
// Get a random door on right or left side
// spawn
// Add path