diff options
| -rw-r--r-- | src/display.c | 56 |
1 files changed, 54 insertions, 2 deletions
diff --git a/src/display.c b/src/display.c index 4504a8f..a0c9ff9 100644 --- a/src/display.c +++ b/src/display.c @@ -1,7 +1,41 @@ #include "display.h" +// Definition of ncurses color pair identifiers +#define CP_WHITE_ON_BLACK 1 +#define CP_YELLOW_ON_BLACK 2 +#define CP_BLUE_ON_BLACK 3 +#define CP_MAGENTA_ON_BLACK 4 +#define CP_RED_ON_BLACK 5 + +static bool colors = false; + void display_draw_card(WINDOW *w, const uint32_t row, const uint32_t col, const card c) { + unsigned color_pair = 0; + + if (colors) + { + switch (card_get_points(c)) + { + case 7: + color_pair = CP_MAGENTA_ON_BLACK; + break; + case 5: + color_pair = CP_RED_ON_BLACK; + break; + case 3: + color_pair = CP_YELLOW_ON_BLACK; + break; + case 2: + color_pair = CP_BLUE_ON_BLACK; + break; + default: + color_pair = CP_WHITE_ON_BLACK; + } + + attron(COLOR_PAIR(color_pair)); + } + mvwaddch(w, row, col, ACS_ULCORNER); // Upper left corner mvwhline(w, row, col+1, ACS_HLINE, 5); // Upper horizontal line mvwaddch(w, row, col+6, ACS_URCORNER); // Upper right corner @@ -52,11 +86,28 @@ void display_draw_card(WINDOW *w, const uint32_t row, const uint32_t col, const // " " mvwaddch(w, row+2, col+3, ACS_DIAMOND); } + + if (colors) + { + attroff(COLOR_PAIR(color_pair)); + } } void display_init(void) { initscr(); // Start curses mode + if (TRUE == has_colors()) + { + colors = true; + start_color(); + + init_pair(CP_WHITE_ON_BLACK, COLOR_WHITE, COLOR_BLACK); + init_pair(CP_YELLOW_ON_BLACK, COLOR_YELLOW, COLOR_BLACK); + init_pair(CP_BLUE_ON_BLACK, COLOR_BLUE, COLOR_BLACK); + init_pair(CP_MAGENTA_ON_BLACK, COLOR_MAGENTA, COLOR_BLACK); + init_pair(CP_RED_ON_BLACK, COLOR_RED, COLOR_BLACK); + bkgd(COLOR_PAIR(0)); + } raw(); // Line buffering disabled keypad(stdscr, true); // We get F1, F2 etc.. noecho(); // Don't echo() while we do getch @@ -64,10 +115,11 @@ void display_init(void) clear(); refresh(); + int j = 0; for (int i = 45; i < 70; i++) { - display_draw_card(stdscr, 0, 0, i+1); - usleep(500000); + display_draw_card(stdscr, 0, j++*2, i+1); + usleep(750000); refresh(); } } |
