X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=io.c;h=8ea9d16b5a75e386ac1c4a5c9068c6d5ed510fd9;hb=fba5d2fbb42afc9fefaf0de890ba4889311cff92;hp=fc173f7182c0baac431cdb9363a5279f6447ed68;hpb=8b0a1880ee115e281afe83e1cd0c90e3306dfed8;p=super-star-trek.git diff --git a/io.c b/io.c index fc173f7..8ea9d16 100644 --- a/io.c +++ b/io.c @@ -9,15 +9,14 @@ #include "sst.h" #include "sstlinux.h" -static int linecount; /* for paging */ -static int curses = TRUE; +static int rows, linecount; /* for paging */ WINDOW *curwnd; static void outro(void) /* wrap up, either normally or due to signal */ { - if (curses) { + if (game.options & OPTION_CURSES) { clear(); curs_set(1); (void)refresh(); @@ -28,10 +27,11 @@ static void outro(void) } } -void iostart(int usecurses) +void iostart(void) { - if ((curses = usecurses)) { - + if (!(game.options & OPTION_CURSES)) { + rows = atoi(getenv("LINES")); + } else { if (atexit(outro)){ fprintf(stderr,"Unable to register outro(), exiting...\n"); exit(1); @@ -45,15 +45,15 @@ void iostart(int usecurses) (void)cbreak(); #ifdef A_COLOR { - start_color(); - 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); + start_color(); + 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(); @@ -73,7 +73,7 @@ void iostart(int usecurses) void waitfor(void) /* wait for user action -- OK to do nothing if on a TTY */ { - if (curses) + if (game.options & OPTION_CURSES) getch(); } @@ -94,7 +94,7 @@ void pause_game(int i) prompt = "[PRESS ENTER TO CONTINUE]"; } - if (curses) { + if (game.options & OPTION_CURSES) { drawmaps(0); setwnd(prompt_window); wclear(prompt_window); @@ -109,7 +109,7 @@ void pause_game(int i) fgets(buf, sizeof(buf), stdin); if (i != 0) { int j; - for (j = 0; j < 24; j++) + for (j = 0; j < rows; j++) putchar('\n'); } linecount = 0; @@ -120,11 +120,11 @@ void pause_game(int i) void skip(int i) { while (i-- > 0) { - if (curses) { + if (game.options & OPTION_CURSES) { proutn("\n\r"); } else { linecount++; - if (linecount >= 24) + if (linecount >= rows) pause_game(0); else putchar('\n'); @@ -134,7 +134,7 @@ void skip(int i) static void vproutn(char *fmt, va_list ap) { - if (curses) { + if (game.options & OPTION_CURSES) { vwprintw(curwnd, fmt, ap); wrefresh(curwnd); } @@ -170,7 +170,7 @@ void prouts(char *fmt, ...) skip(1); for (s = buf; *s; s++) { delay(500); - if (curses) { + if (game.options & OPTION_CURSES) { waddch(curwnd, *s); wrefresh(curwnd); } @@ -183,7 +183,7 @@ void prouts(char *fmt, ...) void cgetline(char *line, int max) { - if (curses) { + if (game.options & OPTION_CURSES) { wgetnstr(curwnd, line, max); strcat(line, "\n"); wrefresh(curwnd); @@ -196,7 +196,7 @@ void cgetline(char *line, int max) void setwnd(WINDOW *wnd) /* change windows -- OK for this to be a no-op in tty mode */ { - if (curses) { + if (game.options & OPTION_CURSES) { curwnd=wnd; curs_set(wnd == fullscreen_window || wnd == message_window || wnd == prompt_window); } @@ -205,7 +205,7 @@ void setwnd(WINDOW *wnd) void clreol (void) /* clear to end of line -- can be a no-op in tty mode */ { - if (curses) { + if (game.options & OPTION_CURSES) { wclrtoeol(curwnd); wrefresh(curwnd); } @@ -214,7 +214,7 @@ void clreol (void) void clrscr (void) /* clear screen -- can be a no-op in tty mode */ { - if (curses) { + if (game.options & OPTION_CURSES) { wclear(curwnd); wmove(curwnd,0,0); wrefresh(curwnd); @@ -224,7 +224,7 @@ void clrscr (void) void textcolor (int color) { #ifdef A_COLOR - if (curses) { + if (game.options & OPTION_CURSES) { switch(color) { case DEFAULT: wattrset(curwnd, 0); @@ -284,7 +284,7 @@ void textcolor (int color) void highvideo (void) { - if (curses) { + if (game.options & OPTION_CURSES) { wattron(curwnd, A_REVERSE); } } @@ -299,9 +299,9 @@ void commandhook(char *cmd, int before) { void drawmaps(short l) /* hook to be called after moving to redraw maps */ { - if (curses) { - if (l == 1) - sensor(); + if (game.options & OPTION_CURSES) { + if (l == 1) + sensor(FALSE); if (l != 2) { setwnd(srscan_window); wmove(curwnd, 0, 0); @@ -323,7 +323,7 @@ void drawmaps(short l) void boom(int ii, int jj) /* enemy fall down, go boom */ { - if (curses) { + if (game.options & OPTION_CURSES) { setwnd(srscan_window); drawmaps(2); wmove(srscan_window, ii*2+3, jj+2); @@ -345,7 +345,7 @@ void boom(int ii, int jj) void warble(void) /* sound and visual effects for teleportation */ { - if (curses) { + if (game.options & OPTION_CURSES) { drawmaps(1); setwnd(message_window); sound(50); @@ -358,7 +358,7 @@ void warble(void) void tracktorpedo(int x, int y, int ix, int iy, int wait, int l, int i, int n, int iquad) /* torpedo-track animation */ { - if (!curses) { + if (!game.options & OPTION_CURSES) { if (l == 1) { if (n != 1) { skip(1); @@ -400,7 +400,7 @@ void tracktorpedo(int x, int y, int ix, int iy, int wait, int l, int i, int n, i void makechart(void) { - if (curses) { + if (game.options & OPTION_CURSES) { setwnd(message_window); wclear(message_window); chart(0); @@ -409,7 +409,7 @@ void makechart(void) void setpassword(void) { - if (!curses) { + if (!(game.options & OPTION_CURSES)) { while (TRUE) { scan(); strcpy(game.passwd, citem);