error message whenever we recruit less than ordered.

This commit is contained in:
Enno Rehling 2021-03-11 19:26:50 +01:00
parent 1448bc4e98
commit c0304ff572
3 changed files with 12 additions and 8 deletions

View File

@ -549,7 +549,7 @@ static void test_recruit(CuTest *tc) {
CuAssertIntEquals(tc, 1, u->number); CuAssertIntEquals(tc, 1, u->number);
CuAssertIntEquals(tc, 1, f->num_people); CuAssertIntEquals(tc, 1, f->num_people);
CuAssertIntEquals(tc, 1, f->num_units); CuAssertIntEquals(tc, 1, f->num_units);
add_recruits(u, 1, 1); add_recruits(u, 1, 1, 1);
CuAssertIntEquals(tc, 2, u->number); CuAssertIntEquals(tc, 2, u->number);
CuAssertIntEquals(tc, 2, f->num_people); CuAssertIntEquals(tc, 2, f->num_people);
CuAssertIntEquals(tc, 1, f->num_units); CuAssertIntEquals(tc, 1, f->num_units);
@ -557,9 +557,13 @@ static void test_recruit(CuTest *tc) {
CuAssertPtrEquals(tc, NULL, u->nextF); CuAssertPtrEquals(tc, NULL, u->nextF);
CuAssertPtrEquals(tc, NULL, u->prevF); CuAssertPtrEquals(tc, NULL, u->prevF);
CuAssertPtrEquals(tc, NULL, test_find_messagetype(f->msgs, "recruit")); CuAssertPtrEquals(tc, NULL, test_find_messagetype(f->msgs, "recruit"));
add_recruits(u, 1, 2); add_recruits(u, 1, 2, 2);
CuAssertIntEquals(tc, 3, u->number); CuAssertIntEquals(tc, 3, u->number);
CuAssertPtrNotNull(tc, test_find_messagetype(f->msgs, "recruit")); CuAssertPtrNotNull(tc, test_find_messagetype(f->msgs, "recruit"));
test_clear_messages(f);
add_recruits(u, 1, 1, 2);
CuAssertIntEquals(tc, 4, u->number);
CuAssertPtrNotNull(tc, test_find_messagetype(f->msgs, "recruit"));
test_teardown(); test_teardown();
} }

View File

@ -151,7 +151,7 @@ static recruitment *select_recruitment(recruit_request ** rop,
return recruits; return recruits;
} }
void add_recruits(unit * u, int number, int wanted) void add_recruits(unit * u, int number, int wanted, int ordered)
{ {
region *r = u->region; region *r = u->region;
assert(number <= wanted); assert(number <= wanted);
@ -178,9 +178,9 @@ void add_recruits(unit * u, int number, int wanted)
remove_unit(&r->units, unew); remove_unit(&r->units, unew);
} }
} }
if (number < wanted) { if (number < ordered) {
ADDMSG(&u->faction->msgs, msg_message("recruit", ADDMSG(&u->faction->msgs, msg_message("recruit",
"unit region amount want", u, r, number, wanted)); "unit region amount want", u, r, number, u->wants));
} }
} }
@ -265,7 +265,7 @@ static int do_recruiting(recruitment * recruits, int available)
/* unit is empty, dead, and cannot recruit */ /* unit is empty, dead, and cannot recruit */
number = 0; number = 0;
} }
add_recruits(u, number, req->qty); add_recruits(u, number, req->qty, u->wants);
if (number > 0) { if (number > 0) {
int dec = (int)(number * multi); int dec = (int)(number * multi);
if ((rc->ec_flags & ECF_REC_ETHEREAL) == 0) { if ((rc->ec_flags & ECF_REC_ETHEREAL) == 0) {
@ -406,6 +406,7 @@ static void recruit_cmd(unit * u, struct order *ord, recruit_request ** recruito
} }
} }
u->wants = n;
if (recruitcost < 0) { if (recruitcost < 0) {
rc = u_race(u); rc = u_race(u);
recruitcost = recruit_cost(f, rc); recruitcost = recruit_cost(f, rc);
@ -452,7 +453,6 @@ static void recruit_cmd(unit * u, struct order *ord, recruit_request ** recruito
} }
u_setrace(u, rc); u_setrace(u, rc);
u->wants = n;
o = (recruit_request *)calloc(1, sizeof(recruit_request)); o = (recruit_request *)calloc(1, sizeof(recruit_request));
if (!o) abort(); if (!o) abort();
o->qty = n; o->qty = n;

View File

@ -13,7 +13,7 @@ extern "C" {
struct unit; struct unit;
struct message *can_recruit(struct unit *u, const struct race *rc, struct order *ord, int now); struct message *can_recruit(struct unit *u, const struct race *rc, struct order *ord, int now);
void add_recruits(struct unit * u, int number, int wanted); void add_recruits(struct unit* u, int number, int wanted, int ordered);
void recruit(struct region * r); void recruit(struct region * r);
#ifdef __cplusplus #ifdef __cplusplus