#pragma once

#include "map.hpp"

class WorldBuilder {
  public:
  Map& $map;

  WorldBuilder(Map &map) : $map(map) { }

  void partition_map(Room &cur, int depth);
  void make_room(size_t origin_y, size_t origin_x, size_t width, size_t height);
  void add_door(Room &room);
  void generate();
  void set_door(Room &room, int value);
  void place_rooms();
  bool dig_tunnel(PointList &holes, Point &src, Point &target);
  void tunnel_doors(PointList &holes, Room &src, Room &target);
  void update_door(Point &at, int wall_or_space);
  void stylize_room(int room, string tile_name, float size);
};
