67 return w() <= 0 ||
h() <= 0;
109 std::vector<map_location>
parse_location_range(
const std::string& xvals,
const std::string &yvals,
bool with_border =
false)
const;
116 std::optional<t_translation::terrain_code>
terrain_;
126 , replace_if_failed_(false)
133 void overlay(
const gamemap_base& m,
map_location loc,
const std::vector<overlay_rule>& rules = std::vector<overlay_rule>(),
bool is_odd =
false,
bool ignore_special_locations =
false);
148 for(
int x = 0; x <
w(); ++x) {
149 for(
int y = 0; y <
h(); ++y) {
179 std::string get_terrain_string(
const map_location& loc)
const;
180 std::string get_terrain_editor_string(
const map_location& loc)
const;
204 const std::shared_ptr<terrain_type_data>&
tdata()
const {
return tdata_; }
216 void read(
const std::string& data,
const bool allow_invalid =
true);
218 std::string
write()
const;
237 const std::vector<map_location>&
villages()
const {
return villages_; }
252 int read_header(
const std::string& data);
254 std::shared_ptr<terrain_type_data>
tdata_;
static const int default_border
The default border style for a map.
constexpr bool is_odd(T num)
location_map & special_locations()
std::vector< map_location > villages_
const std::string * is_special_location(const map_location &loc) const
returns the name of the special location at position loc, null if no such location exists...
boost::bimaps::bimap< boost::bimaps::set_of< std::string >, boost::bimaps::multiset_of< coordinate > > starting_positions
map_location starting_position(int side) const
location_map starting_positions_
const t_translation::terrain_code operator[](const map_location &loc) const
int is_starting_position(const map_location &loc) const
returns the side number of the side starting at position loc, 0 if no such side exists.
std::shared_ptr< terrain_type_data > tdata_
A terrain string which is converted to a terrain is a string with 1 or 2 layers the layers are separa...
void for_each_loc(const F &f) const
virtual void set_terrain(const map_location &loc, const terrain_code &terrain, const terrain_type_data::merge_mode mode=terrain_type_data::BOTH, bool replace_if_failed=false)=0
Clobbers over the terrain at location 'loc', with the given terrain.
map_location special_location(const std::string &id) const
static const int MAX_PLAYERS
Maximum number of players supported.
void set_special_location(const std::string &id, const map_location &loc)
const std::vector< map_location > starting_positions() const
Contains the database of all known terrain types, both those defined explicitly by WML [terrain_type]...
std::optional< t_translation::terrain_code > terrain_
void write(std::ostream &out, const configr_of &cfg, unsigned int level)
const terrain_map & tiles() const
int w() const
Effective map width.
void read(config &cfg, std::istream &in, abstract_validator *validator)
void for_each_walkable_loc(const F &f) const
terrain_code get_terrain(const map_location &loc) const
Looks up terrain at a particular location.
terrain_type_data::merge_mode mode_
bool on_board_with_border(const map_location &loc) const
t_translation::terrain_code terrain_code
Encapsulates the map of the game.
void set_starting_position(int side, const map_location &loc)
Manipulate starting positions of the different sides.
const std::shared_ptr< terrain_type_data > & tdata() const
t_translation::terrain_code & operator[](const map_location &loc)
t_translation::ter_list old_
Encapsulates the map of the game.
int total_width() const
Real width of the map, including borders.
int num_valid_starting_positions() const
Counts the number of sides that have valid starting positions on this map.
bool on_board(const map_location &loc) const
Tell if a location is on the map.
terrain_code & get(int x, int y)
int total_height() const
Real height of the map, including borders.
const location_map & special_locations() const
const std::vector< map_location > & villages() const
Return a list of the locations of villages on the map.
int border_size() const
Size of the map border.
std::vector< terrain_code > ter_list
t_translation::starting_positions location_map
std::vector< map_location > parse_location_range(const std::string &xvals, const std::string &yvals, bool with_border=false) const
Parses ranges of locations into a vector of locations, using this map's dimensions as bounds...
t_translation::ter_list new_
bool empty() const
Tell if the map is of 0 size.
void overlay(const gamemap_base &m, map_location loc, const std::vector< overlay_rule > &rules=std::vector< overlay_rule >(), bool is_odd=false, bool ignore_special_locations=false)
Overlays another map onto this one at the given position.
A config object defines a single node in a WML file, with access to child nodes.
int h() const
Effective map height.
std::string to_string() const