Feature #1526 ยป 0098-unittype.-ch-Replace-NULL-with-nullptr.patch
common/unittype.c | ||
---|---|---|
if (game.control.num_unit_types > 0) {
|
||
return unit_types;
|
||
}
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
if (game.control.num_unit_types > 0) {
|
||
return &unit_types[game.control.num_unit_types - 1];
|
||
}
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
/**********************************************************************//**
|
||
Return a pointer for the unit type struct for the given unit type id.
|
||
This function returns NULL for invalid unit pointers (some callers
|
||
This function returns nullptr for invalid unit pointers (some callers
|
||
rely on this).
|
||
**************************************************************************/
|
||
struct unit_type *utype_by_number(const Unit_type_id id)
|
||
{
|
||
if (id < 0 || id >= game.control.num_unit_types) {
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
return &unit_types[id];
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
const struct unit_type *unit_type_get(const struct unit *punit)
|
||
{
|
||
fc_assert_ret_val(NULL != punit, NULL);
|
||
fc_assert_ret_val(punit != nullptr, nullptr);
|
||
return punit->utype;
|
||
}
|
||
... | ... | |
conversion factor in percent) and
|
||
FIXME: Should the ai know about this? */
|
||
if (otype == O_GOLD || otype == O_SHIELD) {
|
||
gold_upkeep_factor = get_target_bonus_effects(NULL,
|
||
gold_upkeep_factor = get_target_bonus_effects(nullptr,
|
||
&(const struct req_context) {
|
||
.player = pplayer,
|
||
.unittype = ut,
|
||
... | ... | |
.tile = ptile,
|
||
.city = pcity
|
||
},
|
||
NULL, EFT_SHIELD2GOLD_PCT);
|
||
nullptr, EFT_SHIELD2GOLD_PCT);
|
||
if (gold_upkeep_factor > 0) {
|
||
switch (otype) {
|
||
... | ... | |
}
|
||
}
|
||
val *= get_target_bonus_effects(NULL,
|
||
val *= get_target_bonus_effects(nullptr,
|
||
&(const struct req_context) {
|
||
.player = pplayer,
|
||
.output = get_output_type(otype),
|
||
... | ... | |
.tile = ptile,
|
||
.city = pcity
|
||
},
|
||
NULL, EFT_UPKEEP_PCT) / 100;
|
||
nullptr, EFT_UPKEEP_PCT) / 100;
|
||
return val;
|
||
}
|
||
... | ... | |
/* FIXME: Probably wrong result if the effect
|
||
* EFT_ACTION_SUCCESS_MOVE_COST depends on unit state. Add unit state
|
||
* parameters? */
|
||
mpco += get_target_bonus_effects(NULL,
|
||
mpco += get_target_bonus_effects(nullptr,
|
||
&(const struct req_context) {
|
||
.player = act_player,
|
||
.city = tile_city(post_action_tile),
|
||
... | ... | |
.unittype = putype,
|
||
.action = paction,
|
||
},
|
||
NULL,
|
||
nullptr,
|
||
EFT_ACTION_SUCCESS_MOVE_COST);
|
||
return mpco;
|
||
... | ... | |
/**********************************************************************//**
|
||
Returns the number of shields it takes to build this unit type.
|
||
If pplayer is NULL, owner of the pcity is used instead.
|
||
If pplayer is nullptr, owner of the pcity is used instead.
|
||
**************************************************************************/
|
||
int utype_build_shield_cost(const struct city *pcity,
|
||
const struct player *pplayer,
|
||
... | ... | |
const struct player *owner;
|
||
const struct tile *ptile;
|
||
if (pcity != NULL) {
|
||
if (pcity != nullptr) {
|
||
owner = city_owner(pcity);
|
||
ptile = city_tile(pcity);
|
||
} else {
|
||
owner = NULL;
|
||
ptile = NULL;
|
||
owner = nullptr;
|
||
ptile = nullptr;
|
||
}
|
||
if (pplayer != NULL) {
|
||
if (pplayer != nullptr) {
|
||
/* Override city owner. */
|
||
owner = pplayer;
|
||
}
|
||
base = punittype->build_cost
|
||
* (100 + get_unittype_bonus(owner, ptile, punittype, NULL,
|
||
* (100 + get_unittype_bonus(owner, ptile, punittype, nullptr,
|
||
EFT_UNIT_BUILD_COST_PCT)) / 100;
|
||
return MAX(base * game.info.shieldbox / 100, 1);
|
||
... | ... | |
**************************************************************************/
|
||
int unit_build_shield_cost(const struct city *pcity, const struct unit *punit)
|
||
{
|
||
return utype_build_shield_cost(pcity, NULL, unit_type_get(punit));
|
||
return utype_build_shield_cost(pcity, nullptr, unit_type_get(punit));
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
int shields_in_stock)
|
||
{
|
||
int cost = 0;
|
||
const int missing = utype_build_shield_cost(pcity, NULL, punittype) - shields_in_stock;
|
||
const int missing
|
||
= utype_build_shield_cost(pcity, nullptr, punittype) - shields_in_stock;
|
||
struct player *owner;
|
||
struct tile *ptile;
|
||
... | ... | |
cost *= 2;
|
||
}
|
||
if (pcity != NULL) {
|
||
if (pcity != nullptr) {
|
||
owner = city_owner(pcity);
|
||
ptile = city_tile(pcity);
|
||
} else {
|
||
owner = NULL;
|
||
ptile = NULL;
|
||
owner = nullptr;
|
||
ptile = nullptr;
|
||
}
|
||
cost = cost
|
||
* (100 + get_unittype_bonus(owner, ptile, punittype, NULL,
|
||
* (100 + get_unittype_bonus(owner, ptile, punittype, nullptr,
|
||
EFT_UNIT_BUY_COST_PCT))
|
||
/ 100;
|
||
... | ... | |
int pop_cost = punittype->pop_cost;
|
||
pop_cost -= get_unittype_bonus(city_owner(pcity), city_tile(pcity),
|
||
punittype, NULL, EFT_POPCOST_FREE);
|
||
punittype, nullptr, EFT_POPCOST_FREE);
|
||
return MAX(0, pop_cost);
|
||
}
|
||
... | ... | |
/**********************************************************************//**
|
||
Return whether this player can upgrade this unit type (to any other
|
||
unit type). Returns NULL if no upgrade is possible.
|
||
unit type). Returns nullptr if no upgrade is possible.
|
||
**************************************************************************/
|
||
const struct unit_type *can_upgrade_unittype(const struct player *pplayer,
|
||
const struct unit_type *punittype)
|
||
{
|
||
const struct unit_type *upgrade = punittype;
|
||
const struct unit_type *best_upgrade = NULL;
|
||
const struct unit_type *best_upgrade = nullptr;
|
||
/* For some reason this used to check
|
||
* can_player_build_unit_direct() for the unittype
|
||
... | ... | |
/**********************************************************************//**
|
||
Return the cost (gold) of upgrading a single unit of the specified type
|
||
to the new type. This price could (but currently does not) depend on
|
||
to the new type. This price could (but currently does not) depend on
|
||
other attributes (like nation or government type) of the player the unit
|
||
belongs to.
|
||
**************************************************************************/
|
||
... | ... | |
* before generalized actions appears. */
|
||
const struct action *paction = action_by_number(ACTION_UPGRADE_UNIT);
|
||
int missing = (utype_build_shield_cost_base(to)
|
||
- unit_shield_value(NULL, from, paction));
|
||
- unit_shield_value(nullptr, from, paction));
|
||
int base_cost = 2 * missing + (missing * missing) / 20;
|
||
return base_cost
|
||
... | ... | |
/**********************************************************************//**
|
||
Returns the unit type that has the given (translated) name.
|
||
Returns NULL if none match.
|
||
Returns nullptr if none match.
|
||
**************************************************************************/
|
||
struct unit_type *unit_type_by_translated_name(const char *name)
|
||
{
|
||
... | ... | |
}
|
||
} unit_type_iterate_end;
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
Returns the unit type that has the given (untranslated) rule name.
|
||
Returns NULL if none match.
|
||
Returns nullptr if none match.
|
||
**************************************************************************/
|
||
struct unit_type *unit_type_by_rule_name(const char *name)
|
||
{
|
||
... | ... | |
}
|
||
} unit_type_iterate_end;
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
Returns the unit class that has the given (untranslated) rule name.
|
||
Returns NULL if none match.
|
||
Returns nullptr if none match.
|
||
**************************************************************************/
|
||
struct unit_class *unit_class_by_rule_name(const char *s)
|
||
{
|
||
... | ... | |
}
|
||
} unit_class_iterate_end;
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
fc_assert_ret(id >= UCF_USER_FLAG_1 && id <= UCF_LAST_USER_FLAG);
|
||
if (user_class_flags[ufid].name != NULL) {
|
||
if (user_class_flags[ufid].name != nullptr) {
|
||
FC_FREE(user_class_flags[ufid].name);
|
||
user_class_flags[ufid].name = NULL;
|
||
user_class_flags[ufid].name = nullptr;
|
||
}
|
||
if (name && name[0] != '\0') {
|
||
user_class_flags[ufid].name = fc_strdup(name);
|
||
}
|
||
if (user_class_flags[ufid].helptxt != NULL) {
|
||
if (user_class_flags[ufid].helptxt != nullptr) {
|
||
free(user_class_flags[ufid].helptxt);
|
||
user_class_flags[ufid].helptxt = NULL;
|
||
user_class_flags[ufid].helptxt = nullptr;
|
||
}
|
||
if (helptxt && helptxt[0] != '\0') {
|
||
... | ... | |
const char *unit_class_flag_id_name_cb(enum unit_class_flag_id flag)
|
||
{
|
||
if (flag < UCF_USER_FLAG_1 || flag > UCF_LAST_USER_FLAG) {
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
return user_class_flags[flag - UCF_USER_FLAG_1].name;
|
||
... | ... | |
fc_assert_ret(id >= UTYF_USER_FLAG_1 && id <= UTYF_LAST_USER_FLAG);
|
||
if (user_type_flags[ufid].name != NULL) {
|
||
if (user_type_flags[ufid].name != nullptr) {
|
||
FC_FREE(user_type_flags[ufid].name);
|
||
user_type_flags[ufid].name = NULL;
|
||
user_type_flags[ufid].name = nullptr;
|
||
}
|
||
if (name && name[0] != '\0') {
|
||
user_type_flags[ufid].name = fc_strdup(name);
|
||
}
|
||
if (user_type_flags[ufid].helptxt != NULL) {
|
||
if (user_type_flags[ufid].helptxt != nullptr) {
|
||
free(user_type_flags[ufid].helptxt);
|
||
user_type_flags[ufid].helptxt = NULL;
|
||
user_type_flags[ufid].helptxt = nullptr;
|
||
}
|
||
if (helptxt && helptxt[0] != '\0') {
|
||
... | ... | |
const char *unit_type_flag_id_name_cb(enum unit_type_flag_id flag)
|
||
{
|
||
if (flag < UTYF_USER_FLAG_1 || flag > UTYF_LAST_USER_FLAG) {
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
return user_type_flags[flag - UTYF_USER_FLAG_1].name;
|
||
... | ... | |
const struct req_context context = { .player = p, .unittype = punittype };
|
||
bool barbarian = is_barbarian(p);
|
||
fc_assert_ret_val(NULL != punittype, FALSE);
|
||
fc_assert_ret_val(punittype != nullptr, FALSE);
|
||
if (barbarian
|
||
&& !utype_has_role(punittype, L_BARBARIAN_BUILD)
|
||
... | ... | |
req_copy(©, preq);
|
||
copy.range = REQ_RANGE_WORLD;
|
||
if (!is_req_active(&context, NULL, ©, RPT_CERTAIN)) {
|
||
if (!is_req_active(&context, nullptr, ©, RPT_CERTAIN)) {
|
||
return FALSE;
|
||
}
|
||
} else if (!is_req_active(&context, NULL, preq, RPT_CERTAIN)) {
|
||
} else if (!is_req_active(&context, nullptr, preq, RPT_CERTAIN)) {
|
||
return FALSE;
|
||
}
|
||
}
|
||
} else if (!is_req_active(&context, NULL, preq, RPT_CERTAIN)) {
|
||
} else if (!is_req_active(&context, nullptr, preq, RPT_CERTAIN)) {
|
||
return FALSE;
|
||
}
|
||
} requirement_vector_iterate_end;
|
||
... | ... | |
returns FALSE if unit is obsolete.
|
||
**************************************************************************/
|
||
bool can_player_build_unit_now(const struct player *p,
|
||
const struct unit_type *punittype)
|
||
const struct unit_type *punittype)
|
||
{
|
||
if (!can_player_build_unit_direct(p, punittype, FALSE)) {
|
||
return FALSE;
|
||
... | ... | |
bool can_player_build_unit_later(const struct player *p,
|
||
const struct unit_type *punittype)
|
||
{
|
||
fc_assert_ret_val(NULL != punittype, FALSE);
|
||
fc_assert_ret_val(punittype != nullptr, FALSE);
|
||
if (utype_has_flag(punittype, UTYF_NOBUILD)) {
|
||
return FALSE;
|
||
... | ... | |
j = 0;
|
||
unit_type_iterate(u) {
|
||
if (func_has(u, i)) {
|
||
with_role[i][j++] = u;
|
||
with_role[i][j++] = u;
|
||
}
|
||
} unit_type_iterate_end;
|
||
fc_assert(j == n_with_role[i]);
|
||
... | ... | |
for (i = 0; i < MAX_UNIT_ROLES; i++) {
|
||
free(with_role[i]);
|
||
with_role[i] = NULL;
|
||
with_role[i] = nullptr;
|
||
n_with_role[i] = 0;
|
||
}
|
||
}
|
||
... | ... | |
if (first_init) {
|
||
for (i = 0; i < MAX_UNIT_ROLES; i++) {
|
||
with_role[i] = NULL;
|
||
with_role[i] = nullptr;
|
||
n_with_role[i] = 0;
|
||
}
|
||
} else {
|
||
... | ... | |
}
|
||
}
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
}
|
||
}
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
{
|
||
fc_assert_ret_val((role >= 0 && role <= UTYF_LAST_USER_FLAG)
|
||
|| (role >= L_FIRST && role < L_LAST)
|
||
|| (role >= L_LAST && role < MAX_UNIT_ROLES), NULL);
|
||
fc_assert_ret_val(!first_init, NULL);
|
||
|| (role >= L_LAST && role < MAX_UNIT_ROLES), nullptr);
|
||
fc_assert_ret_val(!first_init, nullptr);
|
||
if (role_index == -1) {
|
||
role_index = n_with_role[role] - 1;
|
||
}
|
||
fc_assert_ret_val(role_index >= 0 && role_index < n_with_role[role], NULL);
|
||
fc_assert_ret_val(role_index >= 0
|
||
&& role_index < n_with_role[role], nullptr);
|
||
return with_role[role][role_index];
|
||
}
|
||
/**********************************************************************//**
|
||
Return "best" unit this city can build, with given role/flag.
|
||
Returns NULL if none match. "Best" means highest unit type id.
|
||
Returns nullptr if none match. "Best" means highest unit type id.
|
||
**************************************************************************/
|
||
struct unit_type *best_role_unit(const struct city *pcity, int role)
|
||
{
|
||
... | ... | |
fc_assert_ret_val((role >= 0 && role <= UTYF_LAST_USER_FLAG)
|
||
|| (role >= L_FIRST && role < L_LAST)
|
||
|| (role >= L_LAST && role < MAX_UNIT_ROLES), NULL);
|
||
fc_assert_ret_val(!first_init, NULL);
|
||
|| (role >= L_LAST && role < MAX_UNIT_ROLES), nullptr);
|
||
fc_assert_ret_val(!first_init, nullptr);
|
||
for (j = n_with_role[role] - 1; j >= 0; j--) {
|
||
u = with_role[role][j];
|
||
... | ... | |
}
|
||
}
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
Return "best" unit the player can build, with given role/flag.
|
||
Returns NULL if none match. "Best" means highest unit type id.
|
||
Returns nullptr if none match. "Best" means highest unit type id.
|
||
TODO: Cache the result per player?
|
||
**************************************************************************/
|
||
... | ... | |
fc_assert_ret_val((role >= 0 && role <= UTYF_LAST_USER_FLAG)
|
||
|| (role >= L_FIRST && role < L_LAST)
|
||
|| (role >= L_LAST && role < MAX_UNIT_ROLES), NULL);
|
||
fc_assert_ret_val(!first_init, NULL);
|
||
|| (role >= L_LAST && role < MAX_UNIT_ROLES), nullptr);
|
||
fc_assert_ret_val(!first_init, nullptr);
|
||
for (j = n_with_role[role] - 1; j >= 0; j--) {
|
||
struct unit_type *utype = with_role[role][j];
|
||
... | ... | |
}
|
||
}
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
Return first unit the player can build, with given role/flag.
|
||
Returns NULL if none match. Used eg when placing starting units.
|
||
Returns nullptr if none match. Used eg when placing starting units.
|
||
**************************************************************************/
|
||
struct unit_type *first_role_unit_for_player(const struct player *pplayer,
|
||
int role)
|
||
... | ... | |
fc_assert_ret_val((role >= 0 && role <= UTYF_LAST_USER_FLAG)
|
||
|| (role >= L_FIRST && role < L_LAST)
|
||
|| (role >= L_LAST && role < MAX_UNIT_ROLES), NULL);
|
||
fc_assert_ret_val(!first_init, NULL);
|
||
|| (role >= L_LAST && role < MAX_UNIT_ROLES), nullptr);
|
||
fc_assert_ret_val(!first_init, nullptr);
|
||
for (j = 0; j < n_with_role[role]; j++) {
|
||
struct unit_type *utype = with_role[role][j];
|
||
... | ... | |
}
|
||
}
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
{
|
||
int i;
|
||
/* Can't use unit_type_iterate or utype_by_number here because
|
||
/* Can't use unit_type_iterate() or utype_by_number() here because
|
||
* num_unit_types isn't known yet. */
|
||
for (i = 0; i < ARRAY_SIZE(unit_types); i++) {
|
||
unit_types[i].item_number = i;
|
||
requirement_vector_init(&(unit_types[i].build_reqs));
|
||
unit_types[i].helptext = NULL;
|
||
unit_types[i].veteran = NULL;
|
||
unit_types[i].helptext = nullptr;
|
||
unit_types[i].veteran = nullptr;
|
||
unit_types[i].bonuses = combat_bonus_list_new();
|
||
unit_types[i].ruledit_disabled = FALSE;
|
||
unit_types[i].ruledit_dlg = NULL;
|
||
unit_types[i].ruledit_dlg = nullptr;
|
||
}
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
static void unit_type_free(struct unit_type *punittype)
|
||
{
|
||
if (NULL != punittype->helptext) {
|
||
if (punittype->helptext != nullptr) {
|
||
strvec_destroy(punittype->helptext);
|
||
punittype->helptext = NULL;
|
||
punittype->helptext = nullptr;
|
||
}
|
||
requirement_vector_free(&(punittype->build_reqs));
|
||
... | ... | |
if (game.control.num_unit_classes > 0) {
|
||
return unit_classes;
|
||
}
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
if (game.control.num_unit_classes > 0) {
|
||
return &unit_classes[game.control.num_unit_classes - 1];
|
||
}
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
struct unit_class *uclass_by_number(const Unit_Class_id id)
|
||
{
|
||
if (id < 0 || id >= game.control.num_unit_classes) {
|
||
return NULL;
|
||
return nullptr;
|
||
}
|
||
return &unit_classes[id];
|
||
}
|
||
... | ... | |
**************************************************************************/
|
||
struct unit_class *utype_class(const struct unit_type *punittype)
|
||
{
|
||
fc_assert(NULL != punittype->uclass);
|
||
fc_assert(punittype->uclass != nullptr);
|
||
return punittype->uclass;
|
||
}
|
||
#endif /* utype_class */
|
||
... | ... | |
* num_unit_classes isn't known yet. */
|
||
for (i = 0; i < ARRAY_SIZE(unit_classes); i++) {
|
||
unit_classes[i].item_number = i;
|
||
unit_classes[i].cache.refuel_extras = NULL;
|
||
unit_classes[i].cache.native_tile_extras = NULL;
|
||
unit_classes[i].cache.native_bases = NULL;
|
||
unit_classes[i].cache.bonus_roads = NULL;
|
||
unit_classes[i].cache.hiding_extras = NULL;
|
||
unit_classes[i].cache.subset_movers = NULL;
|
||
unit_classes[i].helptext = NULL;
|
||
unit_classes[i].cache.refuel_extras = nullptr;
|
||
unit_classes[i].cache.native_tile_extras = nullptr;
|
||
unit_classes[i].cache.native_bases = nullptr;
|
||
unit_classes[i].cache.bonus_roads = nullptr;
|
||
unit_classes[i].cache.hiding_extras = nullptr;
|
||
unit_classes[i].cache.subset_movers = nullptr;
|
||
unit_classes[i].helptext = nullptr;
|
||
unit_classes[i].ruledit_disabled = FALSE;
|
||
}
|
||
}
|
||
... | ... | |
int i;
|
||
for (i = 0; i < ARRAY_SIZE(unit_classes); i++) {
|
||
if (unit_classes[i].cache.refuel_extras != NULL) {
|
||
if (unit_classes[i].cache.refuel_extras != nullptr) {
|
||
extra_type_list_destroy(unit_classes[i].cache.refuel_extras);
|
||
unit_classes[i].cache.refuel_extras = NULL;
|
||
unit_classes[i].cache.refuel_extras = nullptr;
|
||
}
|
||
if (unit_classes[i].cache.native_tile_extras != NULL) {
|
||
if (unit_classes[i].cache.native_tile_extras != nullptr) {
|
||
extra_type_list_destroy(unit_classes[i].cache.native_tile_extras);
|
||
unit_classes[i].cache.native_tile_extras = NULL;
|
||
unit_classes[i].cache.native_tile_extras = nullptr;
|
||
}
|
||
if (unit_classes[i].cache.native_bases != NULL) {
|
||
if (unit_classes[i].cache.native_bases != nullptr) {
|
||
extra_type_list_destroy(unit_classes[i].cache.native_bases);
|
||
unit_classes[i].cache.native_bases = NULL;
|
||
unit_classes[i].cache.native_bases = nullptr;
|
||
}
|
||
if (unit_classes[i].cache.bonus_roads != NULL) {
|
||
if (unit_classes[i].cache.bonus_roads != nullptr) {
|
||
extra_type_list_destroy(unit_classes[i].cache.bonus_roads);
|
||
unit_classes[i].cache.bonus_roads = NULL;
|
||
unit_classes[i].cache.bonus_roads = nullptr;
|
||
}
|
||
if (unit_classes[i].cache.hiding_extras != NULL) {
|
||
if (unit_classes[i].cache.hiding_extras != nullptr) {
|
||
extra_type_list_destroy(unit_classes[i].cache.hiding_extras);
|
||
unit_classes[i].cache.hiding_extras = NULL;
|
||
unit_classes[i].cache.hiding_extras = nullptr;
|
||
}
|
||
if (unit_classes[i].cache.subset_movers != NULL) {
|
||
if (unit_classes[i].cache.subset_movers != nullptr) {
|
||
unit_class_list_destroy(unit_classes[i].cache.subset_movers);
|
||
}
|
||
if (unit_classes[i].helptext != NULL) {
|
||
if (unit_classes[i].helptext != nullptr) {
|
||
strvec_destroy(unit_classes[i].helptext);
|
||
unit_classes[i].helptext = NULL;
|
||
unit_classes[i].helptext = nullptr;
|
||
}
|
||
}
|
||
}
|
||
... | ... | |
const struct veteran_system *
|
||
utype_veteran_system(const struct unit_type *punittype)
|
||
{
|
||
fc_assert_ret_val(punittype != NULL, NULL);
|
||
fc_assert_ret_val(punittype != nullptr, nullptr);
|
||
if (punittype->veteran) {
|
||
return punittype->veteran;
|
||
}
|
||
fc_assert_ret_val(game.veteran != NULL, NULL);
|
||
fc_assert_ret_val(game.veteran != nullptr, nullptr);
|
||
return game.veteran;
|
||
}
|
||
... | ... | |
const struct veteran_level *
|
||
vsystem_veteran_level(const struct veteran_system *vsystem, int level)
|
||
{
|
||
fc_assert_ret_val(vsystem->definitions != NULL, NULL);
|
||
fc_assert_ret_val(vsystem->levels > level, NULL);
|
||
fc_assert_ret_val(vsystem->definitions != nullptr, nullptr);
|
||
fc_assert_ret_val(vsystem->levels > level, nullptr);
|
||
return (vsystem->definitions + level);
|
||
}
|
||
... | ... | |
{
|
||
const struct veteran_system *vsystem = utype_veteran_system(punittype);
|
||
fc_assert_ret_val(vsystem != NULL, NULL);
|
||
fc_assert_ret_val(vsystem != nullptr, nullptr);
|
||
return vsystem_veteran_level(vsystem, level);
|
||
}
|
||
/**********************************************************************//**
|
||
Return translated name of the given veteran level.
|
||
NULL if this unit type doesn't have different veteran levels.
|
||
nullptr if this unit type doesn't have different veteran levels.
|
||
**************************************************************************/
|
||
const char *utype_veteran_name_translation(const struct unit_type *punittype,
|
||
int level)
|
||
{
|
||
if (utype_veteran_levels(punittype) <= 1) {
|
||
return NULL;
|
||
return nullptr;
|
||
} else {
|
||
const struct veteran_level *vlvl = utype_veteran_level(punittype, level);
|
||
... | ... | |
{
|
||
const struct veteran_system *vsystem = utype_veteran_system(punittype);
|
||
fc_assert_ret_val(vsystem != NULL, 1);
|
||
fc_assert_ret_val(vsystem != nullptr, 1);
|
||
return vsystem->levels;
|
||
}
|
||
... | ... | |
struct veteran_system *vsystem;
|
||
/* There must be at least one level. */
|
||
fc_assert_ret_val(count > 0, NULL);
|
||
fc_assert_ret_val(count > 0, nullptr);
|
||
vsystem = fc_calloc(1, sizeof(*vsystem));
|
||
vsystem->levels = count;
|
||
... | ... | |
{
|
||
struct veteran_level *vlevel;
|
||
fc_assert_ret(vsystem != NULL);
|
||
fc_assert_ret(vsystem != nullptr);
|
||
fc_assert_ret(vsystem->levels > level);
|
||
vlevel = vsystem->definitions + level;
|
||
names_set(&vlevel->name, NULL, vlist_name, NULL);
|
||
names_set(&vlevel->name, nullptr, vlist_name, nullptr);
|
||
vlevel->power_fact = vlist_power;
|
||
vlevel->move_bonus = vlist_move;
|
||
vlevel->base_raise_chance = vlist_raise;
|
||
... | ... | |
if (is_extra_caused_by(pextra, EC_BASE)) {
|
||
extra_type_list_append(pclass->cache.native_bases, pextra);
|
||
}
|
||
if (proad != NULL && road_provides_move_bonus(proad)) {
|
||
if (proad != nullptr && road_provides_move_bonus(proad)) {
|
||
extra_type_list_append(pclass->cache.bonus_roads, pextra);
|
||
}
|
||
if (pextra->eus == EUS_HIDDEN) {
|
||
... | ... | |
} extra_type_iterate_end;
|
||
terrain_type_iterate(pterrain) {
|
||
if (is_native_to_class(puclass, pterrain, NULL)) {
|
||
if (is_native_to_class(puclass, pterrain, nullptr)) {
|
||
if (is_ocean(pterrain)) {
|
||
sea_moving = TRUE;
|
||
} else {
|
common/unittype.h | ||
---|---|---|
int firepower;
|
||
struct combat_bonus_list *bonuses;
|
||
#define U_NOT_OBSOLETED (NULL)
|
||
#define U_NOT_OBSOLETED (nullptr)
|
||
const struct unit_type *obsoleted_by;
|
||
const struct unit_type *converted_to;
|
||
int convert_time;
|
||
... | ... | |
#define unit_type_iterate(_p) \
|
||
{ \
|
||
struct unit_type *_p = unit_type_array_first(); \
|
||
if (NULL != _p) { \
|
||
if (_p != nullptr) { \
|
||
const struct unit_type *_end_##_p = unit_type_array_last(); \
|
||
for (; _p <= _end_##_p; _p++) {
|
||
... | ... | |
#define unit_class_iterate(_p) \
|
||
{ \
|
||
struct unit_class *_p = unit_class_array_first(); \
|
||
if (NULL != _p) { \
|
||
if (_p != nullptr) { \
|
||
const struct unit_class *_end_##_p = unit_class_array_last(); \
|
||
for (; _p <= _end_##_p; _p++) {
|
||