forked from github/server
refactor handling of race.param in XML
This commit is contained in:
parent
250227cad2
commit
70b12ae6ca
|
@ -758,7 +758,7 @@ int count_migrants(const faction * f)
|
||||||
|
|
||||||
int count_maxmigrants(const faction * f)
|
int count_maxmigrants(const faction * f)
|
||||||
{
|
{
|
||||||
int formula = get_param_int(f->race->parameters, "migrants.formula", 0);
|
int formula = f->race->parameters ? get_param_int(f->race->parameters, "migrants.formula", MIGRANTS_NONE) : MIGRANTS_NONE;
|
||||||
|
|
||||||
if (formula == MIGRANTS_LOG10) {
|
if (formula == MIGRANTS_LOG10) {
|
||||||
int nsize = count_all(f);
|
int nsize = count_all(f);
|
||||||
|
|
|
@ -1573,17 +1573,6 @@ static int parse_spells(xmlDocPtr doc)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void parse_param(struct param **params, xmlNodePtr node)
|
|
||||||
{
|
|
||||||
xmlChar *propName = xmlGetProp(node, BAD_CAST "name");
|
|
||||||
xmlChar *propValue = xmlGetProp(node, BAD_CAST "value");
|
|
||||||
|
|
||||||
set_param(params, (const char *)propName, (const char *)propValue);
|
|
||||||
|
|
||||||
xmlFree(propName);
|
|
||||||
xmlFree(propValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void parse_ai(race * rc, xmlNodePtr node)
|
static void parse_ai(race * rc, xmlNodePtr node)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
|
@ -1737,12 +1726,22 @@ static int parse_races(xmlDocPtr doc)
|
||||||
if (xml_bvalue(node, "noattack", false))
|
if (xml_bvalue(node, "noattack", false))
|
||||||
rc->battle_flags |= BF_NO_ATTACK;
|
rc->battle_flags |= BF_NO_ATTACK;
|
||||||
|
|
||||||
|
rc->recruit_multi = 1.0;
|
||||||
for (child = node->children; child; child = child->next) {
|
for (child = node->children; child; child = child->next) {
|
||||||
if (strcmp((const char *)child->name, "ai") == 0) {
|
if (strcmp((const char *)child->name, "ai") == 0) {
|
||||||
parse_ai(rc, child);
|
parse_ai(rc, child);
|
||||||
}
|
}
|
||||||
else if (strcmp((const char *)child->name, "param") == 0) {
|
else if (strcmp((const char *)child->name, "param") == 0) {
|
||||||
parse_param(&rc->parameters, child);
|
xmlChar *propName = xmlGetProp(child, BAD_CAST "name");
|
||||||
|
xmlChar *propValue = xmlGetProp(child, BAD_CAST "value");
|
||||||
|
if (strcmp((const char *)propName, "recruit_multi")==0) {
|
||||||
|
rc->recruit_multi = atof((const char *)propValue);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
set_param(&rc->parameters, (const char *)propName, (const char *)propValue);
|
||||||
|
}
|
||||||
|
xmlFree(propName);
|
||||||
|
xmlFree(propValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rc->recruit_multi = get_param_flt(rc->parameters, "recruit_multi", 1.0);
|
rc->recruit_multi = get_param_flt(rc->parameters, "recruit_multi", 1.0);
|
||||||
|
|
|
@ -59,7 +59,7 @@ static void help_feed(unit * donor, unit * u, int *need_p)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *hunger_damage(const race *rc) {
|
static const char *hunger_damage(const race *rc) {
|
||||||
const char * damage = get_param(rc->parameters, "hunger.damage");
|
const char * damage = rc->parameters ? get_param(rc->parameters, "hunger.damage") : NULL;
|
||||||
if (!damage) {
|
if (!damage) {
|
||||||
damage = config_get("hunger.damage");
|
damage = config_get("hunger.damage");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue