From 990fda6234e9f1b2cf4247573867b71c829d8415 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sat, 21 Nov 2015 18:13:16 +0100 Subject: [PATCH] clean up config.c, remove static configuration caching --- src/economy.c | 6 +++ src/give.c | 6 +++ src/kernel/config.c | 98 ++++++--------------------------------------- src/kernel/config.h | 2 - src/kernel/unit.c | 2 +- src/study.c | 12 +++--- 6 files changed, 33 insertions(+), 93 deletions(-) diff --git a/src/economy.c b/src/economy.c index fc27a1c5d..ce5bc3f36 100644 --- a/src/economy.c +++ b/src/economy.c @@ -3134,6 +3134,12 @@ static void peasant_taxes(region * r) } } +static bool rule_auto_taxation(void) +{ + int rule = get_param_int(global.parameters, "rules.economy.taxation", 0); + return rule != 0; +} + void produce(struct region *r) { request workers[MAX_WORKERS]; diff --git a/src/give.c b/src/give.c index e41ee19f5..5dead1277 100644 --- a/src/give.c +++ b/src/give.c @@ -233,6 +233,12 @@ static bool can_give_men(const unit *u, order *ord, message **msg) { return false; } +static bool rule_transfermen(void) +{ + int rule = get_param_int(global.parameters, "rules.transfermen", 1); + return rule != 0; +} + message * give_men(int n, unit * u, unit * u2, struct order *ord) { ship *sh; diff --git a/src/kernel/config.c b/src/kernel/config.c index 226735228..3e3651c88 100644 --- a/src/kernel/config.c +++ b/src/kernel/config.c @@ -216,26 +216,13 @@ int LongHunger(const struct unit *u) int SkillCap(skill_t sk) { - static int gamecookie = -1; - static int rule = -1; - if (sk == SK_MAGIC) - return 0; /* no caps on magic */ - if (rule < 0 || gamecookie != global.cookie) { - gamecookie = global.cookie; - rule = get_param_int(global.parameters, "skill.maxlevel", 0); - } - return rule; + if (sk == SK_MAGIC) return 0; /* no caps on magic */ + return get_param_int(global.parameters, "skill.maxlevel", 0); } int NMRTimeout(void) { - static int gamecookie = -1; - static int rule = -1; - if (rule < 0 || gamecookie != global.cookie) { - gamecookie = global.cookie; - rule = get_param_int(global.parameters, "nmr.timeout", 0); - } - return rule; + return get_param_int(global.parameters, "nmr.timeout", 0); } race_t old_race(const struct race * rc) @@ -1294,103 +1281,44 @@ int cmp_current_owner(const building * b, const building * a) bool rule_stealth_other(void) { - static int gamecookie = -1; - static int rule = -1; - if (rule < 0 || gamecookie != global.cookie) { - rule = get_param_int(global.parameters, "stealth.faction.other", 1); - gamecookie = global.cookie; - assert(rule >= 0); - } + int rule = get_param_int(global.parameters, "stealth.faction.other", 1); return rule != 0; } bool rule_stealth_anon(void) { - static int gamecookie = -1; - static int rule = -1; - if (rule < 0 || gamecookie != global.cookie) { - rule = get_param_int(global.parameters, "stealth.faction.anon", 1); - gamecookie = global.cookie; - assert(rule >= 0); - } + int rule = get_param_int(global.parameters, "stealth.faction.anon", 1); return rule != 0; } bool rule_region_owners(void) { - static int gamecookie = -1; - static int rule = -1; - if (rule < 0 || gamecookie != global.cookie) { - rule = get_param_int(global.parameters, "rules.region_owners", 0); - gamecookie = global.cookie; - assert(rule >= 0); - } + int rule = get_param_int(global.parameters, "rules.region_owners", 0); return rule != 0; } -bool rule_auto_taxation(void) -{ - static int gamecookie = -1; - static int rule = -1; - if (rule < 0 || gamecookie != global.cookie) { - rule = - get_param_int(global.parameters, "rules.economy.taxation", 0); - gamecookie = global.cookie; - assert(rule >= 0); - } - return rule; -} - int rule_blessed_harvest(void) { - static int gamecookie = -1; - static int rule = -1; - if (rule < 0 || gamecookie != global.cookie) { - rule = - get_param_int(global.parameters, "rules.blessed_harvest.flags", - HARVEST_WORK); - gamecookie = global.cookie; - assert(rule >= 0); - } + int rule = get_param_int(global.parameters, "rules.blessed_harvest.flags", + HARVEST_WORK); + assert(rule >= 0); return rule; } int rule_alliance_limit(void) { - static int gamecookie = -1; - static int rule = -1; - if (rule < 0 || gamecookie != global.cookie) { - rule = get_param_int(global.parameters, "rules.limit.alliance", 0); - gamecookie = global.cookie; - assert(rule >= 0); - } + int rule = get_param_int(global.parameters, "rules.limit.alliance", 0); + assert(rule >= 0); return rule; } int rule_faction_limit(void) { - static int gamecookie = -1; - static int rule = -1; - if (rule < 0 || gamecookie != global.cookie) { - rule = get_param_int(global.parameters, "rules.limit.faction", 0); - gamecookie = global.cookie; - assert(rule >= 0); - } + int rule = get_param_int(global.parameters, "rules.limit.faction", 0); + assert(rule >= 0); return rule; } -bool rule_transfermen(void) -{ - static int gamecookie = -1; - static int rule = -1; - if (rule < 0 || gamecookie != global.cookie) { - rule = get_param_int(global.parameters, "rules.transfermen", 1); - gamecookie = global.cookie; - assert(rule >= 0); - } - return rule != 0; -} - static int default_wage(const region * r, const faction * f, const race * rc, int in_turn) { diff --git a/src/kernel/config.h b/src/kernel/config.h index 5eddd1ff3..80559ad89 100644 --- a/src/kernel/config.h +++ b/src/kernel/config.h @@ -151,7 +151,6 @@ extern "C" { int cmp_current_owner(const struct building *b, const struct building *bother); - bool rule_transfermen(void); bool rule_region_owners(void); bool rule_stealth_other(void); // units can pretend to be another faction, TARNE PARTEI bool rule_stealth_anon(void); // units can anonymize their faction, TARNE PARTEI [NICHT] @@ -160,7 +159,6 @@ extern "C" { #define HARVEST_WORK 0x00 #define HARVEST_TAXES 0x01 int rule_blessed_harvest(void); - bool rule_auto_taxation(void); #define GIVE_SELF 1 #define GIVE_PEASANTS 2 #define GIVE_LUXURIES 4 diff --git a/src/kernel/unit.c b/src/kernel/unit.c index a72745eea..6565c8f48 100644 --- a/src/kernel/unit.c +++ b/src/kernel/unit.c @@ -1366,7 +1366,7 @@ int eff_skill(const unit * u, const skill *sv, const region *r) if (mlevel > 0) { int skillcap = SkillCap(sv->id); - if (skillcap && mlevel > skillcap) { + if (skillcap>0 && mlevel > skillcap) { return skillcap; } return mlevel; diff --git a/src/study.c b/src/study.c index b798277ca..32b9b5029 100644 --- a/src/study.c +++ b/src/study.c @@ -184,7 +184,7 @@ static building *active_building(const unit *u, const struct building_type *btyp static int teach_unit(unit * teacher, unit * student, int nteaching, skill_t sk, -bool report, int *academy) + bool report, int *academy) { teaching_info *teach = NULL; attrib *a; @@ -343,7 +343,8 @@ int teach_cmd(unit * u, struct order *ord) for (student = r->units; teaching && student; student = student->next) { if (LongHunger(student)) { continue; - } else if (student->faction == u->faction) { + } + else if (student->faction == u->faction) { if (getkeyword(student->thisorder) == K_STUDY) { /* Input ist nun von student->thisorder !! */ init_order(student->thisorder); @@ -509,7 +510,7 @@ static double study_speedup(unit * u, skill_t s, study_rule_t rule) if (rule == STUDY_FASTER) { for (i = 0; i != u->skill_size; ++i) { skill *sv = u->skills + i; - if (sv->id == s){ + if (sv->id == s) { learnweeks = sv->level * (sv->level + 1) / 2.0; if (learnweeks < turn / 3.0) { return 2.0; @@ -534,7 +535,7 @@ static double study_speedup(unit * u, skill_t s, study_rule_t rule) int study_cmd(unit * u, order * ord) { region *r = u->region; - int p; + int p, cap; magic_t mtyp; int l; int studycost, days; @@ -569,7 +570,8 @@ int study_cmd(unit * u, order * ord) cmistake(u, ord, 77, MSG_EVENT); return 0; } - if (SkillCap(sk) && SkillCap(sk) <= effskill(u, sk, 0)) { + cap = SkillCap(sk); + if (cap > 0 && cap <= effskill(u, sk, 0)) { cmistake(u, ord, 771, MSG_EVENT); return 0; }