void get_storage_categories (const char *in_data, int len) { int i; int idx, idxp; idx = 1; for (i = 0; i < in_data[0] && i < STORAGE_CATEGORIES_SIZE && idx < len; i++) { storage_categories[i].id = (Uint8)in_data[idx++]; storage_categories[i].name[0] = to_color_char (c_orange1); idxp = 1; while (idx < len && idxp < sizeof (storage_categories[i].name) - 1 && in_data[idx] != '\0') { storage_categories[i].name[idxp++] = in_data[idx++]; } // always make sure the string is terminated storage_categories[i].name[idxp] = '\0'; // was the string too long? if (idxp >= sizeof (storage_categories[i].name) - 1) { // skip rest of string while (idx < len && in_data[idx] != '\0') idx++; } idx++; } if (sort_storage_categories) qsort(storage_categories, i, sizeof(*storage_categories), category_cmp); for (i = in_data[0]; i < STORAGE_CATEGORIES_SIZE; i++) { storage_categories[i].id = -1; storage_categories[i].name[0] = 0; } no_storage_categories = in_data[0]; if (storage_win > 0) vscrollbar_set_bar_len(storage_win, STORAGE_SCROLLBAR_CATEGORIES, ( no_storage_categories - STORAGE_CATEGORIES_DISPLAY ) > 1 ? (no_storage_categories - STORAGE_CATEGORIES_DISPLAY) : 1); selected_category=-1; active_storage_item=-1; display_storage_menu(); if (!view_only_storage) display_items_menu(); }
//put the flags later on void get_bags_items_list (const Uint8 *data) { Uint16 items_no; int i; int pos; int my_offset; view_ground_items=1; //clear the list clear_groundlist(); items_no = data[0]; if(items_no > ITEMS_PER_BAG) { return; } for(i=0;i<items_no;i++) { my_offset= i*7+1; pos= data[my_offset+6]; ground_item_list[pos].image_id= SDL_SwapLE16(*((Uint16 *)(data+my_offset))); ground_item_list[pos].quantity= SDL_SwapLE32(*((Uint32 *)(data+my_offset+2))); ground_item_list[pos].pos= pos; } // If we have auto bag empting set, only do so within 1 second of pressing getall if (ground_items_empty_next_bag) { if (abs(ground_items_empty_next_bag - SDL_GetTicks()) < 1000) pick_up_all_items(); ground_items_empty_next_bag = 0; } // Open and display the bag even if we have sent the server messages to // empty. Because if we can't carry the load the window needs to be shown. draw_pick_up_menu(); if(item_window_on_drop) { display_items_menu(); } }