From 6eb4fd3cbfa021f22003ea9d7a4e91f7024443de Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 19 Jun 2016 12:31:16 +0200 Subject: [PATCH] update: Track oldowned civilians in nat_budget[] Replace pops[] by nat_budget[].oldowned_civs. Signed-off-by: Markus Armbruster --- include/update.h | 5 +++-- src/lib/commands/budg.c | 5 ++--- src/lib/update/main.c | 2 -- src/lib/update/nat.c | 2 +- src/lib/update/prepare.c | 19 ++++++------------- src/lib/update/ship.c | 2 +- 6 files changed, 13 insertions(+), 22 deletions(-) diff --git a/include/update.h b/include/update.h index a81684e3..1d93a051 100644 --- a/include/update.h +++ b/include/update.h @@ -67,11 +67,12 @@ struct budget { /* treasury */ int start_money; /* at beginning of update */ double money; /* current */ + /* population before growth */ + int oldowned_civs; }; /* main.c */ extern struct budget nat_budget[MAXNOC]; -extern int pops[MAXNOC]; extern int tpops[MAXNOC]; /* nat.c */ extern float levels[MAXNOC][4]; @@ -127,7 +128,7 @@ extern void populace(struct sctstr *, int); extern int total_work(int, int, int, int, int, int); /* prepare.c */ extern void prepare_sects(int); -extern void tax(struct sctstr *, int, int *); +extern void tax(struct sctstr *, int); extern void upd_slmilcosts(int, natid); extern void bank_income(struct sctstr *, int); extern void pay_reserve(struct natstr *, int); diff --git a/src/lib/commands/budg.c b/src/lib/commands/budg.c index 29677332..63003fae 100644 --- a/src/lib/commands/budg.c +++ b/src/lib/commands/budg.c @@ -145,7 +145,6 @@ calc_all(void) struct budget *budget = &nat_budget[player->cnum]; struct natstr *np; struct bp *bp; - int pop = 0; int n; struct sctstr *sp; int etu = etu_per_update; @@ -159,12 +158,12 @@ calc_all(void) bp_set_from_sect(bp, sp); if (sp->sct_own == player->cnum) { sp->sct_updated = 0; - tax(sp, etu, &pop); + tax(sp, etu); if (sp->sct_type == SCT_BANK) bank_income(sp, etu); } } - tpops[player->cnum] = pop; + tpops[player->cnum] = budget->oldowned_civs; upd_slmilcosts(etu, player->cnum); pay_reserve(np, etu); diff --git a/src/lib/update/main.c b/src/lib/update/main.c index 8722edb3..643b9d51 100644 --- a/src/lib/update/main.c +++ b/src/lib/update/main.c @@ -47,7 +47,6 @@ #include "update.h" struct budget nat_budget[MAXNOC]; -int pops[MAXNOC]; int tpops[MAXNOC]; void @@ -84,7 +83,6 @@ update_main(void) * happiness, and printing out the state of the nation) */ memset(nat_budget, 0, sizeof(nat_budget)); - memset(pops, 0, sizeof(pops)); for (n = 0; n < MAXNOC; n++) { if (!(np = getnatp(n))) continue; diff --git a/src/lib/update/nat.c b/src/lib/update/nat.c index 5d2fa7dc..349c562e 100644 --- a/src/lib/update/nat.c +++ b/src/lib/update/nat.c @@ -149,7 +149,7 @@ prod_nat(int etu) */ hap_edu = np->nat_level[NAT_ELEV]; hap_edu = 1.5 - ((hap_edu + 10.0) / (hap_edu + 20.0)); - pop = pops[n] + 1; + pop = nat_budget[n].oldowned_civs + 1; /* * get per-population happiness and education * see what the total per-civilian production is diff --git a/src/lib/update/prepare.c b/src/lib/update/prepare.c index 06a2bd99..e5683a89 100644 --- a/src/lib/update/prepare.c +++ b/src/lib/update/prepare.c @@ -94,7 +94,7 @@ prepare_sects(int etu) guerrilla(sp); do_plague(sp, etu); populace(sp, etu); - tax(sp, etu, &pops[sp->sct_own]); + tax(sp, etu); if (sp->sct_type == SCT_BANK) bank_income(sp, etu); } @@ -105,17 +105,16 @@ prepare_sects(int etu) } void -tax(struct sctstr *sp, int etu, int *pop) +tax(struct sctstr *sp, int etu) { struct budget *budget = &nat_budget[sp->sct_own]; double civ_tax, uw_tax, mil_pay; civ_tax = sp->sct_item[I_CIVIL] * etu * money_civ * sp->sct_effic / 100; - /* - * captured civs only pay 1/4 taxes - */ - if (sp->sct_own != sp->sct_oldown) - civ_tax /= 4; + if (sp->sct_own == sp->sct_oldown) + budget->oldowned_civs += sp->sct_item[I_CIVIL]; + else + civ_tax /= 4; /* captured civs pay less */ budget->civ.count += sp->sct_item[I_CIVIL]; budget->civ.money += civ_tax; budget->money += civ_tax; @@ -129,12 +128,6 @@ tax(struct sctstr *sp, int etu, int *pop) budget->mil.count += sp->sct_item[I_MILIT]; budget->mil.money += mil_pay; budget->money += mil_pay; - - /* - * only non-captured civs add to census for nation - */ - if (sp->sct_oldown == sp->sct_own) - *pop += sp->sct_item[I_CIVIL]; } void diff --git a/src/lib/update/ship.c b/src/lib/update/ship.c index da40d059..31333c5f 100644 --- a/src/lib/update/ship.c +++ b/src/lib/update/ship.c @@ -224,7 +224,7 @@ upd_ship(struct shpstr *sp, int etus, struct bp *bp, int build) sp->shp_pstage = pstage; sp->shp_ptime = ptime; } - pops[sp->shp_own] += sp->shp_item[I_CIVIL]; + budget->oldowned_civs += sp->shp_item[I_CIVIL]; } } }