From 7951e91e3f0f31fafb1c90e37dac4ad2096c5e7f Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 22 Jun 2016 19:56:02 +0200 Subject: [PATCH] update: Factor out ship and land unit plague plague code Factor plague_ship() out of upd_ship(), and plague_land() out of upd_land(). Signed-off-by: Markus Armbruster --- src/lib/update/land.c | 37 ++++++++++++++++++++++--------------- src/lib/update/ship.c | 37 ++++++++++++++++++++++--------------- 2 files changed, 44 insertions(+), 30 deletions(-) diff --git a/src/lib/update/land.c b/src/lib/update/land.c index 5929c4a7..ea2e7d08 100644 --- a/src/lib/update/land.c +++ b/src/lib/update/land.c @@ -49,6 +49,7 @@ #include "update.h" static void upd_land(struct lndstr *, int, struct bp *, int); +static void plague_land(struct lndstr *, int); static void landrepair(struct lndstr *, struct natstr *, struct bp *, int, struct budget *); static int feed_land(struct lndstr *, int); @@ -87,7 +88,6 @@ upd_land(struct lndstr *lp, int etus, struct bp *bp, int build) struct budget *budget = &nat_budget[lp->lnd_own]; struct lchrstr *lcp = &lchr[lp->lnd_type]; struct natstr *np = getnatp(lp->lnd_own); - int pstage, ptime; int min = morale_base - (int)np->nat_level[NAT_HLEV]; int n, mult, eff_lost; double cost; @@ -133,24 +133,31 @@ upd_land(struct lndstr *lp, int etus, struct bp *bp, int build) if (n > 10) nreport(lp->lnd_own, N_DIE_FAMINE, 0, 1); } - /* - * do plague stuff. plague can't break out on land units, - * but it can still kill people on them. - */ - pstage = lp->lnd_pstage; - ptime = lp->lnd_ptime; - if (pstage != PLG_HEALTHY) { - n = plague_people(np, lp->lnd_item, &pstage, &ptime, etus); - if (n != PLG_HEALTHY) - plague_report(lp->lnd_own, n, pstage, ptime, etus, - "on", prland(lp)); - lp->lnd_pstage = pstage; - lp->lnd_ptime = ptime; - } + plague_land(lp, etus); } /* end !player->simulation */ } } +void +plague_land(struct lndstr *lp, int etus) +{ + struct natstr *np = getnatp(lp->lnd_own); + int pstage, ptime; + int n; + + /* Plague can't break out on land units, but it can still kill people */ + pstage = lp->lnd_pstage; + ptime = lp->lnd_ptime; + if (pstage != PLG_HEALTHY) { + n = plague_people(np, lp->lnd_item, &pstage, &ptime, etus); + if (n != PLG_HEALTHY) + plague_report(lp->lnd_own, n, pstage, ptime, etus, + "on", prland(lp)); + lp->lnd_pstage = pstage; + lp->lnd_ptime = ptime; + } +} + static void landrepair(struct lndstr *land, struct natstr *np, struct bp *bp, int etus, struct budget *budget) diff --git a/src/lib/update/ship.c b/src/lib/update/ship.c index 53f1929e..54bb5fb8 100644 --- a/src/lib/update/ship.c +++ b/src/lib/update/ship.c @@ -51,6 +51,7 @@ #include "update.h" static void upd_ship(struct shpstr *, int, struct bp *, int); +static void plague_ship(struct shpstr *, int); static void shiprepair(struct shpstr *, struct natstr *, struct bp *, int, struct budget *); static void ship_produce(struct shpstr *, int, struct budget *); @@ -86,7 +87,6 @@ upd_ship(struct shpstr *sp, int etus, struct bp *bp, int build) struct budget *budget = &nat_budget[sp->shp_own]; struct mchrstr *mp = &mchr[sp->shp_type]; struct natstr *np = getnatp(sp->shp_own); - int pstage, ptime; int n, mult, eff_lost; double cost; @@ -124,24 +124,31 @@ upd_ship(struct shpstr *sp, int etus, struct bp *bp, int build) if (n > 10) nreport(sp->shp_own, N_DIE_FAMINE, 0, 1); } - /* - * do plague stuff. plague can't break out on ships, - * but it can still kill people. - */ - pstage = sp->shp_pstage; - ptime = sp->shp_ptime; - if (pstage != PLG_HEALTHY) { - n = plague_people(np, sp->shp_item, &pstage, &ptime, etus); - if (n != PLG_HEALTHY) - plague_report(sp->shp_own, n, pstage, ptime, etus, - "on", prship(sp)); - sp->shp_pstage = pstage; - sp->shp_ptime = ptime; - } + plague_ship(sp, etus); } } } +static void +plague_ship(struct shpstr *sp, int etus) +{ + struct natstr *np = getnatp(sp->shp_own); + int pstage, ptime; + int n; + + /* Plague can't break out on ships, but it can still kill people */ + pstage = sp->shp_pstage; + ptime = sp->shp_ptime; + if (pstage != PLG_HEALTHY) { + n = plague_people(np, sp->shp_item, &pstage, &ptime, etus); + if (n != PLG_HEALTHY) + plague_report(sp->shp_own, n, pstage, ptime, etus, + "on", prship(sp)); + sp->shp_pstage = pstage; + sp->shp_ptime = ptime; + } +} + /* * idea is: a sector full of workers can fix up eight * battleships +8 % eff each etu. This will cost around