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();
    }