The Battle for Wesnoth  1.15.2+dev
Classes | Typedefs | Functions
location.hpp File Reference
#include <array>
#include <cmath>
#include <cstdlib>
#include <set>
#include <string>
#include <tuple>
#include <vector>
#include <algorithm>
#include <utility>
Include dependency graph for location.hpp:

Go to the source code of this file.

Classes

struct  wml_loc
 
struct  map_location
 Encapsulates the map of the game. More...
 
struct  std::hash< map_location >
 

Typedefs

using adjacent_loc_array_t = std::array< map_location, 6 >
 

Functions

bool tiles_adjacent (const map_location &a, const map_location &b)
 Function which tells if two locations are adjacent. More...
 
void get_adjacent_tiles (const map_location &a, map_location *res)
 Function which, given a location, will place all adjacent locations in res. More...
 
std::size_t distance_between (const map_location &a, const map_location &b)
 Function which gives the number of hexes between two tiles (i.e. More...
 
void write_location_range (const std::set< map_location > &locs, config &cfg)
 Write a set of locations into a config using ranges, adding keys x=x1,..,xn and y=y1a-y1b,..,yna-ynb. More...
 
void read_locations (const config &cfg, std::vector< map_location > &locs)
 Parse x,y keys of a config into a vector of locations. More...
 
void write_locations (const std::vector< map_location > &locs, config &cfg)
 Write a vector of locations into a config adding keys x=x1,x2,..,xn and y=y1,y2,..,yn. More...
 
std::ostream & operator<< (std::ostream &s, const map_location &l)
 Dumps a position on a stream, for debug purposes. More...
 
std::ostream & operator<< (std::ostream &s, const std::vector< map_location > &v)
 Dumps a vector of positions on a stream, for debug purposes. More...
 

Typedef Documentation

◆ adjacent_loc_array_t

using adjacent_loc_array_t = std::array<map_location, 6>

Definition at line 170 of file location.hpp.

Function Documentation

◆ distance_between()

std::size_t distance_between ( const map_location a,
const map_location b 
)

◆ get_adjacent_tiles()

void get_adjacent_tiles ( const map_location a,
map_location res 
)

Function which, given a location, will place all adjacent locations in res.

res must point to an array of 6 location objects.

Definition at line 474 of file location.cpp.

References map_location::x, and map_location::y.

Referenced by pathfind::a_star_search(), unit::ability_active(), ai::attack_analysis::analyze(), ai::ai_default_rca::aspect_attacks_base::analyze_targets(), backstab_check(), cave_map_generator::cave_map_generator_job::build_chamber(), actions::shroud_clearer::clear_dest(), actions::shroud_clearer::clear_loc(), wfl::attack_map_callable::collect_possible_attacks(), ai::default_ai_context_impl::count_free_hexes_in_castle(), events::mouse_handler::current_unit_attacks_from(), default_map_generator_job::default_generate_map(), wfl::gamestate::DEFINE_WFL_FUNCTION(), wfl::builtins::DEFINE_WFL_FUNCTION(), ai::ai_default_rca::aspect_attacks_base::do_attack_analysis(), ai::ai_default_rca::move_to_targets_phase::enemies_along_path(), pathfind::enemy_zoc(), ai::ai_default_rca::retreat_phase::evaluate(), pathfind::find_routes(), ai::default_ai_context_impl::find_targets(), pathfind::find_vacant_tile(), unit_filter::first_match_on_map(), flood_name(), default_map_generator_job::generate_river_internal(), ai::keeps_cache::get(), unit::get_abilities(), unit::get_ability_bool(), events::mouse_handler::get_adj_enemies(), editor::editor_map::get_contiguous_terrain_tiles(), display::get_fog_shroud_images(), tod_manager::get_illuminated_time_of_day(), ai::formula_ai::get_keeps(), display::get_terrain_images(), get_tiles_radius(), lua_map_location::intf_get_adjacent_tiles(), terrain_filter::match_internal(), editor::mouse_action_item::move(), editor::mouse_action_unit::move(), ai::ai_default_rca::move_to_targets_phase::move_group(), cave_map_generator::cave_map_generator_job::place_castle(), place_village(), ai::readonly_context_impl::power_projection(), ai::formula_ai::shortest_path_calculator(), events::mouse_handler::show_attack_options(), attack_type::special_active(), display_context::unit_can_move(), unit_display::unit_mover::wait_for_anims(), and display_context::would_be_discovered().

◆ operator<<() [1/2]

std::ostream& operator<< ( std::ostream &  s,
const map_location l 
)

Dumps a position on a stream, for debug purposes.

Definition at line 36 of file location.cpp.

References s, map_location::wml_x(), and map_location::wml_y().

◆ operator<<() [2/2]

std::ostream& operator<< ( std::ostream &  s,
const std::vector< map_location > &  v 
)

Dumps a vector of positions on a stream, for debug purposes.

Definition at line 40 of file location.cpp.

References i, and s.

◆ read_locations()

void read_locations ( const config cfg,
std::vector< map_location > &  locs 
)

Parse x,y keys of a config into a vector of locations.

Throws bad_lexical_cast if it fails to parse.

Definition at line 442 of file location.cpp.

References read_locations_helper(), and utils::split().

Referenced by fix_rename_command(), actions::shroud_clearing_action::shroud_clearing_action(), soundsource::sourcespec::sourcespec(), and SYNCED_COMMAND_HANDLER_FUNCTION().

◆ tiles_adjacent()

bool tiles_adjacent ( const map_location a,
const map_location b 
)

◆ write_location_range()

void write_location_range ( const std::set< map_location > &  locs,
config cfg 
)

Write a set of locations into a config using ranges, adding keys x=x1,..,xn and y=y1a-y1b,..,yna-ynb.

Definition at line 398 of file location.cpp.

References i, map_location::map_location(), map_location::x, and map_location::y.

Referenced by tod_manager::to_config(), and team::write().

◆ write_locations()

void write_locations ( const std::vector< map_location > &  locs,
config cfg 
)

Write a vector of locations into a config adding keys x=x1,x2,..,xn and y=y1,y2,..,yn.

Definition at line 454 of file location.cpp.

References i, map_location::x, and map_location::y.

Referenced by replay_helper::get_movement(), actions::shroud_clearing_action::write(), and soundsource::positional_source::write_config().