X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=reports.c;h=bdb0e9435cd0a5b83727bd277b2fb02437a0fc57;hp=6486d9db73f666ded87be3720ae781e2549912ec;hb=2ca70710fc39e85aac386ec041318369d148f5ce;hpb=c1bda490aef42a6b3d0e8d97a20fb58236d02ee7 diff --git a/reports.c b/reports.c index 6486d9d..bdb0e94 100644 --- a/reports.c +++ b/reports.c @@ -2,12 +2,6 @@ #include #include #include -#ifdef SERGEEV -#include -#include "sstlinux.h" -#else -#define c_printf proutn -#endif /* SERGEEV */ void attakreport(int l) { if (!l) { @@ -29,9 +23,7 @@ void attakreport(int l) { if (isatb == 1) proutn("Base in %i - %i attacked by S. Alive until %.1f", game.state.isx, game.state.isy, game.future[FSCDBAS]); } -#ifdef SERGEEV clreol(); -#endif /* SERGEEV */ } @@ -174,9 +166,9 @@ void chart(int nn) { char *cp; chew(); if (stdamtim != 1e30 && stdamtim != game.state.date && condit == IHDOCKED) { - c_printf("Spock- \"I revised the Star Chart from the starbase's records.\"\n\r"); + proutn("Spock- \"I revised the Star Chart from the starbase's records.\"\n\r"); } - if (nn == 0) c_printf(" STAR CHART FOR THE KNOWN GALAXY\n\r"); + if (nn == 0) proutn(" STAR CHART FOR THE KNOWN GALAXY\n\r"); if (stdamtim != 1e30) { if (condit == IHDOCKED) { /* We are docked, so restore chart from base information */ @@ -193,35 +185,14 @@ void chart(int nn) { prout(" 1 2 3 4 5 6 7 8"); for (i = 1; i <= 8; i++) { - c_printf("%d |", i); + proutn("%d |", i); for (j = 1; j <= 8; j++) { - char buf[4]; - c_printf(" "); + char buf[4]; + proutn(" "); if (game.starch[i][j] < 0) strcpy(buf, ".1."); else if (game.starch[i][j] == 0) strcpy(buf, "..."); - else if (game.starch[i][j] > 999) - if ((i==quadx)&&(j==quady)){ -#ifdef SERGEEV - gotoxy(wherex()-1,wherey()); -#endif /* SERGEEV */ - if (game.starch[i][i]<2000) - sprintf(buf, "%03d", game.starch[i][j]-1000); - else - strcpy(buf, "***"); - } - else - if (game.starch[i][j]<2000) - sprintf(buf, "%03d", game.starch[i][j]-1000); - else - strcpy(buf, "***"); - else if ((i==quadx)&&(j==quady)){ -#ifdef SERGEEV - gotoxy(wherex()-1,wherey()); -#endif /* SERGEEV */ - sprintf(buf, "%03d", game.state.galaxy[i][j]); - } else if (game.state.galaxy[i][j]>=1000) strcpy(buf, "***"); else @@ -229,25 +200,23 @@ void chart(int nn) { for (cp = buf; cp < buf + sizeof(buf); cp++) if (*cp == '0') *cp = '.'; - c_printf(buf); + proutn(buf); } - c_printf(" |"); - if (i<8) c_printf("\n\r"); + proutn(" |"); + if (i<8) proutn("\n\r"); } -#ifdef SERGEEV - proutn(""); /* flush output */ -#else - skip(2); -#endif + prout(""); /* flush output */ } int srscan(int l) { + static char requests[][3] = + {"","da","co","po","ls","wa","en","to","sh","kl","ti"}; char *cp = NULL; int leftside=TRUE, rightside=TRUE, i, j, jj, k=0, nn=FALSE, t, dam=0; int goodScan=TRUE; switch (l) { - case 1: // SRSCAN + case SCAN_FULL: // SRSCAN if (game.damage[DSRSENS] != 0) { /* Allow base's sensors if docked */ if (condit != IHDOCKED) { @@ -257,21 +226,35 @@ int srscan(int l) { else prout(" [Using Base's sensors]"); } - else c_printf(" Short-range scan\n\r"); + else proutn(" Short-range scan\n\r"); if (goodScan) game.starch[quadx][quady] = game.damage[DRADIO]>0.0 ? game.state.galaxy[quadx][quady]+1000:1; scan(); if (isit("chart")) nn = TRUE; - rightside = FALSE; + if (isit("no")) rightside = FALSE; chew(); - c_printf(" 1 2 3 4 5 6 7 8 9 10\n\r"); + proutn(" 1 2 3 4 5 6 7 8 9 10\n\r"); break; - case 2: // REQUEST - leftside=FALSE; - break; - case 3: // STATUS + case SCAN_REQUEST: + while (scan() == IHEOL) + proutn("Information desired? "); + chew(); + for (k = 1; k <= 10; k++) + if (strncmp(citem,requests[k],min(2,strlen(citem)))==0) + break; + if (k > 10) { + prout("UNRECOGNIZED REQUEST. Legal requests are:\n" + " date, condition, position, lsupport, warpfactor,\n" + " energy, torpedoes, shields, klingons, time."); + return FALSE; + } + // no "break" + case SCAN_STATUS: // STATUS chew(); leftside = FALSE; skip(1); + case SCAN_NO_LEFTSIDE: // REQUEST + leftside=FALSE; + break; } if (condit != IHDOCKED) newcnd(); for (i = 1; i <= 10; i++) { @@ -281,24 +264,20 @@ int srscan(int l) { for (j = 1; j <= 10; j++) { if (goodScan || (abs(i-sectx)<= 1 && abs(j-secty) <= 1)){ if ((game.quad[i][j]==IHMATER0)||(game.quad[i][j]==IHMATER1)||(game.quad[i][j]==IHMATER2)||(game.quad[i][j]==IHE)||(game.quad[i][j]==IHF)){ -#ifdef SERGEEV switch (condit) { case IHRED: textcolor(RED); break; case IHGREEN: textcolor(GREEN); break; case IHYELLOW: textcolor(YELLOW); break; - case IHDOCKED: textcolor(LIGHTGRAY); break; - case IHDEAD: textcolor(WHITE); + case IHDOCKED: textcolor(CYAN); break; + case IHDEAD: textcolor(BROWN); } - if (game.quad[i][j]!=ship) highvideo(); -#endif /* SERGEEV */ + if (game.quad[i][j] != ship) + highvideo(); } -#ifdef SERGEEV - if (game.quad[i][j] & 128) highvideo(); -#endif /* SERGEEV */ - c_printf("%c ",game.quad[i][j] & 127); -#ifdef SERGEEV - textcolor(LIGHTGRAY); -#endif /* SERGEEV */ + if (game.quad[i][j] & DAMAGED) + highvideo(); + proutn("%c ",game.quad[i][j] & ~DAMAGED); + textcolor(DEFAULT); } else proutn("- "); @@ -342,6 +321,8 @@ int srscan(int l) { break; case 6: proutn("Energy %.2f", energy); + if (icrystl) + proutn(" (crystals on board)"); break; case 7: proutn("Torpedoes %d", torps); @@ -365,15 +346,11 @@ int srscan(int l) { break; } } - if (i<10) c_printf("\n\r"); + if (i<10) proutn("\n\r"); if (k!=0) return(goodScan); } + prout(""); if (nn) chart(1); -#ifdef SERGEEV - proutn(""); -#else - skip(2); -#endif /* SERGEEV */ return(goodScan); }