26#define SINGLE_MOVE (terrain_control.move_fragments)
27#define MOVE_COST_IGTER (terrain_control.igter_cost)
29#define MAX_MOVE_FRAGS 65535
69 const struct tile *ptile,
73 const struct tile *ptile,
77 const struct tile *ptile);
89 const struct tile *ptile)
97 const struct tile *src_tile,
101 const struct tile *ptile);
104 const struct tile *ptile);
113 const struct tile *ptile);
116 const struct tile *src_tile,
121 const struct tile *ptile,
127 const struct tile *ptile,
134 const struct tile *src_tile,
143 const struct tile *src_tile,
163#define MAP_TILE_CONN_TO_BY(_map_, _tile_, _piter_, _found_, _conn_) {\
164 struct dbv tile_processed; \
165 struct tile_list *process_queue = tile_list_new(); \
166 bool found = FALSE; \
168 dbv_init(&tile_processed, map_num_tiles()); \
170 dbv_set(&tile_processed, tile_index(_tile_)); \
171 adjc_iterate(_map_, _tile_, _piter_) { \
172 if (dbv_isset(&tile_processed, tile_index(_piter_))) { \
174 } else if (_found_) { \
178 } else if (_conn_) { \
179 tile_list_append(process_queue, _piter_); \
181 dbv_set(&tile_processed, tile_index(_piter_)); \
183 } adjc_iterate_end; \
189 if (0 == tile_list_size(process_queue)) { \
194 _tile_ = tile_list_front(process_queue); \
195 tile_list_pop_front(process_queue); \
199 dbv_free(&tile_processed); \
200 tile_list_destroy(process_queue); \
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit * punit
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit int const struct action *paction struct unit struct city * pcity
const char * move_points_text(int mp, bool reduce)
bool unit_can_move_to_tile(const struct civ_map *nmap, const struct unit *punit, const struct tile *ptile, bool igzoc, bool enter_transport, bool enter_enemy_city)
const char * move_points_text_full(int mp, bool reduce, const char *prefix, const char *none, bool align)
bool can_exist_at_tile(const struct civ_map *nmap, const struct unit_type *utype, const struct tile *ptile)
enum unit_move_result unit_move_to_tile_test(const struct civ_map *nmap, const struct unit *punit, enum unit_activity activity, const struct tile *src_tile, const struct tile *dst_tile, bool igzoc, bool enter_transport, struct unit *embark_to, bool enter_enemy_city)
bool can_unit_exist_at_tile(const struct civ_map *nmap, const struct unit *punit, const struct tile *ptile)
bool is_native_tile(const struct unit_type *punittype, const struct tile *ptile)
bool can_step_taken_wrt_to_zoc(const struct unit_type *punittype, const struct player *unit_owner, const struct tile *src_tile, const struct tile *dst_tile, const struct civ_map *zmap)
bool could_exist_in_city(const struct civ_map *nmap, const struct player *pov_player, const struct unit_type *utype, const struct city *pcity)
int utype_unknown_move_cost(const struct unit_type *utype)
bool unit_can_load(const struct unit *punit)
bool can_unit_transport(const struct unit *transporter, const struct unit *transported)
int unit_move_rate(const struct unit *punit)
bool unit_could_load_at(const struct unit *punit, const struct tile *ptile)
bool can_attack_non_native_hard_reqs(const struct unit_type *utype)
static bool is_native_tile_to_class(const struct unit_class *punitclass, const struct tile *ptile)
bool can_attack_from_non_native(const struct unit_type *utype)
@ MR_DESTINATION_OCCUPIED_BY_NON_ALLIED_UNIT
@ MR_DESTINATION_OCCUPIED_BY_NON_ALLIED_CITY
@ MR_NO_TRANSPORTER_CAPACITY
bool unit_can_teleport_to_tile(const struct civ_map *nmap, const struct unit *punit, const struct tile *ptile, bool enter_transport, bool enter_enemy_city)
enum unit_move_result unit_teleport_to_tile_test(const struct civ_map *nmap, const struct unit *punit, enum unit_activity activity, const struct tile *src_tile, const struct tile *dst_tile, bool enter_transport, struct unit *embark_to, bool enter_enemy_city)
bool unit_can_defend_here(const struct civ_map *nmap, const struct unit *punit)
bool is_native_move(const struct civ_map *nmap, const struct unit_class *punitclass, const struct tile *src_tile, const struct tile *dst_tile)
bool may_be_city_channel_tile(const struct civ_map *nmap, const struct unit_class *punitclass, const struct tile *ptile, const struct player *pov_player)
bool is_native_to_class(const struct unit_class *punitclass, const struct terrain *pterrain, const bv_extras *extras)
int utype_move_rate(const struct unit_type *utype, const struct tile *ptile, const struct player *pplayer, int veteran_level, int hitpoints)
bool is_city_channel_tile(const struct civ_map *nmap, const struct unit_class *punitclass, const struct tile *ptile, const struct tile *pexclude)
bool can_unit_survive_at_tile(const struct civ_map *nmap, const struct unit *punit, const struct tile *ptile)
bool is_native_near_tile(const struct civ_map *nmap, const struct unit_class *uclass, const struct tile *ptile)
bool can_unit_type_transport(const struct unit_type *transporter, const struct unit_class *transported)
void init_move_fragments(void)
bool can_attack_non_native(const struct unit_type *utype)
#define tile_terrain(_tile)
static const bv_extras * tile_extras(const struct tile *ptile)