diff --git a/src/client/common.h b/src/client/common.h index 2ac604fb4d355fc2c3db963cbb39f0c417d290c6..0de25c143b9d42be7e3b5eca378ac758e0c9b81b 100644 --- a/src/client/common.h +++ b/src/client/common.h @@ -17,17 +17,19 @@ typedef struct sItem { char *Type; int ID; - int Status; // 0: Availiable, 1: Sold out, -1: Error + int Status; // 0: Available, 1: Sold out, -1: Error char *Desc; int Price; } tItem; +#define ITEM_STATUS_AVAILABLE 0 +#define ITEM_STATUS_SOLDOUT 1 +#define ITEM_STATUS_ERROR -1 + enum eUI_Modes { UI_MODE_BASIC, // Non-NCurses UI_MODE_STANDARD, - UI_MODE_DRINKSONLY, - UI_MODE_ALL, NUM_UI_MODES }; diff --git a/src/client/main.c b/src/client/main.c index bd9bbc745dd757f3fad6b1141cd5b34c349630d2..dac6c952d8a0bc3a01048adf126765a5b0b08a3e 100644 --- a/src/client/main.c +++ b/src/client/main.c @@ -149,8 +149,6 @@ void ShowUsage(void) " Show help text\n" " -G\n" " Use simple textual interface (instead of ncurses)\n" - " -D\n" - " Drinks only in user interface\n" " -n\n" " Dry run - Do not actually do dispenses\n" " -m <min balance>\n" @@ -191,8 +189,8 @@ int subcommand_finger(void) const char *status; switch(gaItems[i].Status) { - case 0: status = "Avail"; break; - case 1: status = "Sold "; break; + case ITEM_STATUS_AVAILABLE: status = "Avail"; break; + case ITEM_STATUS_SOLDOUT: status = "Sold "; break; default: status = "Error"; break; @@ -969,9 +967,6 @@ int ParseArguments(int argc, char *argv[]) case 'G': // Don't use GUI giUIMode = UI_MODE_BASIC; break; - case 'D': // Drinks only - giUIMode = UI_MODE_DRINKSONLY; - break; case 'n': // Dry Run / read-only gbDryRun = 1; break; @@ -996,9 +991,6 @@ int ParseArguments(int argc, char *argv[]) else if( strcmp(arg, "--dry-run") == 0 ) { gbDryRun = 1; } - else if( strcmp(arg, "--drinks-only") == 0 ) { - giUIMode = UI_MODE_DRINKSONLY; - } else if( strcmp(arg, "--can-select-all") == 0 ) { gbDisallowSelectWithoutBalance = 0; } diff --git a/src/client/menu.c b/src/client/menu.c index 1eaf10017681a47c9b27f51ae1dd47a7b40c856d..9f7c419c18e060ce98528d2f1002c9ad7df0475f 100644 --- a/src/client/menu.c +++ b/src/client/menu.c @@ -15,7 +15,6 @@ #include "common.h" // === CONSTANTS === -#define COLOURPAIR_DEFAULT 0 #define COLOURPAIR_CANTBUY 1 #define COLOURPAIR_SELECTED 2 @@ -100,8 +99,10 @@ int ShowNCursesUI(void) initscr(); start_color(); use_default_colors(); - init_pair(COLOURPAIR_DEFAULT, -1, -1); // Not avaliable - init_pair(COLOURPAIR_CANTBUY, COLOR_BLACK, -1); // Not avaliable + init_pair(COLOURPAIR_CANTBUY, 8, -1); // Not available; colour 8 is "bright black" ie grey + // Previously this was COLOR_BLACK + the bold attribute, but + // that is not rendered the same way by all terminals + // ncurses does not have names for bright colours init_pair(COLOURPAIR_SELECTED, COLOR_GREEN, -1); // Selected cbreak(); noecho(); @@ -272,7 +273,7 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted) { char *name = NULL; int price = 0; - int status = -1; + int status = ITEM_STATUS_ERROR; switch(giUIMode) { @@ -315,8 +316,6 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted) status = gaItems[Index].Status; break; case UI_MODE_BASIC: - case UI_MODE_DRINKSONLY: - case UI_MODE_ALL: default: return -1; } @@ -333,13 +332,12 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted) // Show hilight and status switch( status ) { - case 0: + case ITEM_STATUS_AVAILABLE: if( bHilighted ) { color_set( COLOURPAIR_SELECTED, NULL ); printw("-> "); } else if( price > giUserBalance ) { - attrset(A_BOLD); color_set( COLOURPAIR_CANTBUY, NULL ); printw(" "); } @@ -348,14 +346,13 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted) printw(" "); } break; - case 1: - attrset(A_BOLD); + case ITEM_STATUS_SOLDOUT: color_set( COLOURPAIR_CANTBUY, NULL ); printw("SLD "); break; default: - case -1: + case ITEM_STATUS_ERROR: color_set( COLOURPAIR_CANTBUY, NULL ); printw("ERR "); break; @@ -373,9 +370,9 @@ int ShowItemAt(int Row, int Col, int Width, int Index, int bHilighted) } } - // If the item isn't availiable for sale, return -1 (so it's skipped) - if( status > 0 || (price > giUserBalance && gbDisallowSelectWithoutBalance) ) - Index = -2; + // If the item isn't available for sale, return -1 (so it's skipped) + if( status == ITEM_STATUS_SOLDOUT || (price > giUserBalance && gbDisallowSelectWithoutBalance) ) + Index = -1; return Index; } diff --git a/src/client/protocol.c b/src/client/protocol.c index 079a4ff0d03814a3e285bdd246ebd73123d8c7f6..6332f2f066eed527db47a7f0a6624e02a38de797 100644 --- a/src/client/protocol.c +++ b/src/client/protocol.c @@ -393,11 +393,11 @@ int ReadItemInfo(int Socket, tItem *Dest) Dest->ID = atoi( buf + matches[4].rm_so ); if( strcmp(statusStr, "avail") == 0 ) - Dest->Status = 0; + Dest->Status = ITEM_STATUS_AVAILABLE; else if( strcmp(statusStr, "sold") == 0 ) - Dest->Status = 1; + Dest->Status = ITEM_STATUS_SOLDOUT; else if( strcmp(statusStr, "error") == 0 ) - Dest->Status = -1; + Dest->Status = ITEM_STATUS_ERROR; else { fprintf(stderr, "Unknown response from dispense server (status '%s')\n", statusStr);