Encapsulates the map of the game. More...
#include <location.hpp>
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_location & | vector_sum_assign (const map_location &a) |
map_location & | vector_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 ¢er, 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< direction > | all_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< direction > | parse_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_location & | ZERO () |
static const map_location & | null_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) |
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.
Represents a location on the map.
Definition at line 45 of file location.hpp.
|
strong |
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.
Enumerator | |
---|---|
DEFAULT | |
RADIAL_SYMMETRY |
Definition at line 162 of file location.hpp.
|
inline |
Definition at line 90 of file location.hpp.
Referenced by from_cubic(), get_direction(), plus(), vector_negation(), and vector_sum().
|
inline |
Definition at line 91 of file location.hpp.
|
inline |
Definition at line 92 of file location.hpp.
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::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.
|
inline |
Definition at line 189 of file location.hpp.
Referenced by editor::editor_map::resize().
|
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().
|
inline |
three-way comparator
Definition at line 126 of file location.hpp.
Referenced by wfl::attack_callable::do_compare(), wfl::move_callable::do_compare(), wfl::move_partial_callable::do_compare(), wfl::terrain_callable::do_compare(), and wfl::location_callable::do_compare().
|
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().
|
inline |
Definition at line 157 of file location.hpp.
References get_direction(), get_opposite_direction(), and n.
map_location map_location::get_direction | ( | map_location::direction | dir, |
unsigned int | n = 1u |
||
) | const |
Definition at line 364 of file location.cpp.
References indeterminate, map_location(), n, north, null_location(), south, x, and y.
Referenced by wfl::builtins::DEFINE_WFL_FUNCTION(), get_direction(), get_tile_ring(), lua_map_location::intf_get_direction(), is_shrouded(), MLFixture::MLFixture(), reality_check_get_direction_helper(), terrain_label::recalculate(), unit_drawer::redraw_unit(), editor::map_fragment::rotate_60_ccw(), editor::map_fragment::rotate_60_cw(), and ai::default_recruitment::recruitment::show_important_hexes().
|
inlinestaticconstexpr |
Definition at line 75 of file location.hpp.
References d, and rotate_direction().
Referenced by BOOST_AUTO_TEST_CASE(), characterization_distance_direction(), get_direction(), mirror_walk(), and parse_direction().
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.
map_location::direction map_location::get_relative_dir | ( | const map_location & | loc, |
map_location::RELATIVE_DIR_MODE | mode | ||
) | const |
Definition at line 240 of file location.cpp.
References DEFAULT, indeterminate, is_vertically_higher_than(), loc, north, north_east, north_west, rotate_right_around_center(), south, south_east, south_west, x, and y.
Referenced by game_display::attack_indicator_direction(), characterization_distance_direction(), events::mouse_handler::current_unit_attacks_from(), wfl::builtins::DEFINE_WFL_FUNCTION(), get_relative_dir(), lua_map_location::intf_get_relative_dir(), ai::formula_ai::shortest_path_calculator(), attack_type::special_active_impl(), unit_display::unit_attack(), unit_display::unit_draw_weapon(), and unit_display::unit_recruited().
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().
|
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().
|
inline |
Definition at line 123 of file location.hpp.
References operator==().
|
inline |
Definition at line 121 of file location.hpp.
|
inline |
|
static |
Definition at line 79 of file location.cpp.
References get_opposite_direction(), indeterminate, north, north_east, north_west, rotate_direction(), south, south_east, south_west, editor::start(), and write_direction().
Referenced by wfl::builtins::DEFINE_WFL_FUNCTION(), get_second(), unit::init(), lua_map_location::intf_get_direction(), parse_directions(), unit_animation::unit_animation(), UNIT_SETTER(), and game_events::WML_HANDLER_FUNCTION().
|
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().
|
inline |
Definition at line 190 of file location.hpp.
References map_location(), x, and y.
Referenced by placing_score().
|
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().
map_location map_location::rotate_right_around_center | ( | const map_location & | center, |
int | k | ||
) | const |
Definition at line 301 of file location.cpp.
References from_cubic(), i, cubic_location::q, sgn, and to_cubic().
Referenced by wfl::builtins::DEFINE_WFL_FUNCTION(), get_relative_dir(), lua_map_location::intf_rotate_right_around_center(), and rotate_around_centers().
|
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().
|
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().
|
inline |
Definition at line 166 of file location.hpp.
Referenced by lua_map_location::intf_get_in_cubic(), and rotate_right_around_center().
|
inline |
Definition at line 110 of file location.hpp.
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().
|
inline |
Definition at line 112 of file location.hpp.
|
inline |
Definition at line 115 of file location.hpp.
|
inline |
Definition at line 150 of file location.hpp.
References vector_negation(), and vector_sum_assign().
Referenced by characterization_distance_direction(), lua_map_location::intf_vector_diff(), and vector_difference().
|
inline |
Definition at line 132 of file location.hpp.
References map_location(), x, and y.
Referenced by characterization_distance_direction(), lua_map_location::intf_vector_negation(), MLFixture::MLFixture(), and vector_difference_assign().
|
inline |
Definition at line 137 of file location.hpp.
References map_location().
Referenced by characterization_distance_direction(), MLFixture::MLFixture(), and reality_check_get_direction_helper().
|
inline |
Definition at line 142 of file location.hpp.
Referenced by editor::map_fragment::center_of_mass(), lua_map_location::intf_vector_sum(), and vector_difference_assign().
|
inline |
Definition at line 183 of file location.hpp.
References x.
Referenced by scoped_xy_unit::activate(), ai::cfun_ai_get_suitable_keep(), team::clear_fog(), team::clear_shroud(), lua_pathfind_cost_calculator::cost(), ai::synced_command_result::do_execute(), events::console_handler::do_terrain(), events::console_handler::do_unit(), game_events::wmi_manager::fire_item(), team::fogged(), game_events::wmi_manager::get_items(), wfl::terrain_callable::get_value(), wfl::location_callable::get_value(), wfl::unit_callable::get_value(), impl_terrainmap_iter(), game_lua_kernel::intf_find_cost_map(), game_lua_kernel::intf_find_vacant_tile(), game_lua_kernel::intf_get_mouseover_tile(), game_lua_kernel::intf_get_selected_tile(), intf_make_shroud_bitmap(), game_lua_kernel::intf_set_floating_label(), is_vertically_higher_than(), events::menu_handler::kill_unit(), luaW_pushlocation(), game_lua_kernel::mouse_button_callback(), game_lua_kernel::mouse_over_hex_callback(), game_events::wml_event_pump::operator()(), operator<<(), gamemap_base::overlay(), team::place_shroud(), game_lua_kernel::run_filter(), game_lua_kernel::select_hex_callback(), wfl::location_callable::serialize_to_string(), team::shrouded(), actions::teleport_unit_and_record(), wb::attack::to_config(), wb::move::to_config(), wb::recall::to_config(), wb::recruit::to_config(), wb::suppose_dead::to_config(), UNIT_GETTER(), actions::undo::move_action::write(), and unit::write().
|
inline |
Definition at line 184 of file location.hpp.
References y.
Referenced by scoped_xy_unit::activate(), ai::cfun_ai_get_suitable_keep(), team::clear_fog(), team::clear_shroud(), lua_pathfind_cost_calculator::cost(), ai::synced_command_result::do_execute(), events::console_handler::do_terrain(), events::console_handler::do_unit(), game_events::wmi_manager::fire_item(), team::fogged(), game_events::wmi_manager::get_items(), wfl::terrain_callable::get_value(), wfl::location_callable::get_value(), wfl::unit_callable::get_value(), impl_terrainmap_iter(), game_lua_kernel::intf_find_cost_map(), game_lua_kernel::intf_find_vacant_tile(), game_lua_kernel::intf_get_mouseover_tile(), game_lua_kernel::intf_get_selected_tile(), intf_make_shroud_bitmap(), game_lua_kernel::intf_set_floating_label(), is_vertically_higher_than(), events::menu_handler::kill_unit(), luaW_pushlocation(), game_lua_kernel::mouse_button_callback(), game_lua_kernel::mouse_over_hex_callback(), game_events::wml_event_pump::operator()(), operator<<(), gamemap_base::overlay(), team::place_shroud(), game_lua_kernel::run_filter(), game_lua_kernel::select_hex_callback(), wfl::location_callable::serialize_to_string(), team::shrouded(), actions::teleport_unit_and_record(), wb::attack::to_config(), wb::move::to_config(), wb::recall::to_config(), wb::recruit::to_config(), wb::suppose_dead::to_config(), UNIT_GETTER(), actions::undo::move_action::write(), and unit::write().
void map_location::write | ( | config & | cfg | ) | const |
Definition at line 225 of file location.cpp.
Referenced by replay::add_rename(), replay::add_unit_checksum(), replay_helper::get_attack(), replay_helper::get_event(), replay_helper::get_recall(), replay_helper::get_recruit(), editor::map_context::to_config(), UNIT_GETTER(), actions::undo::recall_action::write(), actions::undo::recruit_action::write(), display::write(), team::write(), and terrain_label::write().
|
static |
Definition at line 154 of file location.cpp.
References north, north_east, north_west, south, south_east, and south_west.
Referenced by game_display::attack_indicator_direction(), characterization_distance_direction(), wfl::builtins::DEFINE_WFL_FUNCTION(), wb::attack::draw_hex(), wfl::unit_callable::get_value(), lua_map_location::intf_get_relative_dir(), operator<<(), parse_direction(), editor::map_context::to_config(), UNIT_GETTER(), arrow::update_symbols(), game_events::WML_HANDLER_FUNCTION(), actions::undo::move_action::write(), and unit::write().
|
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().
|
inlinestatic |
Definition at line 96 of file location.hpp.
Referenced by ai::default_ai_context_impl::find_targets(), MLFixture::MLFixture(), editor::map_fragment::rotate_60_ccw(), editor::map_fragment::rotate_60_cw(), halo::halo_impl::effect::set_location(), and halo::halo_impl::effect::update().
|
friend |
Definition at line 73 of file location.cpp.
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().
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().