-/* $NetBSD: screen.c,v 1.27 2011/10/03 12:32:28 roy Exp $ */
+/* $NetBSD: screen.c,v 1.33 2017/03/20 22:05:27 christos Exp $ */
/*-
* Copyright (c) 1992, 1993
putpad(buf);
}
+static void
+setcolor(int c)
+{
+ char *buf;
+ char monochrome[] = "\033[0m";
+ if (nocolor == 1)
+ return;
+ if (set_a_foreground == NULL)
+ return;
+
+ if (c == 0 || c == 7)
+ buf = monochrome;
+ else
+ buf = tiparm(set_a_foreground, c);
+ if (buf != NULL)
+ putpad(buf);
+}
+
/*
* Set up from termcap.
*/
MINCOLS, MINROWS);
stop(""); /* stop() supplies \n */
}
+ Offset = (Rows - D_LAST + D_FIRST - 2) / 2;
if (tcgetattr(0, &oldtt) < 0)
stop("tcgetattr() fails");
newtt = oldtt;
* We made it. We are now in screen mode, modulo TIstr
* (which we will fix immediately).
*/
- if (enter_ca_mode)
- putstr(enter_ca_mode);
- if (cursor_invisible)
- putstr(cursor_invisible);
+ const char *tstr;
+ if ((tstr = enter_ca_mode) != NULL)
+ putstr(tstr);
+ if ((tstr = cursor_invisible) != NULL)
+ putstr(tstr);
if (tstp != SIG_IGN)
(void) signal(SIGTSTP, scr_stop);
if (ttou != SIG_IGN)
sigaddset(&nsigset, SIGTTOU);
(void) sigprocmask(SIG_BLOCK, &nsigset, &osigset);
/* move cursor to last line */
- if (cursor_to_ll)
- putstr(cursor_to_ll);
+ const char *tstr;
+ if ((tstr = cursor_to_ll) != NULL)
+ putstr(tstr);
else
moveto(Rows - 1, 0);
/* exit screen mode */
- if (exit_ca_mode)
- putstr(exit_ca_mode);
- if (cursor_normal)
- putstr(cursor_normal);
+ if ((tstr = exit_ca_mode) != NULL)
+ putstr(tstr);
+ if ((tstr = cursor_normal) != NULL)
+ putstr(tstr);
(void) fflush(stdout);
(void) tcsetattr(0, TCSADRAIN, &oldtt);
isset = 0;
putpad(cursor_home);
else
moveto(0, 0);
+ setcolor(0);
(void) printf("Score: %d", score);
curscore = score;
}
putstr("Next shape:");
/* draw */
+ setcolor(nextshape->color);
putpad(enter_standout_mode);
moveto(r, 2*c);
putstr(" ");
putpad(exit_standout_mode);
cur_so = 0;
}
- moveto(RTOD(j), CTOD(i));
+ moveto(RTOD(j + Offset), CTOD(i));
}
if (enter_standout_mode) {
if (so != cur_so) {
+ setcolor(so);
putpad(so ?
enter_standout_mode :
exit_standout_mode);
cur_so = so;
}
+#ifdef DEBUG
+ char buf[3];
+ snprintf(buf, sizeof(buf), "%d%d", so, so);
+ putstr(buf);
+#else
putstr(" ");
+#endif
} else
putstr(so ? "XX" : " ");
ccol = i + 1;