X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Fio.c;h=80aa0759859c9a5613d465c8fa52f0ee19d8d04a;hp=134fdef4775fb18c7cf94441da12802369f785bd;hb=9aef5f5aae5fde0ed2b462945750c7aee59b3c1e;hpb=c2847bb7511b0cf8472ba3a0a170a4fedd3b2861 diff --git a/src/io.c b/src/io.c index 134fdef..80aa075 100644 --- a/src/io.c +++ b/src/io.c @@ -7,6 +7,7 @@ #include "sstlinux.h" static int rows, linecount; /* for paging */ +static bool pause_latch; WINDOW *curwnd; WINDOW *fullscreen_window; @@ -47,13 +48,13 @@ void iostart(void) char *ln_env = getenv("LINES"); rows = ln_env ? atoi(ln_env) : 25; } else { - (void)initscr(); + initscr(); #ifdef KEY_MIN keypad(stdscr, TRUE); #endif /* KEY_MIN */ - (void)saveterm(); - (void)nonl(); - (void)cbreak(); + saveterm(); + nonl(); + cbreak(); #ifdef A_COLOR { start_color(); @@ -67,12 +68,12 @@ void iostart(void) init_pair(COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK); } #endif /* A_COLOR */ - //(void)noecho(); + //noecho(); fullscreen_window = stdscr; srscan_window = newwin(12, 25, 0, 0); report_window = newwin(11, 0, 1, 25); status_window = newwin(10, 0, 1, 39); - lrscan_window = newwin(10, 0, 0, 64); + lrscan_window = newwin(5, 0, 0, 64); message_window = newwin(0, 0, 12, 0); prompt_window = newwin(1, 0, LINES-2, 0); scrollok(message_window, TRUE); @@ -89,42 +90,52 @@ void waitfor(void) getch(); } +void pause_reset(void) +{ + pause_latch = false; +} + void pause_game(bool announcement) { - char *prompt; - char buf[BUFSIZ]; - if (announcement) { - if (game.skill > SKILL_FAIR) - prompt = _("[ANOUNCEMENT ARRIVING...]"); - else - prompt = _("[IMPORTANT ANNOUNCEMENT ARRIVING -- PRESS ENTER TO CONTINUE]"); - } + if (pause_latch) + return; else { - if (game.skill > SKILL_FAIR) - prompt = _("[CONTINUE?]"); - else - prompt = _("[PRESS ENTER TO CONTINUE]"); - - } - if (game.options & OPTION_CURSES) { - drawmaps(0); - setwnd(prompt_window); - wclear(prompt_window); - waddstr(prompt_window, prompt); - wgetnstr(prompt_window, buf, sizeof(buf)); - wclear(prompt_window); - wrefresh(prompt_window); - setwnd(message_window); - } else { - putchar('\n'); - proutn(prompt); - fgets(buf, sizeof(buf), stdin); + char *prompt; + char buf[BUFSIZ]; if (announcement) { - int j; - for (j = 0; j < rows; j++) - putchar('\n'); + if (game.skill > SKILL_FAIR) + prompt = _("[ANOUNCEMENT ARRIVING...]"); + else + prompt = _("[IMPORTANT ANNOUNCEMENT ARRIVING -- PRESS ENTER TO CONTINUE]"); + } + else { + if (game.skill > SKILL_FAIR) + prompt = _("[CONTINUE?]"); + else + prompt = _("[PRESS ENTER TO CONTINUE]"); + + } + if (game.options & OPTION_CURSES) { + drawmaps(0); + setwnd(prompt_window); + wclear(prompt_window); + waddstr(prompt_window, prompt); + wgetnstr(prompt_window, buf, sizeof(buf)); + wclear(prompt_window); + wrefresh(prompt_window); + setwnd(message_window); + } else { + putchar('\n'); + proutn(prompt); + fgets(buf, sizeof(buf), stdin); + if (announcement) { + int j; + for (j = 0; j < rows; j++) + putchar('\n'); + } + linecount = 0; } - linecount = 0; + pause_latch = true; } }