diff options
Diffstat (limited to 'src/display.c')
| -rw-r--r-- | src/display.c | 44 |
1 files changed, 34 insertions, 10 deletions
diff --git a/src/display.c b/src/display.c index da12eae..cbc9eb1 100644 --- a/src/display.c +++ b/src/display.c @@ -14,10 +14,13 @@ static WINDOW *w_stack_points; static WINDOW *w_current_state; static WINDOW *w_hand_cards; -static void draw_card(WINDOW *w, const uint8_t row, const uint8_t col, const card c) +static void draw_card(WINDOW *w, const uint8_t row, const uint8_t col, const bool highlight, const card c) { unsigned color_pair = 0; + if (highlight) + wattron(w, A_BOLD); + if (colors) { switch (card_get_points(c)) @@ -96,26 +99,38 @@ static void draw_card(WINDOW *w, const uint8_t row, const uint8_t col, const car { wattroff(w, COLOR_PAIR(color_pair)); } + + if (highlight) + wattroff(w, A_BOLD); } -static void draw_cardstack(WINDOW *w, const uint8_t row, const uint8_t col, const cardstack cs) +static void draw_cardstack(WINDOW *w, const uint8_t row, const uint8_t col, const bool highlight, const cardstack cs) { for (uint8_t i = 0; i < MAX_CARDSTACK_SIZE; i++) { if (cs[i] != 0) { - draw_card(w, row, i*2, cs[i]); + draw_card(w, row, i*2, highlight, cs[i]); } } } -void display_window_table_cards(const tablestacks ts) +void display_window_table_cards(const tablestacks ts, const bool highlight, const uint8_t highlighted_stack) { mvwprintw(w_table_cards, 0, 2, "Table Cards:"); for (uint8_t i = 0; i < NUM_TABLESTACKS; i++) { - draw_cardstack(w_table_cards, 1 + i*5, 0, ts[i]); + if (highlight) + { + if (i == highlighted_stack) + { + draw_cardstack(w_table_cards, 1 + i*5, 0, true, ts[i]); + continue; + } + } + + draw_cardstack(w_table_cards, 1 + i*5, 0, false, ts[i]); } wrefresh(w_table_cards); @@ -168,16 +183,25 @@ void display_window_current_state(const player_name_open_card_tuple pnoc[], cons * Displays the hand cards window. * @param[in] h The hand that will be displayed. h must not contain 0 */ -void display_window_hand_cards(const hand h) +void display_window_hand_cards(const hand h, const bool highlight, const uint8_t highlighted_card) { mvwprintw(w_hand_cards, 0, 0, "Hand Cards:"); for (uint8_t i = 0; i < MAX_HAND_CARDS; i++) { + if (highlight && i == highlighted_card) + { + if (i < 5) // Start with the first row of cards + draw_card(w_hand_cards, 1, i*8, true, h[i]); + else // And then draw the second row + draw_card(w_hand_cards, 6, (i-5)*8, true, h[i]); + continue; + } + if (i < 5) // Start with the first row of cards - draw_card(w_hand_cards, 1, i*8, h[i]); + draw_card(w_hand_cards, 1, i*8, false, h[i]); else // And then draw the second row - draw_card(w_hand_cards, 6, (i-5)*8, h[i]); + draw_card(w_hand_cards, 6, (i-5)*8, false, h[i]); } wrefresh(w_hand_cards); @@ -239,10 +263,10 @@ void display_init(void) // Draw user interface mvvline(0, 22, ACS_VLINE, 21); // Vertical line refresh(); - display_window_table_cards(ts); + display_window_table_cards(ts, true, 1); display_window_stack_points(ts); display_window_current_state(pnoc, num_players, score); - display_window_hand_cards(h); + display_window_hand_cards(h, true, 8); sleep(4); } |
