forked from github/server
replace strstr
Neu Funktion check_param die überprüft ob ein übergebener Wert in dem Wert des entsprechenden Parameters steht.
This commit is contained in:
parent
8b9f344484
commit
90cf6d845f
4 changed files with 69 additions and 51 deletions
|
@ -654,7 +654,6 @@ void building_set_owner(struct unit * owner)
|
||||||
static unit *building_owner_ex(const building * bld, const struct faction * last_owner)
|
static unit *building_owner_ex(const building * bld, const struct faction * last_owner)
|
||||||
{
|
{
|
||||||
unit *u, *heir = 0;
|
unit *u, *heir = 0;
|
||||||
const char *btypes;
|
|
||||||
/* Eigentümer tot oder kein Eigentümer vorhanden. Erste lebende Einheit
|
/* Eigentümer tot oder kein Eigentümer vorhanden. Erste lebende Einheit
|
||||||
* nehmen. */
|
* nehmen. */
|
||||||
for (u = bld->region->units; u; u = u->next) {
|
for (u = bld->region->units; u; u = u->next) {
|
||||||
|
@ -670,14 +669,13 @@ static unit *building_owner_ex(const building * bld, const struct faction * last
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
btypes = get_param(global.parameters, "rules.region_owner_pay_building");
|
if (!heir && check_param(global.parameters, "rules.region_owner_pay_building", bld->type->_name)) {
|
||||||
if (btypes && !heir && (strstr(btypes, bld->type->_name) != NULL)) {
|
u = building_owner(largestbuilding(bld->region, &cmp_taxes, false));
|
||||||
u = building_owner(largestbuilding(bld->region, &cmp_taxes, false));
|
if (u) {
|
||||||
if (u) {
|
heir = u;
|
||||||
heir = u;
|
}
|
||||||
}
|
}
|
||||||
}
|
return heir;
|
||||||
return heir;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unit *building_owner(const building * bld)
|
unit *building_owner(const building * bld)
|
||||||
|
|
|
@ -1882,6 +1882,27 @@ int get_param_int(const struct param *p, const char *key, int def)
|
||||||
return str ? atoi(str) : def;
|
return str ? atoi(str) : def;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int check_param(const struct param *p, const char *key, const char *searchvalue)
|
||||||
|
{
|
||||||
|
const char *value = get_param(p, key);
|
||||||
|
if (!value) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
char *p_value = malloc(sizeof(char)* (strlen(value) + 1));
|
||||||
|
strcpy(p_value, value);
|
||||||
|
const char *delimiter = " ,;";
|
||||||
|
char *v = strtok(p_value, delimiter);
|
||||||
|
|
||||||
|
while (v != NULL) {
|
||||||
|
if (strcmp(v, searchvalue) == 0)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
v = strtok(NULL, delimiter);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const char *g_datadir;
|
static const char *g_datadir;
|
||||||
const char *datapath(void)
|
const char *datapath(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -390,10 +390,11 @@ extern "C" {
|
||||||
|
|
||||||
const char *dbrace(const struct race *rc);
|
const char *dbrace(const struct race *rc);
|
||||||
|
|
||||||
void set_param(struct param **p, const char *name, const char *data);
|
void set_param(struct param **p, const char *key, const char *data);
|
||||||
const char *get_param(const struct param *p, const char *name);
|
const char *get_param(const struct param *p, const char *key);
|
||||||
int get_param_int(const struct param *p, const char *name, int def);
|
int get_param_int(const struct param *p, const char *key, int def);
|
||||||
float get_param_flt(const struct param *p, const char *name, float def);
|
int check_param(const struct param *p, const char *key, const char *searchvalue);
|
||||||
|
float get_param_flt(const struct param *p, const char *key, float def);
|
||||||
|
|
||||||
bool ExpensiveMigrants(void);
|
bool ExpensiveMigrants(void);
|
||||||
int NMRTimeout(void);
|
int NMRTimeout(void);
|
||||||
|
|
|
@ -1498,7 +1498,6 @@ static void prepare_reports(void)
|
||||||
region *r;
|
region *r;
|
||||||
faction *f;
|
faction *f;
|
||||||
building *b;
|
building *b;
|
||||||
const char *btypes;
|
|
||||||
const struct building_type *bt_lighthouse = bt_find("lighthouse");
|
const struct building_type *bt_lighthouse = bt_find("lighthouse");
|
||||||
|
|
||||||
for (f = factions; f; f = f->next) {
|
for (f = factions; f; f = f->next) {
|
||||||
|
@ -1523,44 +1522,43 @@ static void prepare_reports(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Region owner get always the Lighthouse report */
|
/* Region owner get always the Lighthouse report */
|
||||||
btypes = get_param(global.parameters, "rules.region_owner_pay_building");
|
if (check_param(global.parameters, "rules.region_owner_pay_building", bt_lighthouse->_name)) {
|
||||||
if (btypes && strstr(btypes, bt_lighthouse->_name) != NULL) {
|
for (b = rbuildings(r); b; b = b->next) {
|
||||||
for (b = rbuildings(r); b; b = b->next) {
|
if (b && b->type == bt_lighthouse) {
|
||||||
if (b && b->type == bt_lighthouse) {
|
u = building_owner(largestbuilding(r, &cmp_taxes, false));
|
||||||
u = building_owner(largestbuilding(r, &cmp_taxes, false));
|
/* alternativ: u = building_owner(b); if not all region owners should see */
|
||||||
/* alternativ: u = building_owner(b); if not all region owners should see */
|
if (u) {
|
||||||
if (u) {
|
prepare_lighthouse(b, u->faction);
|
||||||
prepare_lighthouse(b, u->faction);
|
if (u_race(u) != get_race(RC_SPELL) || u->number == RS_FARVISION) {
|
||||||
if (u_race(u) != get_race(RC_SPELL) || u->number == RS_FARVISION) {
|
if (fval(u, UFL_DISBELIEVES)) {
|
||||||
if (fval(u, UFL_DISBELIEVES)) {
|
add_seen(u->faction->seen, r, see_unit, true);
|
||||||
add_seen(u->faction->seen, r, see_unit, true);
|
}
|
||||||
}
|
else {
|
||||||
else {
|
add_seen(u->faction->seen, r, see_unit, false);
|
||||||
add_seen(u->faction->seen, r, see_unit, false);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
for (u = r->units; u; u = u->next) {
|
||||||
for (u = r->units; u; u = u->next) {
|
if (u->building && u->building->type == bt_lighthouse) {
|
||||||
if (u->building && u->building->type == bt_lighthouse) {
|
/* we are in a lighthouse. add the regions we can see from here! */
|
||||||
/* we are in a lighthouse. add the regions we can see from here! */
|
prepare_lighthouse(u->building, u->faction);
|
||||||
prepare_lighthouse(u->building, u->faction);
|
}
|
||||||
}
|
|
||||||
|
if (u_race(u) != get_race(RC_SPELL) || u->number == RS_FARVISION) {
|
||||||
|
if (fval(u, UFL_DISBELIEVES)) {
|
||||||
|
add_seen(u->faction->seen, r, see_unit, true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
add_seen(u->faction->seen, r, see_unit, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (u_race(u) != get_race(RC_SPELL) || u->number == RS_FARVISION) {
|
|
||||||
if (fval(u, UFL_DISBELIEVES)) {
|
|
||||||
add_seen(u->faction->seen, r, see_unit, true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
add_seen(u->faction->seen, r, see_unit, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (fval(r, RF_TRAVELUNIT)) {
|
if (fval(r, RF_TRAVELUNIT)) {
|
||||||
for (ru = a_find(r->attribs, &at_travelunit);
|
for (ru = a_find(r->attribs, &at_travelunit);
|
||||||
|
|
Loading…
Reference in a new issue