X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=reports.c;h=e26e9324fca7373dda568a1104abc144d8375d72;hb=6863b89428c92473a3eead55771f59d8a6da2cb3;hp=e6c9f6e5a98df0d0f72d1e649e036af4d0e46d14;hpb=8b0a1880ee115e281afe83e1cd0c90e3306dfed8;p=super-star-trek.git diff --git a/reports.c b/reports.c index e6c9f6e..e26e932 100644 --- a/reports.c +++ b/reports.c @@ -132,12 +132,18 @@ void lrscan(void) for (x = quadx-1; x <= quadx+1; x++) { proutn(" "); for (y = quady-1; y <= quady+1; y++) { - if (x == 0 || x > GALSIZE || y == 0 || y > GALSIZE) + if (!VALID_QUADRANT(x, y)) proutn(" -1"); else { - if (game.state.galaxy[x][y] 0 ? game.state.galaxy[x][y]+SUPERNOVA_PLACE : 1; + if (!game.damage[DRADIO]) + 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; + if (game.state.galaxy[x][y].supernova) + proutn("***"); + else + proutn(" %3d", game.state.chart[x][y].klingons*100 + game.state.chart[x][y].starbase * 10 + game.state.chart[x][y].stars); } } prout(" "); @@ -149,7 +155,7 @@ void dreprt(void) int jdam = FALSE, i; chew(); - for (i = 1; i <= NDEVICES; i++) { + for (i = 0; i < NDEVICES; i++) { if (game.damage[i] > 0.0) { if (!jdam) { prout("DEVICE -REPAIR TIMES-"); @@ -165,6 +171,20 @@ void dreprt(void) if (!jdam) prout("All devices functional."); } +void rechart(void) +/* update the chart in the Enterprise's computer from galaxy data */ +{ + int i, j; + stdamtim = 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; + } +} + void chart(int nn) { int i,j; @@ -177,31 +197,30 @@ void chart(int nn) if (stdamtim != 1e30) { if (condit == IHDOCKED) { /* We are docked, so restore chart from base information */ - stdamtim = game.state.date; - for (i=1; i <= GALSIZE ; i++) - for (j=1; j <= GALSIZE; j++) - if (game.starch[i][j] == 1) game.starch[i][j] = game.state.galaxy[i][j]+SUPERNOVA_PLACE; + rechart(); } - else { - proutn("(Last surveillance update %d stardates ago.", + else if (game.state.date-stdamtim) { + prout("(Last surveillance update %d stardates ago).", (int)(game.state.date-stdamtim)); } } + else if (game.damage[DRADIO] == 0.0) + rechart(); prout(" 1 2 3 4 5 6 7 8"); - for (i = 1; i <= GALSIZE; i++) { + for_quadrants(i) { proutn("%d |", i); - for (j = 1; j <= GALSIZE; j++) { + for_quadrants(j) { char buf[4]; proutn(" "); - if (game.starch[i][j] == CHART_UNKNOWN) - strcpy(buf, ".1."); - else if (game.starch[i][j] == 0) - strcpy(buf, "..."); - else if (game.state.galaxy[i][j]>=SUPERNOVA_PLACE) + if (game.state.galaxy[i][j].supernova) strcpy(buf, "***"); + else if (!game.state.galaxy[i][j].charted && game.state.galaxy[i][j].starbase) + strcpy(buf, ".1."); + else if (game.state.galaxy[i][j].charted) + sprintf(buf, "%d%d%d", game.state.chart[i][j].klingons, game.state.chart[i][j].starbase, game.state.chart[i][j].stars); else - sprintf(buf, "%03d", game.state.galaxy[i][j]); + strcpy(buf, "..."); for (cp = buf; cp < buf + sizeof(buf); cp++) if (*cp == '0') *cp = '.'; @@ -253,8 +272,9 @@ static void status(int req) case IHDOCKED: cp = "DOCKED"; break; case IHDEAD: cp="DEAD"; break; } - for (t=0;t<=NDEVICES;t++) - if (game.damage[t]>0) dam++; + for (t=0;t0) + dam++; proutn("Condition %s, %i DAMAGES", cp, dam); break; case 3: @@ -300,23 +320,13 @@ static void status(int req) case 10: attakreport(1); break; - /* - * Note: attakreport() can in some cases produce two lines of - * output. If that happens, and QUADSIZE is the normal 10, items - * 11 and up will be printed past the bottom of the quadrant display. - * Under the curses display logic they will get lost because they're - * written outside the report window. - */ - case 11: /* ESR */ - proutn("Bases Left %d", game.state.rembase); - break; } } int srscan(int l) { static char requests[][3] = - {"","da","co","po","ls","wa","en","to","sh","kl","ti", "ba"}; + {"","da","co","po","ls","wa","en","to","sh","kl","ti"}; int leftside=TRUE, rightside=TRUE, i, j, jj, req=0, nn=FALSE; int goodScan=TRUE; switch (l) { @@ -331,7 +341,12 @@ int srscan(int l) prout(" [Using Base's sensors]"); } else proutn(" Short-range scan\n\r"); - if (goodScan) game.starch[quadx][quady] = game.damage[DRADIO]>0.0 ? game.state.galaxy[quadx][quady]+SUPERNOVA_PLACE:1; + if (goodScan && !game.damage[DRADIO]) { + game.state.chart[quadx][quady].klingons = game.state.galaxy[quadx][quady].klingons; + game.state.chart[quadx][quady].starbase = game.state.galaxy[quadx][quady].starbase; + game.state.chart[quadx][quady].stars = game.state.galaxy[quadx][quady].stars; + game.state.galaxy[quadx][quady].charted = TRUE; + } scan(); if (isit("chart")) nn = TRUE; if (isit("no")) rightside = FALSE; @@ -366,7 +381,7 @@ int srscan(int l) jj = (req!=0 ? req : i); if (leftside && i <= QUADSIZE) { proutn("%2d ", i); - for (j = 1; j <= QUADSIZE; j++) { + for_sectors(j) { sectscan(goodScan, i, j); } } @@ -421,8 +436,7 @@ void eta(void) else iy2=QUADSIZE; } - if (ix1 > GALSIZE || ix1 < 1 || iy1 > GALSIZE || iy1 < 1 || - ix2 > QUADSIZE || ix2 < 1 || iy2 > QUADSIZE || iy2 < 1) { + if (!VALID_QUADRANT(ix1, iy1) || !VALID_SECTOR(ix2, iy2)) { huh(); return; }