]> git.pond.sub.org Git - empserver/commitdiff
update: Track oldowned civilians in nat_budget[]
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 19 Jun 2016 10:31:16 +0000 (12:31 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 6 Aug 2017 18:08:29 +0000 (20:08 +0200)
Replace pops[] by nat_budget[].oldowned_civs.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
include/update.h
src/lib/commands/budg.c
src/lib/update/main.c
src/lib/update/nat.c
src/lib/update/prepare.c
src/lib/update/ship.c

index a81684e33a4cfb536434df2437d6aeac89df8b5a..1d93a05164eb0e6c5241470cf7b30d15ed614e6f 100644 (file)
@@ -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);
index 2967733296bf6e5976dc1d174c99277c6cf6766f..63003faee3d93828d82d098dfa2bc363eca8539d 100644 (file)
@@ -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);
 
index 8722edb3563cffdcced0be5d19a5b933c85a726d..643b9d5117c697e0660420556ce491b45e57af47 100644 (file)
@@ -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;
index 5d2fa7dcefe8debedd966ac538c9ff452cb3e59c..349c562e84ff3de54837bfbf4834648e2b99abf0 100644 (file)
@@ -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
index 06a2bd9976dea031fd59b2ada28749f8ab42554c..e5683a89cded05444420efeadbb5fc098fab40dc 100644 (file)
@@ -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
index da40d0592eb15c9405a5002cb257389ce33c82ff..31333c5f210065714627fbff189d8d5cc4423515 100644 (file)
@@ -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];
        }
     }
 }