forked from github/server
set defaults in the race constructor, add test.
This commit is contained in:
parent
9f542e081b
commit
dadf7734a5
3 changed files with 43 additions and 13 deletions
|
@ -177,7 +177,11 @@ race *rc_get_or_create(const char *zName)
|
||||||
|
|
||||||
rc = (race *)calloc(sizeof(race), 1);
|
rc = (race *)calloc(sizeof(race), 1);
|
||||||
rc->hitpoints = 1;
|
rc->hitpoints = 1;
|
||||||
|
rc->weight = PERSON_WEIGHT;
|
||||||
|
rc->capacity = 540;
|
||||||
rc->recruit_multi = 1.0F;
|
rc->recruit_multi = 1.0F;
|
||||||
|
rc->regaura = 1.0F;
|
||||||
|
rc->speed = 1.0F;
|
||||||
if (strchr(zName, ' ') != NULL) {
|
if (strchr(zName, ' ') != NULL) {
|
||||||
log_error("race '%s' has an invalid name. remove spaces\n", zName);
|
log_error("race '%s' has an invalid name. remove spaces\n", zName);
|
||||||
assert(strchr(zName, ' ') == NULL);
|
assert(strchr(zName, ' ') == NULL);
|
||||||
|
|
|
@ -8,17 +8,43 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
static void test_rc_name(CuTest *tc) {
|
static void test_rc_name(CuTest *tc) {
|
||||||
struct race *rc = test_create_race("human");
|
struct race *rc;
|
||||||
|
test_cleanup();
|
||||||
|
rc = test_create_race("human");
|
||||||
CuAssertStrEquals(tc, "race::human", rc_name_s(rc, NAME_SINGULAR));
|
CuAssertStrEquals(tc, "race::human", rc_name_s(rc, NAME_SINGULAR));
|
||||||
CuAssertStrEquals(tc, "race::human_p", rc_name_s(rc, NAME_PLURAL));
|
CuAssertStrEquals(tc, "race::human_p", rc_name_s(rc, NAME_PLURAL));
|
||||||
CuAssertStrEquals(tc, "race::human_d", rc_name_s(rc, NAME_DEFINITIVE));
|
CuAssertStrEquals(tc, "race::human_d", rc_name_s(rc, NAME_DEFINITIVE));
|
||||||
CuAssertStrEquals(tc, "race::human_x", rc_name_s(rc, NAME_CATEGORY));
|
CuAssertStrEquals(tc, "race::human_x", rc_name_s(rc, NAME_CATEGORY));
|
||||||
|
test_cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_rc_defaults(CuTest *tc) {
|
||||||
|
struct race *rc;
|
||||||
|
test_cleanup();
|
||||||
|
rc = rc_get_or_create("human");
|
||||||
|
CuAssertStrEquals(tc, "human", rc->_name);
|
||||||
|
CuAssertDblEquals(tc, 0.0, rc->magres, 0.0);
|
||||||
|
CuAssertDblEquals(tc, 0.0, rc->maxaura, 0.0);
|
||||||
|
CuAssertDblEquals(tc, 1.0, rc->recruit_multi, 0.0);
|
||||||
|
CuAssertDblEquals(tc, 1.0, rc->regaura, 0.0);
|
||||||
|
CuAssertDblEquals(tc, 1.0, rc->speed, 0.0);
|
||||||
|
CuAssertIntEquals(tc, 0, rc->flags);
|
||||||
|
CuAssertIntEquals(tc, 0, rc->recruitcost);
|
||||||
|
CuAssertIntEquals(tc, 0, rc->maintenance);
|
||||||
|
CuAssertIntEquals(tc, 540, rc->capacity);
|
||||||
|
CuAssertIntEquals(tc, 1, rc->hitpoints);
|
||||||
|
CuAssertIntEquals(tc, 0, rc->armor);
|
||||||
|
CuAssertIntEquals(tc, 0, rc->at_bonus);
|
||||||
|
CuAssertIntEquals(tc, 0, rc->df_bonus);
|
||||||
|
CuAssertIntEquals(tc, PERSON_WEIGHT, rc->weight);
|
||||||
|
test_cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
CuSuite *get_race_suite(void)
|
CuSuite *get_race_suite(void)
|
||||||
{
|
{
|
||||||
CuSuite *suite = CuSuiteNew();
|
CuSuite *suite = CuSuiteNew();
|
||||||
SUITE_ADD_TEST(suite, test_rc_name);
|
SUITE_ADD_TEST(suite, test_rc_name);
|
||||||
|
SUITE_ADD_TEST(suite, test_rc_defaults);
|
||||||
return suite;
|
return suite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1626,22 +1626,22 @@ static int parse_races(xmlDocPtr doc)
|
||||||
rc->def_damage = _strdup((const char *)propValue);
|
rc->def_damage = _strdup((const char *)propValue);
|
||||||
xmlFree(propValue);
|
xmlFree(propValue);
|
||||||
|
|
||||||
rc->magres = (float)xml_fvalue(node, "magres", 0.0);
|
rc->magres = (float)xml_fvalue(node, "magres", rc->magres);
|
||||||
rc->maxaura = (float)xml_fvalue(node, "maxaura", 0.0);
|
rc->maxaura = (float)xml_fvalue(node, "maxaura", rc->maxaura);
|
||||||
rc->regaura = (float)xml_fvalue(node, "regaura", 1.0);
|
rc->regaura = (float)xml_fvalue(node, "regaura", rc->regaura);
|
||||||
rc->recruitcost = xml_ivalue(node, "recruitcost", 0);
|
rc->recruitcost = xml_ivalue(node, "recruitcost", rc->recruitcost);
|
||||||
rc->maintenance = xml_ivalue(node, "maintenance", 0);
|
rc->maintenance = xml_ivalue(node, "maintenance", rc->maintenance);
|
||||||
rc->weight = xml_ivalue(node, "weight", PERSON_WEIGHT);
|
rc->weight = xml_ivalue(node, "weight", rc->weight);
|
||||||
rc->capacity = xml_ivalue(node, "capacity", 540);
|
rc->capacity = xml_ivalue(node, "capacity", rc->capacity);
|
||||||
rc->speed = (float)xml_fvalue(node, "speed", 1.0F);
|
rc->speed = (float)xml_fvalue(node, "speed", rc->speed);
|
||||||
rc->hitpoints = xml_ivalue(node, "hp", 0);
|
rc->hitpoints = xml_ivalue(node, "hp", rc->hitpoints);
|
||||||
rc->armor = (char)xml_ivalue(node, "ac", 0);
|
rc->armor = (char)xml_ivalue(node, "ac", rc->armor);
|
||||||
study_speed_base = xml_ivalue(node, "studyspeed", 0);
|
study_speed_base = xml_ivalue(node, "studyspeed", 0);
|
||||||
|
|
||||||
rc->at_default = (char)xml_ivalue(node, "unarmedattack", -2);
|
rc->at_default = (char)xml_ivalue(node, "unarmedattack", -2);
|
||||||
rc->df_default = (char)xml_ivalue(node, "unarmeddefense", -2);
|
rc->df_default = (char)xml_ivalue(node, "unarmeddefense", -2);
|
||||||
rc->at_bonus = (char)xml_ivalue(node, "attackmodifier", 0);
|
rc->at_bonus = (char)xml_ivalue(node, "attackmodifier", rc->at_bonus);
|
||||||
rc->df_bonus = (char)xml_ivalue(node, "defensemodifier", 0);
|
rc->df_bonus = (char)xml_ivalue(node, "defensemodifier", rc->df_bonus);
|
||||||
|
|
||||||
if (!xml_bvalue(node, "playerrace", false))
|
if (!xml_bvalue(node, "playerrace", false))
|
||||||
rc->flags |= RCF_NPC;
|
rc->flags |= RCF_NPC;
|
||||||
|
|
Loading…
Reference in a new issue