244 #define PF_IMPOSSIBLE_MC -1
250 #define PF_TURN_FACTOR 65536
366 const struct tile *to_tile,
401 const struct tile *to_tile,
446 const struct tile *to_tile,
int from_cost,
int from_extra,
447 int *to_cost,
int *to_extra,
496 const struct unit *punit);
498 const struct unit *punit,
509 #define pf_map_tiles_iterate(ARG_pfm, NAME_tile, COND_from_start) \
510 if (COND_from_start || pf_map_iterate((ARG_pfm))) { \
511 struct pf_map *_MY_pf_map_ = (ARG_pfm); \
512 struct tile *NAME_tile; \
514 NAME_tile = pf_map_iter(_MY_pf_map_);
516 #define pf_map_tiles_iterate_end \
518 while (pf_map_iterate(_MY_pf_map_)) \
532 #define pf_map_move_costs_iterate(ARG_pfm, NAME_tile, NAME_cost, \
534 if (COND_from_start || pf_map_iterate((ARG_pfm))) { \
535 struct pf_map *_MY_pf_map_ = (ARG_pfm); \
536 struct tile *NAME_tile; \
539 NAME_tile = pf_map_iter(_MY_pf_map_); \
540 NAME_cost = pf_map_iter_move_cost(_MY_pf_map_);
542 #define pf_map_move_costs_iterate_end \
544 while (pf_map_iterate(_MY_pf_map_)) \
557 #define pf_map_positions_iterate(ARG_pfm, NAME_pos, COND_from_start) \
558 if (COND_from_start || pf_map_iterate((ARG_pfm))) { \
559 struct pf_map *_MY_pf_map_ = (ARG_pfm); \
560 struct pf_position NAME_pos; \
562 pf_map_iter_position(_MY_pf_map_, &NAME_pos);
564 #define pf_map_positions_iterate_end \
566 while (pf_map_iterate(_MY_pf_map_)) \
bool advance(struct tile *ptile)
Remove the part of a path leading up to a given tile.
pf_position & operator[](int i)
std::vector< pf_position > positions
PFPath(const PFPath &obj)=default
PFPath & operator=(PFPath &&other)=default
PFPath(PFPath &&obj)=default
bool pf_reverse_map_unit_position(struct pf_reverse_map *pfrm, const struct unit *punit, struct pf_position *pos)
Fill the position.
bool pf_map_position(struct pf_map *pfm, struct tile *ptile, struct pf_position *pos) fc__warn_unused_result
Get info about position at ptile and put it in pos.
PFPath pf_map_path(struct pf_map *pfm, struct tile *ptile) fc__warn_unused_result
CHECK DOCS AFTER FULL CONVERSTION OF pf_path to class PFPath Tries to find the best path in the given...
const struct pf_parameter * pf_map_parameter(const struct pf_map *pfm)
Return the pf_parameter for given pf_map.
bool pf_map_iterate(struct pf_map *pfm)
Iterates the path-finding algorithm one step further, to the next nearest position.
void pf_map_iter_position(struct pf_map *pfm, struct pf_position *pos)
Read all info about the current position into pos.
int pf_map_iter_move_cost(struct pf_map *pfm)
Return the move cost at the current position.
PFPath pf_map_iter_path(struct pf_map *pfm) fc__warn_unused_result
Return the path to our current position.This is equivalent to pf_map_path(pfm, pf_map_iter(pfm)).
QDebug & operator<<(QDebug &logger, const PFPath &path)
Debug a path.
void pf_reverse_map_destroy(struct pf_reverse_map *prfm)
'pf_reverse_map' destructor.
struct pf_map * pf_map_new(const struct pf_parameter *parameter) fc__warn_unused_result
Factory function to create a new map according to the parameter.
int pf_reverse_map_unit_move_cost(struct pf_reverse_map *pfrm, const struct unit *punit)
Get the move costs that a unit needs to reach the start tile.
struct pf_reverse_map * pf_reverse_map_new_for_city(const struct city *pcity, const struct player *attacker, int max_turns, bool omniscient, const struct civ_map *map) fc__warn_unused_result
'pf_reverse_map' constructor for city.
void pf_map_destroy(struct pf_map *pfm)
After usage the map must be destroyed.
struct tile * pf_map_iter(struct pf_map *pfm)
Return the current tile.
struct pf_reverse_map * pf_reverse_map_new(const struct player *pplayer, struct tile *start_tile, int max_turns, bool omniscient, const struct civ_map *map) fc__warn_unused_result
'pf_reverse_map' constructor.
int pf_map_move_cost(struct pf_map *pfm, struct tile *ptile)
Tries to find the minimal move cost to reach ptile.
const struct unit_type * transported_by_initially
enum pf_action(* get_action)(const struct tile *ptile, enum known_type known, const struct pf_parameter *param)
enum pf_move_scope(* get_move_scope)(const struct tile *ptile, bool *can_disembark, enum pf_move_scope previous_scope, const struct pf_parameter *param)
const struct civ_map * map
enum tile_behavior(* get_TB)(const struct tile *ptile, enum known_type known, const struct pf_parameter *param)
int(* get_EC)(const struct tile *ptile, enum known_type known, const struct pf_parameter *param)
enum pf_action_account actions
const struct player * owner
bool(* is_pos_dangerous)(const struct tile *ptile, enum known_type, const struct pf_parameter *param)
int(* get_moves_left_req)(const struct tile *ptile, enum known_type, const struct pf_parameter *param)
bool(* get_zoc)(const struct player *pplayer, const struct tile *ptile, const struct civ_map *zmap)
int(* get_MC)(const struct tile *from_tile, enum pf_move_scope src_move_scope, const struct tile *to_tile, enum pf_move_scope dst_move_scope, const struct pf_parameter *param)
int(* get_costs)(const struct tile *from_tile, enum direction8 dir, const struct tile *to_tile, int from_cost, int from_extra, int *to_cost, int *to_extra, const struct pf_parameter *param)
const struct unit_type * utype
bool(* is_action_possible)(const struct tile *from_tile, enum pf_move_scope src_move_scope, const struct tile *to_tile, enum pf_action action, const struct pf_parameter *param)
bv_unit_types cargo_types
enum direction8 dir_to_here
enum direction8 dir_to_next_pos
#define fc__warn_unused_result