67 if (pterrain->helptext !=
nullptr) {
69 pterrain->helptext =
nullptr;
71 if (pterrain->resources !=
nullptr) {
74 free(pterrain->resources);
75 pterrain->resources =
nullptr;
77 if (pterrain->resource_freq !=
nullptr) {
80 free(pterrain->resource_freq);
81 pterrain->resource_freq =
nullptr;
83 if (pterrain->rgb !=
nullptr) {
87 pterrain->rgb =
nullptr;
262 while (*r !=
nullptr) {
263 if (*r == presource) {
279 presource =
fc_malloc(
sizeof(*presource));
283 presource->
self = pextra;
301 return presource->
self;
308#define variable_adjc_iterate(nmap, center_tile, _tile, card_only) \
310 enum direction8 *_tile##_list; \
314 _tile##_list = MAP_CARDINAL_DIRS; \
315 _tile##_count = MAP_NUM_CARDINAL_DIRS; \
317 _tile##_list = MAP_VALID_DIRS; \
318 _tile##_count = MAP_NUM_VALID_DIRS; \
320 adjc_dirlist_iterate(nmap, center_tile, _tile, _tile##_dir, \
321 _tile##_list, _tile##_count) {
323#define variable_adjc_iterate_end \
324 } adjc_dirlist_iterate_end; \
331 const struct tile *ptile,
332 const struct terrain *pterrain,
335 if (pterrain ==
nullptr) {
352 const struct tile *ptile,
353 const struct terrain *pterrain,
356 if (pterrain ==
nullptr) {
373 const struct tile *ptile,
377 int count = 0, total = 0;
389 count = count * 100 / total;
399 const struct tile *ptile,
403 if (
pres ==
nullptr) {
420 const struct tile *ptile,
424 if (
pres ==
nullptr) {
442 const struct tile *ptile,
462 const struct tile *ptile,
482 const struct tile *ptile,
486 int count = 0, total = 0;
499 count = count * 100 / total;
542 if (
len > 0 && *p ==
'/') {
595 const struct tile *ptile,
616 const struct tile *ptile,
637 const struct tile *ptile,
641 int count = 0, total = 0;
654 count = count * 100 / total;
713 if (tgt ==
nullptr) {
812 if (helptxt && helptxt[0] !=
'\0') {
#define BV_ISSET(bv, bit)
void user_flag_init(struct user_flag *flag)
void user_flag_free(struct user_flag *flag)
#define fc_assert_ret(condition)
#define fc_assert(condition)
#define fc_assert_ret_val(condition, val)
#define cardinal_adjc_iterate_end
#define adjc_iterate(nmap, center_tile, itr_tile)
#define cardinal_adjc_iterate(nmap, center_tile, itr_tile)
static const char * rule_name_get(const struct name_translation *ptrans)
static const char * name_translation_get(const struct name_translation *ptrans)
void rgbcolor_destroy(struct rgbcolor *prgbcolor)
void strvec_destroy(struct strvec *psv)
struct packet_ruleset_control control
struct extra_type ** resources
struct name_translation name
enum terrain_class tclass
int extra_removal_times[MAX_EXTRA_TYPES]
int fc_strcasecmp(const char *str0, const char *str1)
int cat_snprintf(char *str, size_t n, const char *format,...)
int terrain_extra_removal_time(const struct terrain *pterrain, enum unit_activity activity, const struct extra_type *tgt)
void user_terrain_flags_init(void)
struct terrain * terrain_by_rule_name(const char *name)
bool is_terrain_class_near_tile(const struct civ_map *nmap, const struct tile *ptile, enum terrain_class tclass)
char terrain_identifier(const struct terrain *pterrain)
Terrain_type_id terrain_count(void)
struct extra_type * resource_extra_get(const struct resource_type *presource)
int count_terrain_class_near_tile(const struct civ_map *nmap, const struct tile *ptile, bool cardinal_only, bool percentage, enum terrain_class tclass)
bool is_terrain_class_card_near(const struct civ_map *nmap, const struct tile *ptile, enum terrain_class tclass)
struct terrain * terrain_by_translated_name(const char *name)
const char * terrain_class_name_translation(enum terrain_class tclass)
int count_terrain_flag_near_tile(const struct civ_map *nmap, const struct tile *ptile, bool cardinal_only, bool percentage, enum terrain_flag_id flag)
const char * get_infrastructure_text(bv_extras extras)
const char * terrain_flag_id_name_cb(enum terrain_flag_id flag)
Terrain_type_id terrain_index(const struct terrain *pterrain)
bool is_resource_card_near(const struct civ_map *nmap, const struct tile *ptile, const struct extra_type *pres, bool check_self)
const char * terrain_name_translation(const struct terrain *pterrain)
#define variable_adjc_iterate(nmap, center_tile, _tile, card_only)
struct terrain * terrain_array_first(void)
struct terrain * rand_terrain_by_flag(enum terrain_flag_id flag)
struct terrain * terrain_by_number(const Terrain_type_id type)
bool terrain_can_support_alteration(const struct terrain *pterrain, enum terrain_alteration alter)
bool is_terrain_card_near(const struct civ_map *nmap, const struct tile *ptile, const struct terrain *pterrain, bool check_self)
const char * terrain_rule_name(const struct terrain *pterrain)
bool is_resource_near_tile(const struct civ_map *nmap, const struct tile *ptile, const struct extra_type *pres, bool check_self)
void resource_types_free(void)
void user_terrain_flags_free(void)
enum terrain_class terrain_type_terrain_class(const struct terrain *pterrain)
const char * terrain_flag_helptxt(enum terrain_flag_id id)
bool terrain_has_resource(const struct terrain *pterrain, const struct extra_type *presource)
struct resource_type * resource_type_init(struct extra_type *pextra)
bool is_terrain_flag_near_tile(const struct civ_map *nmap, const struct tile *ptile, enum terrain_flag_id flag)
struct extra_type * get_preferred_pillage(bv_extras extras)
void set_user_terrain_flag_name(enum terrain_flag_id id, const char *name, const char *helptxt)
const struct terrain * terrain_array_last(void)
static struct terrain civ_terrains[MAX_NUM_TERRAINS]
int terrain_extra_build_time(const struct terrain *pterrain, enum unit_activity activity, const struct extra_type *tgt)
static struct user_flag user_terrain_flags[MAX_NUM_USER_TER_FLAGS]
Terrain_type_id terrain_number(const struct terrain *pterrain)
struct terrain * terrain_by_identifier(const char identifier)
bool is_terrain_flag_card_near(const struct civ_map *nmap, const struct tile *ptile, enum terrain_flag_id flag)
int count_terrain_property_near_tile(const struct civ_map *nmap, const struct tile *ptile, bool cardinal_only, bool percentage, enum mapgen_terrain_property prop)
#define variable_adjc_iterate_end
bool is_terrain_near_tile(const struct civ_map *nmap, const struct tile *ptile, const struct terrain *pterrain, bool check_self)
#define terrain_type_iterate(_p)
#define TERRAIN_UNKNOWN_IDENTIFIER
#define terrain_type_iterate_end
#define terrain_has_flag(terr, flag)
#define MAX_NUM_USER_TER_FLAGS
#define tile_resource(_tile)
#define tile_terrain(_tile)