short process_cmd(void) { char cmd[4]; short ret = 0; RECV(STDIN, cmd, sizeof(cmd)); if (0 == memcmp((void *)CMD_BUY, cmd, sizeof(CMD_BUY))) { ret = do_buy(); } else if (0 == memcmp((void *)CMD_CHECK, cmd, sizeof(CMD_CHECK))) { ret = do_check(); } else if (0 == memcmp((void *)CMD_ADD, cmd, sizeof(CMD_ADD))) { ret = do_add(); } else if (0 == memcmp((void *)CMD_RM, cmd, sizeof(CMD_RM))) { ret = do_rm(); } else if (0 == memcmp((void *)CMD_UPDATE, cmd, sizeof(CMD_UPDATE))) { ret = do_update(); } else if (0 == memcmp((void *)CMD_ONSALE, cmd, sizeof(CMD_ONSALE))) { ret = do_onsale(); } else if (0 == memcmp((void *)CMD_NOSALE, cmd, sizeof(CMD_NOSALE))) { ret = do_nosale(); } else if (0 == memcmp((void *)CMD_LIST, cmd, sizeof(CMD_LIST))) { ret = do_list(); } else if (0 == memcmp((void *)CMD_QUIT, cmd, sizeof(CMD_QUIT))) { ret = -2; } else { ret = -1; } return ret; }
static int idw_do_keystroke (GR_EVENT *event) { TSheet event_sheet; int n; if ( game.dismiss_sheet ) { if (event->keystroke.ch == '\r') { if (game.days == game.max_days) restart(); game.dismiss_sheet = 0; game.in_transaction = 0; idw_do_draw(); } return 1; } switch (event->keystroke.ch) { case '\r': /* Wheel button */ if (! game.screen->menuitems[game.select].sheet) break; if ( (game.screen == &buy) && (!afford(game.select)) ) break; if ( (game.screen == &sell) && (!game.drugs[game.select]) ) break; if ( (game.screen->menuitems[game.select].sheet == &borrow_sheet) && (!game.debt) ) break; if ( (game.screen->menuitems[game.select].sheet == &withdraw_sheet) && (!game.bank) ) break; init_sheets(); if (! game.in_transaction ) { // set initial ammount value to be shown on the sheet game.ammount = game.screen->menuitems[game.select].sheet->ammount; init_sheets(); } init_screens(); if ( game.screen == &jet ) { if (game.city == game.select) break; travel(); // let's get a random event (high-low)+low n = (rand() % EVENT_COUNT); // it has a 50-50 chance of occurring if (! (rand() % 2)) { event_sheet = random_event(n); idw_draw_sheet(&event_sheet); init_screens(); } else { init_screens(); idw_do_draw(); } check_over(); break; } if ( game.in_transaction ) { // we're going to buy/sell if (game.screen == &buy) do_buy(game.select, game.ammount); if (game.screen == &sell) do_sell(game.select, game.ammount); if (game.screen->menuitems[game.select].sheet == &deposit_sheet) do_deposit(); if (game.screen->menuitems[game.select].sheet == &withdraw_sheet) do_withdraw(); if (game.screen->menuitems[game.select].sheet == &pay_sheet) do_pay(); if (game.screen->menuitems[game.select].sheet == &borrow_sheet) do_borrow(); // transaction finished game.in_transaction = 0; init_screens(); idw_do_draw(); break; } idw_draw_sheet(NULL); break; case 'd': /* Play/pause button */ break; case 'w': /* Rewind button */ if (game.in_transaction) break; if (!game.screen->prev) break; game.screen = game.screen->prev; game.select=0; idw_do_draw(); break; case 'f': /* Fast forward button */ if (game.in_transaction) break; if (!game.screen->next) break; game.screen = game.screen->next; game.select=0; idw_do_draw(); break; case 'l': /* Wheel left */ if (game.in_transaction) { if (game.ammount) game.ammount--; init_sheets(); idw_draw_sheet(NULL); break; } if (game.select <= 0) break; game.select--; idw_do_draw(); break; case 'r': /* Wheel right */ if (game.in_transaction) { if (game.ammount < game.screen->menuitems[game.select].sheet->ammount) game.ammount++; init_sheets(); idw_draw_sheet(NULL); break; } if (game.select >= game.screen->count-1) break; game.select++; idw_do_draw(); break; case 'm': /* Menu button */ //if (game.in_transaction) { // cancel transaction // game.in_transaction = 0; // game.ammount = 0; // idw_do_draw(); // break; // } // pz_close_window (idw_wid); // GrDestroyGC(idw_gc); // break; // default: GrDestroyGC( idw_gc ); pz_close_window( idw_wid ); break; } return 1; }