The Battle for Wesnoth  1.19.7+dev
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
map_location Struct Reference

Encapsulates the map of the game. More...

#include <location.hpp>

Inheritance diagram for map_location:

Public Types

enum class  direction {
  north , north_east , south_east , south ,
  south_west , north_west , indeterminate
}
 Valid directions which can be moved in our hexagonal world. More...
 
enum  RELATIVE_DIR_MODE { DEFAULT , RADIAL_SYMMETRY }
 

Public Member Functions

 map_location ()
 
 map_location (int x, int y)
 
 map_location (int x, int y, wml_loc)
 
 map_location (const config_attribute_value &x, const config_attribute_value &y, wml_loc)
 
 map_location (const config &cfg, const variable_set *variables=nullptr)
 
void write (config &cfg) const
 
bool valid () const
 
bool valid (const int parWidth, const int parHeight) const
 
bool valid (const int parWidth, const int parHeight, const int border) const
 
bool matches_range (const std::string &xloc, const std::string &yloc) const
 
bool operator< (const map_location &a) const
 
bool operator== (const map_location &a) const
 
bool operator!= (const map_location &a) const
 
int do_compare (const map_location &a) const
 three-way comparator More...
 
map_location vector_negation () const
 
map_location vector_sum (const map_location &a) const
 
map_locationvector_sum_assign (const map_location &a)
 
map_locationvector_difference_assign (const map_location &a)
 
map_location get_direction (direction dir, unsigned int n=1u) const
 
map_location get_direction (direction dir, signed int n) const
 
direction get_relative_dir (const map_location &loc, map_location::RELATIVE_DIR_MODE mode) const
 
direction get_relative_dir (const map_location &loc) const
 
cubic_location to_cubic () const
 
map_location rotate_right_around_center (const map_location &center, int k) const
 
int wml_x () const
 
int wml_y () const
 
void set_wml_x (int v)
 
void set_wml_y (int v)
 
void add (int x_diff, int y_diff)
 
map_location plus (int x_diff, int y_diff) const
 

Static Public Member Functions

static std::vector< directionall_directions ()
 
static constexpr direction rotate_direction (direction d, int steps=1)
 Returns the direction one would face having taken steps clockwise around an undefined center. More...
 
static constexpr direction get_opposite_direction (direction d)
 
static direction parse_direction (const std::string &str)
 
static std::vector< directionparse_directions (const std::string &str)
 Parse_directions takes a comma-separated list, and filters out any invalid directions. More...
 
static std::string write_direction (direction dir)
 
static std::string write_translated_direction (direction dir)
 
static const map_locationZERO ()
 
static const map_locationnull_location ()
 
static map_location from_cubic (cubic_location h)
 

Public Attributes

int x
 
int y
 

Friends

std::size_t hash_value (const map_location &a)
 

Detailed Description

Encapsulates the map of the game.

Although the game is hexagonal, the map is stored as a grid. Each type of terrain is represented by a multiletter terrain code.

Todo:
Update for new map-format.

Represents a location on the map.

Definition at line 45 of file location.hpp.

Member Enumeration Documentation

◆ direction

Valid directions which can be moved in our hexagonal world.

Enumerator
north 
north_east 
south_east 
south 
south_west 
north_west 
indeterminate 

Definition at line 47 of file location.hpp.

◆ RELATIVE_DIR_MODE

Enumerator
DEFAULT 
RADIAL_SYMMETRY 

Definition at line 162 of file location.hpp.

Constructor & Destructor Documentation

◆ map_location() [1/5]

map_location::map_location ( )
inline

Definition at line 90 of file location.hpp.

Referenced by from_cubic(), get_direction(), plus(), vector_negation(), and vector_sum().

◆ map_location() [2/5]

map_location::map_location ( int  x,
int  y 
)
inline

Definition at line 91 of file location.hpp.

◆ map_location() [3/5]

map_location::map_location ( int  x,
int  y,
wml_loc   
)
inline

Definition at line 92 of file location.hpp.

◆ map_location() [4/5]

map_location::map_location ( const config_attribute_value x,
const config_attribute_value y,
wml_loc   
)

Definition at line 56 of file location.cpp.

◆ map_location() [5/5]

map_location::map_location ( const config cfg,
const variable_set variables = nullptr 
)

Definition at line 196 of file location.cpp.

References ERR_CF, utils::interpolate_variables_into_string(), utils::stoi(), x, and y.

Member Function Documentation

◆ add()

void map_location::add ( int  x_diff,
int  y_diff 
)
inline

Definition at line 189 of file location.hpp.

References x, and y.

Referenced by editor::editor_map::resize().

◆ all_directions()

auto map_location::all_directions ( )
static

Definition at line 61 of file location.cpp.

References north, north_east, north_west, south, south_east, and south_west.

Referenced by terrain_filter::match_internal().

◆ do_compare()

int map_location::do_compare ( const map_location a) const
inline

◆ from_cubic()

static map_location map_location::from_cubic ( cubic_location  h)
inlinestatic

Definition at line 172 of file location.hpp.

References h, map_location(), x, and y.

Referenced by lua_map_location::intf_get_from_cubic(), and rotate_right_around_center().

◆ get_direction() [1/2]

map_location map_location::get_direction ( direction  dir,
signed int  n 
) const
inline

Definition at line 157 of file location.hpp.

References get_direction(), get_opposite_direction(), and n.

◆ get_direction() [2/2]

map_location map_location::get_direction ( map_location::direction  dir,
unsigned int  n = 1u 
) const

◆ get_opposite_direction()

static constexpr direction map_location::get_opposite_direction ( direction  d)
inlinestaticconstexpr

◆ get_relative_dir() [1/2]

map_location::direction map_location::get_relative_dir ( const map_location loc) const

Definition at line 235 of file location.cpp.

References get_relative_dir(), loc, and RADIAL_SYMMETRY.

◆ get_relative_dir() [2/2]

map_location::direction map_location::get_relative_dir ( const map_location loc,
map_location::RELATIVE_DIR_MODE  mode 
) const

◆ matches_range()

bool map_location::matches_range ( const std::string &  xloc,
const std::string &  yloc 
) const

Definition at line 322 of file location.cpp.

References ERR_CF, i, utils::parse_range(), utils::split(), x, and y.

Referenced by terrain_filter::match_internal().

◆ null_location()

static const map_location& map_location::null_location ( )
inlinestatic

Definition at line 102 of file location.hpp.

Referenced by pathfind::a_star_search(), ai::ai_recall(), ai::ai_recruit(), battle_context_unit_stats::battle_context_unit_stats(), game_state::can_recruit_from(), actions::check_recall_location(), actions::check_recruit_location(), wb::recall::check_validity(), game_display::clear_attack_indicator(), events::mouse_handler_base::clear_drag_from_hex(), actions::shroud_clearer::clear_unit(), display::displayed_unit_hex(), ai::recall_result::do_describe(), ai::recruit_result::do_describe(), ai::synced_command_result::do_execute(), events::menu_handler::do_recruit(), ai::ai_default_rca::move_leader_to_keep_phase::evaluate(), ai::default_recruitment::recruitment::evaluate(), ai::default_recruitment::recruitment::execute(), wb::recall::execute(), ai::default_recruitment::recruitment::execute_recall(), ai::default_recruitment::recruitment::execute_recruit(), unit_creator::find_location(), pathfind::find_routes(), ai::ai_default_rca::get_villages_phase::find_villages(), actions::shroud_clearer::fire_events(), ai::default_recruitment::recruitment::get_appropriate_recall(), tod_manager::get_area_on_hex(), tod_manager::get_current_time(), get_direction(), gamemap_base::get_terrain(), tod_manager::get_time_of_day(), wfl::unit_callable::get_value(), ai::ai_default_rca::get_villages_phase::get_villages(), game_display::highlight_another_reach(), play_controller::init_side_begin(), game_lua_kernel::intf_deselect_hex(), game_lua_kernel::intf_select_unit(), events::mouse_handler::mouse_motion(), actions::move_unit_and_record(), ai::readonly_context_impl::nearest_keep(), actions::place_recruit(), events::menu_handler::recall(), ai::ai_default_rca::get_villages_phase::remove_unit(), REPORT_GENERATOR(), unit_type::resistance_against(), attack_type::specials_context_t::specials_context_t(), ai::readonly_context_impl::suitable_keep(), tod_manager::times(), tod_stats_at(), events::mouse_handler::touch_motion(), unit_display::unit_attack(), unit_display::unit_healing(), game_events::WML_HANDLER_FUNCTION(), and attack_type::specials_context_t::~specials_context_t().

◆ operator!=()

bool map_location::operator!= ( const map_location a) const
inline

Definition at line 123 of file location.hpp.

References operator==().

◆ operator<()

bool map_location::operator< ( const map_location a) const
inline

Definition at line 121 of file location.hpp.

References x, and y.

◆ operator==()

bool map_location::operator== ( const map_location a) const
inline

Definition at line 122 of file location.hpp.

References x, and y.

Referenced by operator!=().

◆ parse_direction()

map_location::direction map_location::parse_direction ( const std::string &  str)
static

◆ parse_directions()

std::vector< map_location::direction > map_location::parse_directions ( const std::string &  str)
static

Parse_directions takes a comma-separated list, and filters out any invalid directions.

Definition at line 138 of file location.cpp.

References i, indeterminate, parse_direction(), and utils::split().

Referenced by unit::ability_active_impl(), unit::ability_affects_adjacent(), terrain_filter::match_internal(), and attack_type::special_active_impl().

◆ plus()

map_location map_location::plus ( int  x_diff,
int  y_diff 
) const
inline

Definition at line 190 of file location.hpp.

References map_location(), x, and y.

Referenced by placing_score().

◆ rotate_direction()

static constexpr direction map_location::rotate_direction ( direction  d,
int  steps = 1 
)
inlinestaticconstexpr

Returns the direction one would face having taken steps clockwise around an undefined center.

Definition at line 60 of file location.hpp.

References d, and indeterminate.

Referenced by BOOST_AUTO_TEST_CASE(), get_opposite_direction(), and parse_direction().

◆ rotate_right_around_center()

map_location map_location::rotate_right_around_center ( const map_location center,
int  k 
) const

◆ set_wml_x()

void map_location::set_wml_x ( int  v)
inline

Definition at line 186 of file location.hpp.

References x.

Referenced by unit::init(), game_lua_kernel::intf_put_unit(), LATTR_SETTER(), and luaW_tolocation().

◆ set_wml_y()

void map_location::set_wml_y ( int  v)
inline

Definition at line 187 of file location.hpp.

References y.

Referenced by unit::init(), game_lua_kernel::intf_put_unit(), LATTR_SETTER(), and luaW_tolocation().

◆ to_cubic()

cubic_location map_location::to_cubic ( ) const
inline

Definition at line 166 of file location.hpp.

References s, x, and y.

Referenced by lua_map_location::intf_get_in_cubic(), and rotate_right_around_center().

◆ valid() [1/3]

bool map_location::valid ( ) const
inline

Definition at line 110 of file location.hpp.

References x, and y.

Referenced by pathfind::a_star_search(), display::add_exclusive_draw(), unit_creator::add_unit(), editor::location_palette::adjust_size(), editor::editor_controller::can_execute_command(), play_controller::hotkey_handler::can_execute_command(), ai::cfun_ai_get_suitable_keep(), actions::check_recall_location(), actions::check_recruit_location(), wb::attack::check_validity(), ai::ai_default_rca::move_to_targets_phase::choose_move(), events::mouse_handler::current_unit_attacks_from(), game_display::display_unit_hex(), ai::recall_result::do_check_before(), ai::recruit_result::do_check_before(), events::menu_handler::do_search(), ai::ai_default_rca::move_leader_to_goals_phase::evaluate(), ai::ai_default_rca::retreat_phase::evaluate(), terrain_filterimpl::filter_special_loc(), unit_creator::find_location(), game_events::wml_menu_item::fire_event(), replay_helper::get_event(), terrain_filter::get_locs_impl(), unit::has_goto(), playsingle_controller::init_gui(), unit_map::insert(), game_lua_kernel::intf_find_vacant_tile(), game_lua_kernel::intf_get_units(), game_lua_kernel::intf_put_unit(), editor::mouse_action::key_event(), ai::readonly_context_impl::leader_can_reach_keep(), events::mouse_handler_base::left_click(), image::load_image_sub_file(), terrain_filter::match_internal(), unit_filter_impl::unit_filter_compound::matches(), events::mouse_handler::mouse_motion(), events::mouse_handler_base::mouse_motion_default(), events::mouse_handler_base::mouse_press(), events::mouse_handler::move_action(), ai::ai_default_rca::move_to_targets_phase::move_group(), gamemap_base::on_board(), terrain_builder::parse_config(), ai::readonly_context_impl::power_projection(), gui2::dialogs::terrain_layers::pre_show(), display::recalculate_minimap(), display::remove_exclusive_draw(), REPORT_GENERATOR(), events::mouse_handler::right_click_show_menu(), terrain_builder::rule_matches(), events::mouse_handler::select_hex(), game_display::select_hex(), wb::highlighter::set_mouseover_hex(), gamemap_base::set_special_location(), ai::formula_ai::shortest_path_calculator(), events::mouse_handler::show_reach_for_unit(), image::simplify_type(), SYNCED_COMMAND_HANDLER_FUNCTION(), ai::move_result::test_route(), tod_stats_at(), events::mouse_handler::touch_action(), and events::mouse_handler::touch_motion().

◆ valid() [2/3]

bool map_location::valid ( const int  parWidth,
const int  parHeight 
) const
inline

Definition at line 112 of file location.hpp.

References x, and y.

◆ valid() [3/3]

bool map_location::valid ( const int  parWidth,
const int  parHeight,
const int  border 
) const
inline

Definition at line 115 of file location.hpp.

References border, x, and y.

◆ vector_difference_assign()

map_location& map_location::vector_difference_assign ( const map_location a)
inline

◆ vector_negation()

map_location map_location::vector_negation ( ) const
inline

◆ vector_sum()

map_location map_location::vector_sum ( const map_location a) const
inline

◆ vector_sum_assign()

map_location& map_location::vector_sum_assign ( const map_location a)
inline

◆ wml_x()

int map_location::wml_x ( ) const
inline

◆ wml_y()

int map_location::wml_y ( ) const
inline

◆ write()

void map_location::write ( config cfg) const

◆ write_direction()

std::string map_location::write_direction ( map_location::direction  dir)
static

◆ write_translated_direction()

std::string map_location::write_translated_direction ( map_location::direction  dir)
static

Definition at line 175 of file location.cpp.

References _(), north, north_east, north_west, south, south_east, and south_west.

Referenced by editor::editor_controller::show_menu().

◆ ZERO()

static const map_location& map_location::ZERO ( )
inlinestatic

Friends And Related Function Documentation

◆ hash_value

std::size_t hash_value ( const map_location a)
friend

Definition at line 73 of file location.cpp.

Member Data Documentation

◆ x

int map_location::x

Definition at line 193 of file location.hpp.

Referenced by add(), terrain_builder::add_constraints(), editor::brush::brush(), editor::map_fragment::center_of_mass(), actions::shroud_clearer::clear_loc(), passage_path_calculator::cost(), default_map_generator_job::default_generate_map(), distance_between(), do_compare(), events::menu_handler::do_search(), gui::button::draw_contents(), gui::tristate_button::draw_contents(), gui::textbox::draw_contents(), display::draw_hex(), display::draw_label(), display::draw_report(), gui2::viewport_implementation::find_at(), pathfind::find_routes(), from_cubic(), default_map_generator_job::generate_river_internal(), get_adjacent_tiles(), get_direction(), display::get_location(), get_noise(), pathfind::full_cost_map::get_pair_at(), get_relative_dir(), gamemap_base::get_terrain(), gui::scrollbar::grip_area(), gui::textbox::handle_event(), gui2::horizontal_scrollbar::in_orthogonal_range(), playsingle_controller::init_gui(), legacy_negation(), legacy_sum_assign(), image::load_image_sub_file(), theme::object::location(), map_location(), editor::editor_map::mask_to(), matches_range(), display::minimap_location_on(), theme::object::modify_location(), gui2::event::mouse_motion::mouse_hover(), unit::move_interrupted(), gui2::horizontal_scrollbar::on_bar(), gui2::slider::on_bar(), gui2::vertical_scrollbar::on_bar(), cave_map_generator::on_board(), gamemap_base::on_board(), gamemap_base::on_board_with_border(), terrain_builder::tilemap::on_map(), std::hash< image::locator >::operator()(), display::rect_of_hexes::iterator::operator++(), operator<(), operator==(), terrain_builder::tilemap::operator[](), gamemap::operator[](), output_map(), gamemap_base::overlay(), terrain_builder::parse_config(), cave_map_generator::cave_map_generator_job::place_castle(), cave_map_generator::cave_map_generator_job::place_chamber(), plus(), gui2::dialogs::terrain_layers::pre_show(), image::prep_minimap_for_rendering(), t_translation::read_game_map(), terrain_builder::rotate(), terrain_builder::rotate_rule(), terrain_builder::rule_matches(), mapgen_gamemap::set_terrain(), cave_map_generator::cave_map_generator_job::set_terrain(), set_wml_x(), gamemap_base::special_location(), tiles_adjacent(), to_cubic(), display_context::unit_can_move(), valid(), vector_negation(), vector_sum_assign(), wml_x(), write(), and t_translation::write_game_map().

◆ y

int map_location::y

Definition at line 193 of file location.hpp.

Referenced by add(), terrain_builder::add_constraints(), editor::brush::brush(), editor::map_fragment::center_of_mass(), actions::shroud_clearer::clear_loc(), passage_path_calculator::cost(), default_map_generator_job::default_generate_map(), distance_between(), do_compare(), events::menu_handler::do_search(), gui::button::draw_contents(), gui::tristate_button::draw_contents(), gui::textbox::draw_contents(), display::draw_hex(), display::draw_label(), display::draw_report(), gui2::viewport_implementation::find_at(), pathfind::find_routes(), from_cubic(), default_map_generator_job::generate_river_internal(), get_adjacent_tiles(), get_direction(), display::get_location(), get_noise(), pathfind::full_cost_map::get_pair_at(), get_relative_dir(), gamemap_base::get_terrain(), gui::scrollbar::grip_area(), gui::textbox::handle_event(), gui2::vertical_scrollbar::in_orthogonal_range(), playsingle_controller::init_gui(), legacy_negation(), legacy_sum_assign(), image::load_image_sub_file(), theme::object::location(), map_location(), editor::editor_map::mask_to(), matches_range(), display::minimap_location_on(), theme::object::modify_location(), gui2::event::mouse_motion::mouse_hover(), unit::move_interrupted(), gui2::horizontal_scrollbar::on_bar(), gui2::slider::on_bar(), gui2::vertical_scrollbar::on_bar(), cave_map_generator::on_board(), gamemap_base::on_board(), gamemap_base::on_board_with_border(), terrain_builder::tilemap::on_map(), std::hash< image::locator >::operator()(), display::rect_of_hexes::iterator::operator++(), operator<(), operator==(), terrain_builder::tilemap::operator[](), gamemap::operator[](), output_map(), gamemap_base::overlay(), terrain_builder::parse_config(), cave_map_generator::cave_map_generator_job::place_castle(), cave_map_generator::cave_map_generator_job::place_chamber(), plus(), gui2::dialogs::terrain_layers::pre_show(), image::prep_minimap_for_rendering(), t_translation::read_game_map(), terrain_builder::rotate(), terrain_builder::rotate_rule(), terrain_builder::rule_matches(), mapgen_gamemap::set_terrain(), cave_map_generator::cave_map_generator_job::set_terrain(), set_wml_y(), gamemap_base::special_location(), tiles_adjacent(), to_cubic(), display_context::unit_can_move(), valid(), vector_negation(), vector_sum_assign(), wml_y(), write(), and t_translation::write_game_map().


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