public void MakeCorridor(Room startRoom, Room endRoom, int exit) { int firstTileX = 0; int firstTileY = 0; int repeat = 0; // Horizontal corridor, exit 0. (right to left, bottom to top) if (exit == 0) { for (int y = startRoom.roomTilesY - 1; y > 0; y--) { for (int x = 0; x < startRoom.roomTilesX; x++) { if (startRoom.roomTiles[x, y] == Room.Tile.floor) { firstTileX = x; firstTileY = y; y = 0; x = startRoom.roomTilesX; repeat = startRoom.roomTilesY - firstTileY - 1; } } } } // Horizontal corridor, exit 1. (right to left, top to bot) else if (exit == 1) { for (int x = startRoom.roomTilesX - 1; x > 0; x--) { for (int y = 0; y < startRoom.roomTilesY; y++) { if (startRoom.roomTiles[x, y] == Room.Tile.floor) { firstTileX = x; firstTileY = y; y = startRoom.roomTilesY; x = 0; repeat = startRoom.roomTilesX - firstTileX - 1; } } } } // Vertical corridor, exit 2. (bottom to top, left to right) else if (exit == 2) { for (int y = 0; y < startRoom.roomTilesY; y++) { for (int x = 0; x < startRoom.roomTilesX; x++) { if (startRoom.roomTiles[x, y] == Room.Tile.floor) { firstTileX = x; firstTileY = y; y = startRoom.roomTilesY; x = startRoom.roomTilesX; repeat = startRoom.roomTilesY - firstTileY - 1; } } } } // Horizontal corridor, exit 3. (left to right, bottom to top) else if (exit == 3) { for (int x = 0; x < startRoom.roomTilesX; x++) { for (int y = 0; y < startRoom.roomTilesY; y++) { if (startRoom.roomTiles[x, y] == Room.Tile.floor) { firstTileX = x; firstTileY = y; // Check if corridor will connect. If yes, loop out, if no, jump 2 in the appriate direction and continue. y = startRoom.roomTilesY; x = startRoom.roomTilesX; repeat = firstTileX; } } } } Vector2 exitDir = lvlGrid.DirectionVector(exit); AssignTiles(startRoom, endRoom, firstTileX, firstTileY, exitDir, repeat); }