/** * @brief Shows the player his cargo. * * @param str Unused. */ static void info_cargo_menu( unsigned int parent, char* str ) { (void) str; unsigned int wid; char **buf; int nbuf; int i; /* Create the window */ wid = window_create( "Cargo", -1, -1, CARGO_WIDTH, CARGO_HEIGHT ); window_setParent( wid, parent ); /* Buttons */ window_addButton( wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT, "closeCargo", "Back", window_close ); window_addButton( wid, -40 - BUTTON_WIDTH, 20, BUTTON_WIDTH, BUTTON_HEIGHT, "btnJettisonCargo", "Jettison", cargo_jettison ); window_disableButton( wid, "btnJettisonCargo" ); /* List */ if (player->ncommodities==0) { /* No cargo */ buf = malloc(sizeof(char*)); buf[0] = strdup("None"); nbuf = 1; } else { /* List the player's cargo */ buf = malloc(sizeof(char*)*player->ncommodities); for (i=0; i<player->ncommodities; i++) { buf[i] = malloc(sizeof(char)*128); snprintf(buf[i],128, "%s%s %d", player->commodities[i].commodity->name, (player->commodities[i].id != 0) ? "*" : "", player->commodities[i].quantity); } nbuf = player->ncommodities; } window_addList( wid, 20, -40, CARGO_WIDTH - 40, CARGO_HEIGHT - BUTTON_HEIGHT - 80, "lstCargo", buf, nbuf, 0, cargo_update ); cargo_update(wid, NULL); }
/** * @brief Generates the cargo list. */ static void cargo_genList( unsigned int wid ) { char **buf; int nbuf; int i; int w, h; /* Get the dimensions. */ window_dimWindow( wid, &w, &h ); /* Destroy widget if needed. */ if (widget_exists( wid, "lstCargo" )) window_destroyWidget( wid, "lstCargo" ); /* List */ if (player.p->ncommodities==0) { /* No cargo */ buf = malloc(sizeof(char*)); buf[0] = strdup("None"); nbuf = 1; } else { /* List the player's cargo */ buf = malloc(sizeof(char*)*player.p->ncommodities); for (i=0; i<player.p->ncommodities; i++) { buf[i] = malloc(sizeof(char)*128); snprintf(buf[i],128, "%s%s %d", player.p->commodities[i].commodity->name, (player.p->commodities[i].id != 0) ? "*" : "", player.p->commodities[i].quantity); } nbuf = player.p->ncommodities; } window_addList( wid, 20, -40, w - 40, h - BUTTON_HEIGHT - 80, "lstCargo", buf, nbuf, 0, cargo_update ); cargo_update(wid, NULL); }