protected void PaintRoomRandomly(ProcSpace room, int maxAttempts) { bool successful = false; int attempts = 0; map.BulkEditBegin(); while (!successful && attempts < maxAttempts) { // random ints divisible by four 4 — keeps some distance between elements int originX = Rand.RangeDivFour(mapMarginX, mapColumns - mapMarginX); int originY = Rand.RangeDivFour(mapMarginY, mapRows - mapMarginY); // check that room will fit within map bounds if (RoomInBounds(originX, originY, room) && !TouchingRooms(originX, originY, room)) { // paint room for (int x = 0; x < room.width; x++) { for (int y = 0; y < room.height; y++) { map.ClearTile(originX + x, originY + y); } } // with room succesfully placed, set origin then add room to List room.originX = originX; room.originY = originY; roomList.Add(room); currentRoom = room; successful = true; } attempts++; } map.BulkEditEnd(); }