(void)saveterm();
(void)nonl();
(void)cbreak();
-#ifdef FOO
+#ifdef A_COLOR
{
- int background = COLOR_WHITE;
start_color();
- init_pair(COLOR_BLACK, COLOR_BLACK, background);
- init_pair(COLOR_GREEN, COLOR_GREEN, background);
- init_pair(COLOR_RED, COLOR_RED, background);
- init_pair(COLOR_CYAN, COLOR_CYAN, background);
- init_pair(COLOR_WHITE, COLOR_WHITE, background);
- init_pair(COLOR_MAGENTA, COLOR_MAGENTA, background);
- init_pair(COLOR_BLUE, COLOR_BLUE, background);
- init_pair(COLOR_YELLOW, COLOR_YELLOW, background);
+ init_pair(COLOR_BLACK, COLOR_BLACK, COLOR_BLACK);
+ init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_BLACK);
+ init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK);
+ init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_BLACK);
+ init_pair(COLOR_WHITE, COLOR_WHITE, COLOR_BLACK);
+ init_pair(COLOR_MAGENTA, COLOR_MAGENTA, COLOR_BLACK);
+ init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_BLACK);
+ init_pair(COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK);
}
#endif /* A_COLOR */
//(void)noecho();
fullscreen_window = stdscr;
srscan_window = newwin(12, 25, 0, 0);
- REPORT_WINDOW = newwin(10, 0, 1, 25);
+ report_window = newwin(10, 0, 1, 25);
lrscan_window = newwin(10, 0, 0, 64);
- message_window = newwin(0, 0, 12, 0);
+ message_window = newwin(0, 0, 12, 0);
prompt_window = newwin(1, 0, LINES-1, 0);
scrollok(message_window, TRUE);
setwnd(fullscreen_window);
void textcolor (int color)
{
+#ifdef A_COLOR
if (curses) {
- wattroff(curwnd, A_REVERSE);
-#ifdef FOO
switch(color) {
case DEFAULT:
wattrset(curwnd, 0);
break;
case BLACK:
- wattron(curwnd, COLOR_PAIR(BLACK));
+ wattron(curwnd, COLOR_PAIR(COLOR_BLACK));
break;
case BLUE:
- wattron(curwnd, COLOR_PAIR(BLUE));
+ wattron(curwnd, COLOR_PAIR(COLOR_BLUE));
break;
case GREEN:
- wattron(curwnd, COLOR_PAIR(GREEN));
+ wattron(curwnd, COLOR_PAIR(COLOR_GREEN));
break;
case CYAN:
- wattron(curwnd, COLOR_PAIR(CYAN));
+ wattron(curwnd, COLOR_PAIR(COLOR_CYAN));
break;
case RED:
- wattron(curwnd, COLOR_PAIR(RED));
+ wattron(curwnd, COLOR_PAIR(COLOR_RED));
break;
case MAGENTA:
- wattron(curwnd, COLOR_PAIR(MAGENTA));
+ wattron(curwnd, COLOR_PAIR(COLOR_MAGENTA));
break;
case BROWN:
- wattron(curwnd, COLOR_PAIR(YELLOW));
+ wattron(curwnd, COLOR_PAIR(COLOR_YELLOW));
break;
case LIGHTGRAY:
- wattron(curwnd, COLOR_PAIR(WHITE));
+ wattron(curwnd, COLOR_PAIR(COLOR_WHITE));
break;
case DARKGRAY:
- wattron(curwnd, COLOR_PAIR(BLACK) | A_BOLD);
+ wattron(curwnd, COLOR_PAIR(COLOR_BLACK) | A_BOLD);
break;
case LIGHTBLUE:
- wattron(curwnd, COLOR_PAIR(BLUE) | A_BOLD);
+ wattron(curwnd, COLOR_PAIR(COLOR_BLUE) | A_BOLD);
break;
case LIGHTGREEN:
- wattron(curwnd, COLOR_PAIR(GREEN) | A_BOLD);
+ wattron(curwnd, COLOR_PAIR(COLOR_GREEN) | A_BOLD);
break;
case LIGHTCYAN:
- wattron(curwnd, COLOR_PAIR(CYAN) | A_BOLD);
+ wattron(curwnd, COLOR_PAIR(COLOR_CYAN) | A_BOLD);
break;
case LIGHTRED:
- wattron(curwnd, COLOR_PAIR(RED) | A_BOLD);
+ wattron(curwnd, COLOR_PAIR(COLOR_RED) | A_BOLD);
break;
case LIGHTMAGENTA:
- wattron(curwnd, COLOR_PAIR(MAGENTA) | A_BOLD);
+ wattron(curwnd, COLOR_PAIR(COLOR_MAGENTA) | A_BOLD);
break;
case YELLOW:
- wattron(curwnd, COLOR_PAIR(YELLOW) | A_BOLD);
+ wattron(curwnd, COLOR_PAIR(COLOR_YELLOW) | A_BOLD);
break;
case WHITE:
- wattron(curwnd, COLOR_PAIR(WHITE) | A_BOLD);
+ wattron(curwnd, COLOR_PAIR(COLOR_WHITE) | A_BOLD);
break;
}
-#endif /* FOO */
}
+#endif /* A_COLOR */
}
void highvideo (void)
wmove(curwnd, 0, 0);
enqueue("no");
srscan(SCAN_FULL);
- setwnd(REPORT_WINDOW);
- wclear(REPORT_WINDOW);
- wmove(REPORT_WINDOW, 0, 0);
+ setwnd(report_window);
+ wclear(report_window);
+ wmove(report_window, 0, 0);
srscan(SCAN_NO_LEFTSIDE);
setwnd(lrscan_window);
wclear(lrscan_window);
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 SCAN_FULL: // SRSCAN
- if (game.damage[DSRSENS] != 0) {
- /* Allow base's sensors if docked */
- if (condit != IHDOCKED) {
- prout(" S.R. SENSORS DAMAGED!");
- goodScan=FALSE;
- }
- else
- 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]+1000:1;
- scan();
- if (isit("chart")) nn = TRUE;
- if (isit("no")) rightside = FALSE;
- chew();
- proutn(" 1 2 3 4 5 6 7 8 9 10\n\r");
- break;
- 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;
+ 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 SCAN_FULL: // SRSCAN
+ if (game.damage[DSRSENS] != 0) {
+ /* Allow base's sensors if docked */
+ if (condit != IHDOCKED) {
+ prout(" S.R. SENSORS DAMAGED!");
+ goodScan=FALSE;
+ }
+ else
+ 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]+1000:1;
+ scan();
+ if (isit("chart")) nn = TRUE;
+ if (isit("no")) rightside = FALSE;
+ chew();
+ proutn(" 1 2 3 4 5 6 7 8 9 10\n\r");
+ break;
+ 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;
}
- if (condit != IHDOCKED) newcnd();
- for (i = 1; i <= 10; i++) {
- jj = (k!=0 ? k : i);
- if (leftside) {
- proutn("%2d ", i);
- 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)){
- switch (condit) {
- case IHRED: textcolor(RED); break;
- case IHGREEN: textcolor(GREEN); break;
- case IHYELLOW: textcolor(YELLOW); break;
- case IHDOCKED: textcolor(CYAN); break;
- case IHDEAD: textcolor(BROWN);
- }
- if (game.quad[i][j] != ship)
- highvideo();
- }
- if (game.quad[i][j] & DAMAGED)
- highvideo();
- proutn("%c ",game.quad[i][j] & ~DAMAGED);
- textcolor(DEFAULT);
- }
- else
- proutn("- ");
+ // 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++) {
+ jj = (k!=0 ? k : i);
+ if (leftside) {
+ proutn("%2d ", i);
+ 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)){
+ switch (condit) {
+ case IHRED: textcolor(RED); break;
+ case IHGREEN: textcolor(GREEN); break;
+ case IHYELLOW: textcolor(YELLOW); break;
+ case IHDOCKED: textcolor(CYAN); break;
+ case IHDEAD: textcolor(BROWN);
}
+ if (game.quad[i][j] != ship)
+ highvideo();
+ }
+ if (game.quad[i][j] & DAMAGED)
+ highvideo();
+ proutn("%c ",game.quad[i][j] & ~DAMAGED);
+ textcolor(DEFAULT);
}
- if (rightside) {
- switch (jj) {
- case 1:
- proutn("Stardate %.1f, Time Left %.2f", game.state.date, game.state.remtime);
- break;
- case 2:
- if (condit != IHDOCKED) newcnd();
- switch (condit) {
- case IHRED: cp = "RED"; break;
- case IHGREEN: cp = "GREEN"; break;
- case IHYELLOW: cp = "YELLOW"; break;
- case IHDOCKED: cp = "DOCKED"; break;
- case IHDEAD: cp="DEAD"; break;
- }
- for (t=0;t<=NDEVICES;t++)
- if (game.damage[t]>0) dam++;
- proutn("Condition %s, %i DAMAGES", cp, dam);
- break;
- case 3:
- proutn("Position %d - %d , %d - %d",
- quadx, quady, sectx, secty);
- break;
- case 4:
- proutn("Life Support ");
- if (game.damage[DLIFSUP] != 0.0) {
- if (condit == IHDOCKED)
- proutn("DAMAGED, Base provides");
- else
- proutn("DAMAGED, reserves=%4.2f", lsupres);
- }
- else
- proutn("ACTIVE");
- break;
- case 5:
- proutn("Warp Factor %.1f", warpfac);
- break;
- case 6:
- proutn("Energy %.2f", energy);
- if (icrystl)
- proutn(" (have crystals)");
- break;
- case 7:
- proutn("Torpedoes %d", torps);
- break;
- case 8:
- proutn("Shields ");
- if (game.damage[DSHIELD] != 0)
- proutn("DAMAGED,");
- else if (shldup)
- proutn("UP,");
- else
- proutn("DOWN,");
- proutn(" %d%% %.1f units",
- (int)((100.0*shield)/inshld + 0.5), shield);
- break;
- case 9:
- proutn("Klingons Left %d", game.state.remkl);
- break;
- case 10:
- attakreport(1);
- break;
- }
+ else
+ proutn("- ");
+ }
+ }
+ if (rightside) {
+ switch (jj) {
+ case 1:
+ proutn("Stardate %.1f, Time Left %.2f", game.state.date, game.state.remtime);
+ break;
+ case 2:
+ if (condit != IHDOCKED) newcnd();
+ switch (condit) {
+ case IHRED: cp = "RED"; break;
+ case IHGREEN: cp = "GREEN"; break;
+ case IHYELLOW: cp = "YELLOW"; break;
+ case IHDOCKED: cp = "DOCKED"; break;
+ case IHDEAD: cp="DEAD"; break;
+ }
+ for (t=0;t<=NDEVICES;t++)
+ if (game.damage[t]>0) dam++;
+ proutn("Condition %s, %i DAMAGES", cp, dam);
+ break;
+ case 3:
+ proutn("Position %d - %d , %d - %d",
+ quadx, quady, sectx, secty);
+ break;
+ case 4:
+ proutn("Life Support ");
+ if (game.damage[DLIFSUP] != 0.0) {
+ if (condit == IHDOCKED)
+ proutn("DAMAGED, Base provides");
+ else
+ proutn("DAMAGED, reserves=%4.2f", lsupres);
}
- if (i<10) proutn("\n\r");
- if (k!=0) return(goodScan);
+ else
+ proutn("ACTIVE");
+ break;
+ case 5:
+ proutn("Warp Factor %.1f", warpfac);
+ break;
+ case 6:
+ proutn("Energy %.2f", energy);
+ if (icrystl)
+ proutn(" (have crystals)");
+ break;
+ case 7:
+ proutn("Torpedoes %d", torps);
+ break;
+ case 8:
+ proutn("Shields ");
+ if (game.damage[DSHIELD] != 0)
+ proutn("DAMAGED,");
+ else if (shldup)
+ proutn("UP,");
+ else
+ proutn("DOWN,");
+ proutn(" %d%% %.1f units",
+ (int)((100.0*shield)/inshld + 0.5), shield);
+ break;
+ case 9:
+ proutn("Klingons Left %d", game.state.remkl);
+ break;
+ case 10:
+ attakreport(1);
+ break;
+ }
}
- prout("");
- if (nn) chart(1);
- return(goodScan);
+ if (i<10) proutn("\n\r");
+ if (k!=0) return(goodScan);
+ }
+ prout("");
+ if (nn) chart(1);
+ return(goodScan);
}