Replace pops[] by nat_budget[].oldowned_civs.
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
/* 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];
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);
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;
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);
#include "update.h"
struct budget nat_budget[MAXNOC];
-int pops[MAXNOC];
int tpops[MAXNOC];
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;
*/
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
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);
}
}
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;
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
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];
}
}
}