Get rid of obnoxious visible "have we paused?" state.
[super-star-trek.git] / src / io.c
index 134fdef4775fb18c7cf94441da12802369f785bd..80aa0759859c9a5613d465c8fa52f0ee19d8d04a 100644 (file)
--- 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;
     }
 }