summaryrefslogtreecommitdiff
path: root/src/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/display.c')
-rw-r--r--src/display.c56
1 files changed, 54 insertions, 2 deletions
diff --git a/src/display.c b/src/display.c
index 5d6317b..8ed3d73 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..
nodelay(stdscr, true); // Non-blocking input
@@ -65,10 +116,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();
}
}