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 */
#endif
AtExit(CleanupScreens);
+ screens_dirty = 1;
RestoreSignals(NULL, &oldMask);
cbreak();
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)
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('|');
}
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();