budget: Fix treasury tracking
The update simply updates each nation's nat_money as it goes. Works. Except it doesn't update when it runs on behalf of budget. But it still checks nat_money to determine whether the nation is solvent. These checks are all broken. Leads to massive mispredictions when you'd go broke or solvent during a real update. Track money unconditionally in nat_budget[].money. Delay update of nat_money until prod_nat(). Replace separate money[] by new nat_budget[].start_money. Closes bug#235. Remaining difference between budget and update in the update test: * #1: budget mispredicts plane #100 gets built (to be fixed) * #2: budget shows ship, plane and land unit maintenance when broke, but update damages them instead (correct) * #2: sector -14,0 converts, quadrupling its taxes (correct) * #4 & #5: bank with dust and bars taken over by che (correct) * #4: plague deaths (correct) Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
058268595f
commit
10789a0365
14 changed files with 78 additions and 99 deletions
|
@ -64,11 +64,13 @@ struct budget {
|
|||
struct budg_item bm[BUDG_BLD_MAX + 1];
|
||||
/* population, taxes, military payroll, bank interest */
|
||||
struct budg_item civ, mil, uw, bars;
|
||||
/* treasury */
|
||||
int start_money; /* at beginning of update */
|
||||
int money; /* current */
|
||||
};
|
||||
|
||||
/* main.c */
|
||||
extern struct budget nat_budget[MAXNOC];
|
||||
extern int money[MAXNOC];
|
||||
extern int pops[MAXNOC];
|
||||
extern int tpops[MAXNOC];
|
||||
/* nat.c */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue