diff --git a/src/client/menu.c b/src/client/menu.c index ce3309fc8201c3010494f768fcd1c586a8877a42..e420ef9783fb9a89056503b003dca3248d75fdc6 100644 --- a/src/client/menu.c +++ b/src/client/menu.c @@ -14,6 +14,10 @@ #include <unistd.h> // getuid #include "common.h" +// === CONSTANTS === +#define COLOURPAIR_CANTBUY 1 +#define COLOURPAIR_SELECTED 2 + // === PROTOTYPES === int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted); void PrintAlign(int Row, int Col, int Width, const char *Left, char Pad1, const char *Mid, char Pad2, const char *Right, ...); @@ -85,6 +89,9 @@ int ShowNCursesUI(void) // Enter curses mode initscr(); + start_color(); + init_pair(COLOURPAIR_CANTBUY, COLOR_BLACK, COLOR_BLACK); // Not avaliable + init_pair(COLOURPAIR_SELECTED, COLOR_GREEN, COLOR_BLACK); // Selected cbreak(); noecho(); // Get max index @@ -174,7 +181,7 @@ int ShowNCursesUI(void) PrintAlign(yBase+height-1, xBase+1, width-2, username, ' ', balance_str, ' ', gsUserFlags); PrintAlign(yBase+height, xBase+1, width-2, - "q: Quit", ' ', "Arrow: Select", ' ', "Enter: Drop"); + "q: Quit", ' ', "Arrows: Select", ' ', "Enter: Buy"); // Get input @@ -209,7 +216,6 @@ int ShowNCursesUI(void) case 'j': _ItemDown(); break; case 'k': _ItemUp(); break; case 'l': break; - case 0x1b: // Escape case 'q': ret = -1; // -1: Return with no dispense break; @@ -311,17 +317,29 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted) switch( status ) { case 0: - if( bHilighted ) + if( bHilighted ) { + color_set( COLOURPAIR_SELECTED, NULL ); printw("-> "); - else + } + else if( price > giUserBalance ) { + attrset(A_BOLD); + color_set( COLOURPAIR_CANTBUY, NULL ); + printw(" "); + } + else { + color_set( 0, NULL ); printw(" "); + } break; case 1: + attrset(A_BOLD); + color_set( COLOURPAIR_CANTBUY, NULL ); printw("SLD "); break; default: case -1: + color_set( COLOURPAIR_CANTBUY, NULL ); printw("ERR "); break; } @@ -329,6 +347,8 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted) printw("%-*.*s", nameWidth, nameWidth, name); printw(" %4i", price); + color_set(0, NULL); + attrset(A_NORMAL); } else {