]> git.deb.at Git - pkg/netris.git/blobdiff - curses.c
Imported Debian patch 0.52-2
[pkg/netris.git] / curses.c
index 14e9ce47e32b796ab3c61732d65e5b18a366974f..d5be6799671ab7109e7632839e683bb8ccf9db42 100644 (file)
--- a/curses.c
+++ b/curses.c
@@ -57,6 +57,7 @@ static EventGenRec keyGen =
 static int boardYPos[MAX_SCREENS], boardXPos[MAX_SCREENS];
 static int statusYPos, statusXPos;
 static int haveColor;
+static int screens_dirty = 0;
 
 static char *term_vi;  /* String to make cursor invisible */
 static char *term_ve;  /* String to make cursor visible */
@@ -98,6 +99,7 @@ ExtFunc void InitScreens(void)
 #endif
 
        AtExit(CleanupScreens);
+       screens_dirty = 1;
        RestoreSignals(NULL, &oldMask);
 
        cbreak();
@@ -116,9 +118,12 @@ ExtFunc void InitScreens(void)
 
 ExtFunc void CleanupScreens(void)
 {
-       RemoveEventGen(&keyGen);
-       endwin();
-       OutputTermStr(term_ve, 1);
+       if (screens_dirty) {
+               RemoveEventGen(&keyGen);
+               endwin();
+               OutputTermStr(term_ve, 1);
+               screens_dirty = 0;
+       }
 }
 
 ExtFunc void GetTermcapInfo(void)
@@ -201,6 +206,8 @@ ExtFunc void InitScreen(int scr)
        for (y = boardVisible[scr] - 1; y >= 0; --y) {
                move(boardYPos[scr] - y, boardXPos[scr] - 1);
                addch('|');
+               for (x = boardWidth[scr] - 1; x >= 0; --x)
+                       addstr("  ");
                move(boardYPos[scr] - y, boardXPos[scr] + 2 * boardWidth[scr]);
                addch('|');
        }
@@ -256,6 +263,23 @@ ExtFunc void PlotUnderline(int scr, int x, int flag)
 
 ExtFunc void ShowDisplayInfo(void)
 {
+       move(statusYPos - 3, statusXPos);
+       printw("Won:  %3d", won);
+       move(statusYPos - 2, statusXPos);
+       printw("Lost: %3d", lost);
+
+       move(statusYPos - 1, statusXPos);
+       switch(gameState) {
+       case STATE_WAIT_CONNECTION:
+               addstr("Waiting for opponent...      ");
+               break;
+       case STATE_WAIT_KEYPRESS:
+               addstr("Press the key for a new game.");
+               break;
+       default:
+               addstr("                             ");
+       }
+
        move(statusYPos - 9, statusXPos);
        printw("Seed: %d", initSeed);
        clrtoeol();