X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Freports.c;h=5d7c3b1750de58edebfa98a1e2fae93ba2997502;hp=ff19ae16bdf29bd0fdb660b75d701fede6c5a863;hb=c873e794bf5a029fef3a5ee5385cc0fec6220fa0;hpb=cbb2d987e8c23c6c25bd441fdef5401d5a89289e diff --git a/src/reports.c b/src/reports.c index ff19ae1..5d7c3b1 100644 --- a/src/reports.c +++ b/src/reports.c @@ -60,10 +60,12 @@ void report(void) if (game.tourn) prout(_("This is tournament game %d."), game.tourn); prout(_("Your secret password is \"%s\""),game.passwd); - proutn(_("%d of %d Klingons have been killed"), KLINGKILLED, INKLINGTOT); - if (NKILLC) - prout(_(", including %d Commander%s."), NKILLC, NKILLC==1?"":_("s")); - else if (NKILLK + NKILLSC > 0) + proutn(_("%d of %d Klingons have been killed"), + ((game.inkling + game.incom + game.inscom) - (game.state.remkl + game.state.remcom + game.state.nscrem)), + (game.inkling + game.incom + game.inscom)); + if (game.incom - game.state.remcom) + prout(_(", including %d Commander%s."), game.incom - game.state.remcom, (game.incom - game.state.remcom)==1?"":_("s")); + else if (game.inkling - game.state.remkl + (game.inscom - game.state.nscrem) > 0) prout(_(", but no Commanders.")); else prout("."); @@ -82,8 +84,8 @@ void report(void) else prout(_("There are %d bases."), game.inbase); if (!damaged(DRADIO) || game.condition == docked || game.iseenit) { - /* Don't report this if not seen and - either the radio is dead or not at base! */ + // Don't report this if not seen and + // either the radio is dead or not at base! attackreport(false); game.iseenit = true; } @@ -151,8 +153,7 @@ void lrscan(void) if (!VALID_QUADRANT(x, y)) proutn(" -1"); else { - if (!damaged(DRADIO)) - game.state.galaxy[x][y].charted = true; + game.state.galaxy[x][y].charted = true; game.state.chart[x][y].klingons = game.state.galaxy[x][y].klingons; game.state.chart[x][y].starbase = game.state.galaxy[x][y].starbase; game.state.chart[x][y].stars = game.state.galaxy[x][y].stars; @@ -190,18 +191,57 @@ void damagereport(void) prout(_("All devices functional.")); } -void rechart(void) +static void rechart_quad(int x, int y) +{ + if (game.state.galaxy[x][y].charted) { + game.state.chart[x][y].klingons = game.state.galaxy[x][y].klingons; + game.state.chart[x][y].starbase = game.state.galaxy[x][y].starbase; + game.state.chart[x][y].stars = game.state.galaxy[x][y].stars; + } +} + +static void rechart_dsradio(void) /* update the chart in the Enterprise's computer from galaxy data */ { int i, j; game.lastchart = game.state.date; - for_quadrants(i) - for_quadrants(j) - if (game.state.galaxy[i][j].charted) { - game.state.chart[i][j].klingons = game.state.galaxy[i][j].klingons; - game.state.chart[i][j].starbase = game.state.galaxy[i][j].starbase; - game.state.chart[i][j].stars = game.state.galaxy[i][j].stars; - } + for (i = 1; i <= GALSIZE; i++) + for (j = 1; j <= GALSIZE; j++) + rechart_quad(i, j); +} + +static void rechart_lr(void) +/* update the chart in the Enterprise's computer from galaxy data */ +{ + int i, j; + for (i = game.quadrant.x-1; i <= game.quadrant.x+1; i++) { + for (j = game.quadrant.y-1; j <= game.quadrant.y+1; j++) { + if (i == game.quadrant.x && j == game.quadrant.y) + continue; + rechart_quad(i, j); + } + } +} + +static void rechart_sr(void) +/* update the chart in the Enterprise's computer from galaxy data */ +{ + rechart_quad(game.quadrant.x, game.quadrant.y); +} + +void rechart(void) +{ + if (!damaged(DRADIO) || game.condition == docked) { + if (game.lastchart < game.state.date && game.condition == docked) + prout(_("Spock- \"I revised the Star Chart from the " + "starbase's records.\"")); + rechart_dsradio(); + } else { + if (!damaged(DLRSENS)) + rechart_lr(); + if (!damaged(DSRSENS)) + rechart_sr(); + } } void chart(void) @@ -210,22 +250,16 @@ void chart(void) int i,j; chew(); - if (!damaged(DRADIO)) - rechart(); - - if (game.lastchart < game.state.date && game.condition == docked) { - prout(_("Spock- \"I revised the Star Chart from the starbase's records.\"")); - rechart(); - } + rechart(); prout(_(" STAR CHART FOR THE KNOWN GALAXY")); if (game.state.date > game.lastchart) prout(_("(Last surveillance update %d stardates ago)."), (int)(game.state.date-game.lastchart)); prout(" 1 2 3 4 5 6 7 8"); - for_quadrants(i) { + for (i = 1; i <= GALSIZE; i++) { proutn("%d |", i); - for_quadrants(j) { + for (j = 1; j <= GALSIZE; j++) { char buf[4]; if ((game.options & OPTION_SHOWME) && i == game.quadrant.x && j == game.quadrant.y) proutn("<"); @@ -344,7 +378,7 @@ void status(int req) ); RQ(9, - prstat(_("Klingons Left"), "%d", KLINGREM); + prstat(_("Klingons Left"), "%d", game.state.remkl + game.state.remcom + game.state.nscrem); ); RQ(10, @@ -401,18 +435,16 @@ void srscan(void) } else prout(_(" Short-range scan")); - if (goodScan && !damaged(DRADIO)) { - game.state.chart[game.quadrant.x][game.quadrant.y].klingons = game.state.galaxy[game.quadrant.x][game.quadrant.y].klingons; - game.state.chart[game.quadrant.x][game.quadrant.y].starbase = game.state.galaxy[game.quadrant.x][game.quadrant.y].starbase; - game.state.chart[game.quadrant.x][game.quadrant.y].stars = game.state.galaxy[game.quadrant.x][game.quadrant.y].stars; + if (goodScan) { game.state.galaxy[game.quadrant.x][game.quadrant.y].charted = true; + rechart(); } prout(" 1 2 3 4 5 6 7 8 9 10"); if (game.condition != docked) newcnd(); for (i = 1; i <= QUADSIZE; i++) { proutn("%2d ", i); - for_sectors(j) { + for (j = 1; j <= QUADSIZE; j++) { sectscan(goodScan, i, j); } skip(1); @@ -574,7 +606,7 @@ void eta(void) } -#if BSD_BUG_FOR_BUG +#ifdef BSD_BUG_FOR_BUG /* * A visual scan is made in a particular direction of three sectors * in the general direction specified. This takes time, and