1 #ifndef MAP_ROUTING_H
2 #define MAP_ROUTING_H
3 
4 #include "core/buffer.h"
5 
6 typedef enum {
7     ROUTED_BUILDING_ROAD = 0,
8     ROUTED_BUILDING_WALL = 1,
9     ROUTED_BUILDING_AQUEDUCT = 2,
10     ROUTED_BUILDING_AQUEDUCT_WITHOUT_GRAPHIC = 4,
11 } routed_building_type;
12 
13 void map_routing_calculate_distances(int x, int y);
14 void map_routing_calculate_distances_water_boat(int x, int y);
15 void map_routing_calculate_distances_water_flotsam(int x, int y);
16 
17 int map_routing_calculate_distances_for_building(routed_building_type type, int x, int y);
18 
19 void map_routing_delete_first_wall_or_aqueduct(int x, int y);
20 
21 int map_routing_distance(int grid_offset);
22 
23 int map_routing_citizen_can_travel_over_land(int src_x, int src_y, int dst_x, int dst_y);
24 int map_routing_citizen_can_travel_over_road_garden(int src_x, int src_y, int dst_x, int dst_y);
25 int map_routing_can_travel_over_walls(int src_x, int src_y, int dst_x, int dst_y);
26 
27 int map_routing_noncitizen_can_travel_over_land(
28     int src_x, int src_y, int dst_x, int dst_y, int only_through_building_id, int max_tiles);
29 int map_routing_noncitizen_can_travel_through_everything(int src_x, int src_y, int dst_x, int dst_y);
30 
31 void map_routing_block(int x, int y, int size);
32 
33 void map_routing_save_state(buffer *buf);
34 
35 void map_routing_load_state(buffer *buf);
36 
37 #endif // MAP_ROUTING_H
38