From 1dfe91ca96fb9c98e22e7a741a79ec0ff99e9199 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 22 Jun 2016 07:41:40 +0200 Subject: [PATCH] update: Factor out common plague reporting No functional change, except the "PLAGUE deaths" message for sectors loses its period. Signed-off-by: Markus Armbruster --- include/update.h | 1 + src/lib/update/land.c | 43 ++------------------ src/lib/update/plague.c | 86 ++++++++++++++++++++++------------------ src/lib/update/ship.c | 44 ++------------------ tests/update/journal.log | 16 ++++---- 5 files changed, 62 insertions(+), 128 deletions(-) diff --git a/include/update.h b/include/update.h index 2c76540f..387ca769 100644 --- a/include/update.h +++ b/include/update.h @@ -119,6 +119,7 @@ extern void prod_nat(int); /* plague.c */ extern void do_plague(struct sctstr *, int); extern int plague_people(struct natstr *, short *, int *, int *, int); +extern void plague_report(natid, int, int, int, int, char *, char *); /* plane.c */ extern void prod_plane(int, int, struct bp *, int); /* populace.c */ diff --git a/src/lib/update/land.c b/src/lib/update/land.c index 0cc99ef2..5929c4a7 100644 --- a/src/lib/update/land.c +++ b/src/lib/update/land.c @@ -141,46 +141,9 @@ upd_land(struct lndstr *lp, int etus, struct bp *bp, int build) ptime = lp->lnd_ptime; if (pstage != PLG_HEALTHY) { n = plague_people(np, lp->lnd_item, &pstage, &ptime, etus); - switch (n) { - case PLG_DYING: - wu(0, lp->lnd_own, - "PLAGUE deaths reported on %s\n", prland(lp)); - nreport(lp->lnd_own, N_DIE_PLAGUE, 0, 1); - break; - case PLG_INFECT: - wu(0, lp->lnd_own, "%s battling PLAGUE\n", prland(lp)); - break; - case PLG_INCUBATE: - /* Are we still incubating? */ - if (n == pstage) { - /* Yes. Will it turn "infectious" next time? */ - if (ptime <= etus) { - /* Yes. Report an outbreak. */ - wu(0, lp->lnd_own, - "Outbreak of PLAGUE on %s!\n", prland(lp)); - nreport(lp->lnd_own, N_OUT_PLAGUE, 0, 1); - } - } else { - /* It has already moved on to "infectious" */ - wu(0, lp->lnd_own, - "%s battling PLAGUE\n", prland(lp)); - } - break; - case PLG_EXPOSED: - /* Has the plague moved to "incubation" yet? */ - if (n != pstage) { - /* Yes. Will it turn "infectious" next time? */ - if (ptime <= etus) { - /* Yes. Report an outbreak. */ - wu(0, lp->lnd_own, - "Outbreak of PLAGUE on %s!\n", prland(lp)); - nreport(lp->lnd_own, N_OUT_PLAGUE, 0, 1); - } - } - break; - default: - break; - } + if (n != PLG_HEALTHY) + plague_report(lp->lnd_own, n, pstage, ptime, etus, + "on", prland(lp)); lp->lnd_pstage = pstage; lp->lnd_ptime = ptime; } diff --git a/src/lib/update/plague.c b/src/lib/update/plague.c index 306ee6a3..1ec32114 100644 --- a/src/lib/update/plague.c +++ b/src/lib/update/plague.c @@ -65,45 +65,9 @@ do_plague(struct sctstr *sp, int etu) ptime = 0; } else { n = plague_people(np, sp->sct_item, &pstage, &ptime, etu); - switch (n) { - case PLG_DYING: - wu(0, sp->sct_own, "PLAGUE deaths reported in %s.\n", - ownxy(sp)); - nreport(sp->sct_own, N_DIE_PLAGUE, 0, 1); - break; - case PLG_INFECT: - wu(0, sp->sct_own, "%s battling PLAGUE\n", ownxy(sp)); - break; - case PLG_INCUBATE: - /* Are we still incubating? */ - if (n == pstage) { - /* Yes. Will it turn "infectious" next time? */ - if (ptime <= etu) { - /* Yes. Report an outbreak. */ - wu(0, sp->sct_own, - "Outbreak of PLAGUE in %s!\n", ownxy(sp)); - nreport(sp->sct_own, N_OUT_PLAGUE, 0, 1); - } - } else { - /* It has already moved on to "infectious" */ - wu(0, sp->sct_own, "%s battling PLAGUE\n", ownxy(sp)); - } - break; - case PLG_EXPOSED: - /* Has the plague moved to "incubation" yet? */ - if (n != pstage) { - /* Yes. Will it turn "infectious" next time? */ - if (ptime <= etu) { - /* Yes. Report an outbreak. */ - wu(0, sp->sct_own, - "Outbreak of PLAGUE in %s!\n", ownxy(sp)); - nreport(sp->sct_own, N_OUT_PLAGUE, 0, 1); - } - } - break; - default: - break; - } + if (n != PLG_HEALTHY) + plague_report(sp->sct_own, n, pstage, ptime, etu, + "in", ownxy(sp)); } sp->sct_pstage = pstage; sp->sct_ptime = ptime; @@ -187,3 +151,47 @@ plague_people(struct natstr *np, short *vec, } return stage; } + +void +plague_report(natid victim, int new_pstage, int pstage, int ptime, + int etus, char *in_on, char *place) +{ + switch (new_pstage) { + case PLG_DYING: + wu(0, victim, "PLAGUE deaths reported %s %s\n", in_on, place); + nreport(victim, N_DIE_PLAGUE, 0, 1); + break; + case PLG_INFECT: + wu(0, victim, "%s battling PLAGUE\n", place); + break; + case PLG_INCUBATE: + /* Are we still incubating? */ + if (new_pstage == pstage) { + /* Yes. Will it turn "infectious" next time? */ + if (ptime <= etus) { + /* Yes. Report an outbreak. */ + wu(0, victim, + "Outbreak of PLAGUE %s %s!\n", in_on, place); + nreport(victim, N_OUT_PLAGUE, 0, 1); + } + } else { + /* It has already moved on to "infectious" */ + wu(0, victim, "%s battling PLAGUE\n", place); + } + break; + case PLG_EXPOSED: + /* Has the plague moved to "incubation" yet? */ + if (new_pstage != pstage) { + /* Yes. Will it turn "infectious" next time? */ + if (ptime <= etus) { + /* Yes. Report an outbreak. */ + wu(0, victim, + "Outbreak of PLAGUE %s %s!\n", in_on, place); + nreport(victim, N_OUT_PLAGUE, 0, 1); + } + } + break; + default: + break; + } +} diff --git a/src/lib/update/ship.c b/src/lib/update/ship.c index e4b4f184..53f1929e 100644 --- a/src/lib/update/ship.c +++ b/src/lib/update/ship.c @@ -132,47 +132,9 @@ upd_ship(struct shpstr *sp, int etus, struct bp *bp, int build) ptime = sp->shp_ptime; if (pstage != PLG_HEALTHY) { n = plague_people(np, sp->shp_item, &pstage, &ptime, etus); - switch (n) { - case PLG_DYING: - wu(0, sp->shp_own, - "PLAGUE deaths reported on %s\n", prship(sp)); - nreport(sp->shp_own, N_DIE_PLAGUE, 0, 1); - break; - case PLG_INFECT: - wu(0, sp->shp_own, "%s battling PLAGUE\n", prship(sp)); - break; - case PLG_INCUBATE: - /* Are we still incubating? */ - if (n == pstage) { - /* Yes. Will it turn "infectious" next time? */ - if (ptime <= etus) { - /* Yes. Report an outbreak. */ - wu(0, sp->shp_own, - "Outbreak of PLAGUE on %s!\n", prship(sp)); - nreport(sp->shp_own, N_OUT_PLAGUE, 0, 1); - } - } else { - /* It has already moved on to "infectious" */ - wu(0, sp->shp_own, - "%s battling PLAGUE\n", prship(sp)); - } - break; - case PLG_EXPOSED: - /* Has the plague moved to "incubation" yet? */ - if (n != pstage) { - /* Yes. Will it turn "infectious" next time? */ - if (ptime <= etus) { - /* Yes. Report an outbreak. */ - wu(0, sp->shp_own, - "Outbreak of PLAGUE on %s!\n", prship(sp)); - nreport(sp->shp_own, N_OUT_PLAGUE, 0, 1); - } - } - break; - default: - break; - } - + if (n != PLG_HEALTHY) + plague_report(sp->shp_own, n, pstage, ptime, etus, + "on", prship(sp)); sp->shp_pstage = pstage; sp->shp_ptime = ptime; } diff --git a/tests/update/journal.log b/tests/update/journal.log index be9c6d31..c0a801bc 100644 --- a/tests/update/journal.log +++ b/tests/update/journal.log @@ -1341,14 +1341,14 @@ Play#0 output Play#0 1 Partisans take over -14,-8! Play#0 output Play#0 1 Revolutionary subversion reported in -12,-8! Play#0 output Play#0 1 Revolutionary subversion reported in -15,-7! - Play#0 output Play#0 1 PLAGUE deaths reported in -16,-6. - Play#0 output Play#0 1 PLAGUE deaths reported in -14,-6. - Play#0 output Play#0 1 PLAGUE deaths reported in -12,-6. - Play#0 output Play#0 1 PLAGUE deaths reported in -10,-6. - Play#0 output Play#0 1 PLAGUE deaths reported in -8,-6. - Play#0 output Play#0 1 PLAGUE deaths reported in -6,-6. - Play#0 output Play#0 1 PLAGUE deaths reported in -4,-6. - Play#0 output Play#0 1 PLAGUE deaths reported in -2,-6. + Play#0 output Play#0 1 PLAGUE deaths reported in -16,-6 + Play#0 output Play#0 1 PLAGUE deaths reported in -14,-6 + Play#0 output Play#0 1 PLAGUE deaths reported in -12,-6 + Play#0 output Play#0 1 PLAGUE deaths reported in -10,-6 + Play#0 output Play#0 1 PLAGUE deaths reported in -8,-6 + Play#0 output Play#0 1 PLAGUE deaths reported in -6,-6 + Play#0 output Play#0 1 PLAGUE deaths reported in -4,-6 + Play#0 output Play#0 1 PLAGUE deaths reported in -2,-6 Play#0 output Play#0 1 -15,-5 battling PLAGUE Play#0 output Play#0 1 -13,-5 battling PLAGUE Play#0 output Play#0 1 -11,-5 battling PLAGUE