Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}