The Battle for Wesnoth  1.13.4+dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
editor::editor_map Class Reference

This class adds extra editor-specific functionality to a normal gamemap. More...

#include <editor_map.hpp>

Inheritance diagram for editor::editor_map:
Inheritance graph

Public Member Functions

 editor_map (const config &terrain_cfg)
 Empty map constructor. More...
 
 editor_map (const config &terrain_cfg, const std::string &data)
 Create an editor map from a map data string. More...
 
 editor_map (const config &terrain_cfg, size_t width, size_t height, const t_translation::t_terrain &filler)
 Create an editor map with the given dimensions and filler terrain. More...
 
 editor_map (const gamemap &map)
 Create an editor_map by upgrading an existing gamemap. More...
 
 ~editor_map ()
 editor_map destructor More...
 
void sanity_check ()
 Debugging aid. More...
 
std::set< map_locationget_contiguous_terrain_tiles (const map_location &start) const
 Get a contiguous set of tiles having the same terrain as the starting location. More...
 
std::set< map_locationset_starting_position_labels (display &disp)
 Set labels for staring positions in the given display object. More...
 
bool in_selection (const map_location &loc) const
 
bool add_to_selection (const map_location &loc)
 Add a location to the selection. More...
 
bool remove_from_selection (const map_location &loc)
 Remove a location to the selection. More...
 
bool set_selection (const std::set< map_location > &area)
 Select the given area. More...
 
const std::set< map_location > & selection () const
 Return the selection set. More...
 
void clear_selection ()
 Clear the selection. More...
 
void invert_selection ()
 Invert the selection, i.e. More...
 
void select_all ()
 Select all map hexes. More...
 
bool everything_selected () const
 
void resize (int width, int height, int x_offset, int y_offset, const t_translation::t_terrain &filler=t_translation::NONE_TERRAIN)
 Resize the map. More...
 
gamemap mask_to (const gamemap &target) const
 A sort-of diff operation returning a mask that, when applied to the current editor_map, will transform it into the target map. More...
 
bool same_size_as (const gamemap &other) const
 A precondition to several map operations. More...
 
- Public Member Functions inherited from gamemap
const t_translation::t_listunderlying_mvt_terrain (const map_location &loc) const
 
const t_translation::t_listunderlying_def_terrain (const map_location &loc) const
 
const t_translation::t_listunderlying_union_terrain (const map_location &loc) const
 
std::string get_terrain_string (const map_location &loc) const
 
std::string get_terrain_editor_string (const map_location &loc) const
 
bool is_village (const map_location &loc) const
 
int gives_healing (const map_location &loc) const
 
bool is_castle (const map_location &loc) const
 
bool is_keep (const map_location &loc) const
 
const t_translation::t_listunderlying_mvt_terrain (const t_translation::t_terrain &terrain) const
 
const t_translation::t_listunderlying_def_terrain (const t_translation::t_terrain &terrain) const
 
const t_translation::t_listunderlying_union_terrain (const t_translation::t_terrain &terrain) const
 
std::string get_terrain_string (const t_translation::t_terrain &terrain) const
 
std::string get_terrain_editor_string (const t_translation::t_terrain &terrain) const
 
std::string get_underlying_terrain_string (const t_translation::t_terrain &terrain) const
 
bool is_village (const t_translation::t_terrain &terrain) const
 
int gives_healing (const t_translation::t_terrain &terrain) const
 
bool is_castle (const t_translation::t_terrain &terrain) const
 
bool is_keep (const t_translation::t_terrain &terrain) const
 
const terrain_typeget_terrain_info (const t_translation::t_terrain &terrain) const
 
const tdata_cachetdata () const
 
 gamemap (const tdata_cache &tdata, const std::string &data)
 Loads a map, with the given terrain configuration. More...
 
 gamemap (const tdata_cache &tdata, const config &level)
 Loads a map, from the [map] wml config in level. More...
 
virtual ~gamemap ()
 
void read (const std::string &data, const bool allow_invalid=true, const int border_size=1)
 
std::string write () const
 
void overlay (const gamemap &m, const config &rules, int x=0, int y=0, bool border=false)
 Overlays another map onto this one at the given position. More...
 
int w () const
 Effective map width. More...
 
int h () const
 Effective map height. More...
 
int border_size () const
 Size of the map border. More...
 
int total_width () const
 Real width of the map, including borders. More...
 
int total_height () const
 Real height of the map, including borders. More...
 
const t_translation::t_terrain operator[] (const map_location &loc) const
 
t_translation::t_terrain get_terrain (const map_location &loc) const
 Looks up terrain at a particular location. More...
 
void write_terrain (const map_location &loc, config &cfg) const
 Writes the terrain at loc to cfg. More...
 
void set_starting_position (int side, const map_location &loc)
 Manipulate starting positions of the different sides. More...
 
map_location starting_position (int side) const
 
void set_special_location (const std::string &id, const map_location &loc)
 
map_location special_location (const std::string &id) const
 
const std::stringis_starting_position (const map_location &loc) const
 returns the side number of the side starting at position loc, 0 if no such side exists. More...
 
int num_valid_starting_positions () const
 
bool on_board (const map_location &loc) const
 Tell if a location is on the map. More...
 
bool on_board_with_border (const map_location &loc) const
 
bool empty () const
 Tell if the map is of 0 size. More...
 
const std::vector< map_location > & villages () const
 Return a list of the locations of villages on the map. More...
 
const terrain_typeget_terrain_info (const map_location &loc) const
 Shortcut to get_terrain_info(get_terrain(loc)). More...
 
const t_translation::t_listget_terrain_list () const
 Gets the list of terrains. More...
 
void set_terrain (const map_location &loc, const t_translation::t_terrain &terrain, const terrain_type_data::tmerge_mode mode=terrain_type_data::BOTH, bool replace_if_failed=false)
 Clobbers over the terrain at location 'loc', with the given terrain. More...
 
const std::map
< t_translation::t_terrain,
size_t > & 
get_weighted_terrain_frequencies () const
 Returns a list of the frequencies of different terrain types on the map, with terrain nearer the center getting weighted higher. More...
 
void remove_from_border_cache (const map_location &loc)
 Remove the cached border terrain at loc. More...
 
std::vector< map_locationparse_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. More...
 
const tstarting_positionsspecial_locations () const
 

Static Public Member Functions

static editor_map from_string (const config &terrain_cfg, const std::string &data)
 Wrapper around editor_map(cfg, data) that catches possible exceptions and wraps them in a editor_map_load_exception. More...
 

Protected Member Functions

t_translation::t_list clone_column (int x, const t_translation::t_terrain &filler)
 
void expand_right (int count, const t_translation::t_terrain &filler)
 
void expand_left (int count, const t_translation::t_terrain &filler)
 
void expand_top (int count, const t_translation::t_terrain &filler)
 
void expand_bottom (int count, const t_translation::t_terrain &filler)
 
void shrink_right (int count)
 
void shrink_left (int count)
 
void shrink_top (int count)
 
void shrink_bottom (int count)
 
- Protected Member Functions inherited from gamemap
void clear_border_cache ()
 Clears the border cache, needed for the editor. More...
 

Protected Attributes

std::set< map_locationselection_
 The selected hexes. More...
 
- Protected Attributes inherited from gamemap
t_translation::t_map tiles_
 
tstarting_positions starting_positions_
 The size of the starting positions array is MAX_PLAYERS + 1, because the positions themselves are numbered from 1. More...
 
int w_
 Sizes of the map area. More...
 
int h_
 
int total_width_
 Sizes of the map including the borders. More...
 
int total_height_
 

Additional Inherited Members

- Public Types inherited from gamemap
enum  { MAX_PLAYERS = 9 }
 Maximum number of players supported. More...
 
using tstarting_positions = t_translation::tstarting_positions
 
- Static Public Attributes inherited from gamemap
static const int default_border = 1
 The default border style for a map. More...
 

Detailed Description

This class adds extra editor-specific functionality to a normal gamemap.

Definition at line 70 of file editor_map.hpp.

Constructor & Destructor Documentation

editor::editor_map::editor_map ( const config terrain_cfg)
explicit

Empty map constructor.

Definition at line 46 of file editor_map.cpp.

Referenced by from_string().

editor::editor_map::editor_map ( const config terrain_cfg,
const std::string data 
)

Create an editor map from a map data string.

Definition at line 52 of file editor_map.cpp.

References sanity_check().

editor::editor_map::editor_map ( const config terrain_cfg,
size_t  width,
size_t  height,
const t_translation::t_terrain filler 
)

Create an editor map with the given dimensions and filler terrain.

Definition at line 72 of file editor_map.cpp.

References sanity_check().

editor::editor_map::editor_map ( const gamemap map)
explicit

Create an editor_map by upgrading an existing gamemap.

The map data is copied. Marked "explicit" to avoid potentially harmful automatic conversions.

Definition at line 80 of file editor_map.cpp.

References sanity_check().

editor::editor_map::~editor_map ( )

editor_map destructor

Definition at line 87 of file editor_map.cpp.

Member Function Documentation

bool editor::editor_map::add_to_selection ( const map_location loc)

Add a location to the selection.

The location should be valid (i.e. on the map)

Returns
true if the selected hexes set was modified

Definition at line 176 of file editor_map.cpp.

References gamemap::on_board_with_border(), and selection_.

Referenced by editor::editor_action_select::perform_without_undo(), and set_selection().

void editor::editor_map::clear_selection ( )
t_translation::t_list editor::editor_map::clone_column ( int  x,
const t_translation::t_terrain filler 
)
protected

Definition at line 294 of file editor_map.cpp.

References gamemap::h(), t_translation::NONE_TERRAIN, and gamemap::tiles_.

Referenced by expand_left(), and expand_right().

bool editor::editor_map::everything_selected ( ) const
Returns
true if the entire map is selected, false otherwise

Definition at line 220 of file editor_map.cpp.

References LOG_ED, selection_, gamemap::total_height(), and gamemap::total_width().

void editor::editor_map::expand_bottom ( int  count,
const t_translation::t_terrain filler 
)
protected
void editor::editor_map::expand_left ( int  count,
const t_translation::t_terrain filler 
)
protected
void editor::editor_map::expand_right ( int  count,
const t_translation::t_terrain filler 
)
protected

Definition at line 308 of file editor_map.cpp.

References clone_column(), gamemap::tiles_, gamemap::total_width_, and gamemap::w_.

Referenced by resize().

void editor::editor_map::expand_top ( int  count,
const t_translation::t_terrain filler 
)
protected
editor_map editor::editor_map::from_string ( const config terrain_cfg,
const std::string data 
)
static

Wrapper around editor_map(cfg, data) that catches possible exceptions and wraps them in a editor_map_load_exception.

Definition at line 59 of file editor_map.cpp.

References e, editor_map(), game::error::message, twml_exception::user_message, and editor::wrap_exc().

Referenced by editor::map_context::load_scenario(), and editor::map_context::map_context().

std::set< map_location > editor::editor_map::get_contiguous_terrain_tiles ( const map_location start) const

Get a contiguous set of tiles having the same terrain as the starting location.

Useful for flood fill or magic wand selection

Returns
a contiguous set of locations that will always contain at least the starting element

Definition at line 126 of file editor_map.cpp.

References get_adjacent_tiles(), gamemap::get_terrain(), i, gamemap::on_board_with_border(), and gui2::terrain.

Referenced by editor::mouse_action_select::affected_hexes(), editor::mouse_action_fill::affected_hexes(), editor::editor_action_fill::perform(), and editor::editor_action_fill::perform_without_undo().

bool editor::editor_map::in_selection ( const map_location loc) const
Returns
true when the location is part of the selection, false otherwise

Definition at line 171 of file editor_map.cpp.

References selection_.

Referenced by editor::editor_action_deselect::extend(), and editor::editor_action_deselect::perform().

void editor::editor_map::invert_selection ( )

Invert the selection, i.e.

select all the map hexes that were not selected.

Definition at line 201 of file editor_map.cpp.

References gamemap::h(), selection_, and gamemap::w().

Referenced by editor::editor_action_select_inverse::perform_without_undo(), and select_all().

gamemap editor::editor_map::mask_to ( const gamemap target) const

A sort-of diff operation returning a mask that, when applied to the current editor_map, will transform it into the target map.

Definition at line 271 of file editor_map.cpp.

References _(), gamemap::border_size(), t_translation::FOGGED, gamemap::get_terrain(), gamemap::h(), mask, gamemap::set_terrain(), gamemap::w(), map_location::x, and map_location::y.

Referenced by editor::editor_action_create_mask::perform_without_undo().

bool editor::editor_map::remove_from_selection ( const map_location loc)

Remove a location to the selection.

The location does not actually have to be selected

Returns
true if the selected hexes set was modified

Definition at line 191 of file editor_map.cpp.

References selection_.

Referenced by editor::editor_action_deselect::perform_without_undo().

void editor::editor_map::resize ( int  width,
int  height,
int  x_offset,
int  y_offset,
const t_translation::t_terrain filler = t_translation::NONE_TERRAIN 
)

Resize the map.

If the filler is NONE, the border terrain will be copied when expanding, otherwise the filler terrain will be inserted there

Definition at line 226 of file editor_map.cpp.

References expand_bottom(), expand_left(), expand_right(), expand_top(), gamemap::h(), sanity_check(), shrink_bottom(), shrink_left(), shrink_right(), shrink_top(), gamemap::starting_positions_, gamemap::w(), t_translation::coordinate::x, and t_translation::coordinate::y.

Referenced by editor::editor_action_resize_map::perform_without_undo().

bool editor::editor_map::same_size_as ( const gamemap other) const

A precondition to several map operations.

Returns
true if this map has the same dimensions as the other map

Definition at line 288 of file editor_map.cpp.

References gamemap::h(), and gamemap::w().

void editor::editor_map::sanity_check ( )

Debugging aid.

Check if the widths and heights correspond to the actual map data sizes.

Definition at line 91 of file editor_map.cpp.

References gamemap::border_size(), ERR_ED, gamemap::h(), gamemap::h_, i, gamemap::on_board_with_border(), selection_, gamemap::tiles_, gamemap::total_height(), gamemap::total_width(), gamemap::w(), and gamemap::w_.

Referenced by editor_map(), and resize().

void editor::editor_map::select_all ( )
const std::set<map_location>& editor::editor_map::selection ( ) const
inline
bool editor::editor_map::set_selection ( const std::set< map_location > &  area)

Select the given area.

Parameters
areato select.

Definition at line 181 of file editor_map.cpp.

References add_to_selection(), and clear_selection().

Referenced by editor::map_context::select_area().

std::set< map_location > editor::editor_map::set_starting_position_labels ( display disp)

Set labels for staring positions in the given display object.

Returns
the locations where the labels were added

Definition at line 149 of file editor_map.cpp.

References c, display::labels(), map_labels::set_label(), gamemap::starting_positions_, and vgettext().

Referenced by editor::map_context::set_starting_position_labels().

void editor::editor_map::shrink_bottom ( int  count)
protected

Definition at line 394 of file editor_map.cpp.

References gamemap::h_, gamemap::tiles_, and gamemap::total_height_.

Referenced by resize().

void editor::editor_map::shrink_left ( int  count)
protected

Definition at line 372 of file editor_map.cpp.

References gamemap::tiles_, gamemap::total_width_, and gamemap::w_.

Referenced by resize().

void editor::editor_map::shrink_right ( int  count)
protected

Definition at line 362 of file editor_map.cpp.

References gamemap::tiles_, gamemap::total_width_, and gamemap::w_.

Referenced by resize().

void editor::editor_map::shrink_top ( int  count)
protected

Definition at line 382 of file editor_map.cpp.

References gamemap::h_, gamemap::tiles_, and gamemap::total_height_.

Referenced by resize().

Member Data Documentation

std::set<map_location> editor::editor_map::selection_
protected

The documentation for this class was generated from the following files: