// Add a new item to a list or increase quantity if already in the list void List::add(size_t over_item_number, int image_id, Uint16 id, int quantity) { do_drop_item_sound(); // Add to quanity if already in list // if new item has proper ID, try to use it if (id != unset_item_uid) { // match only against items with the same id for (size_t i=0; i<quantities.size(); ++i) if (item_ids[i] == id) { quantities[i] += quantity; return; } // or with items that don't have a proper id but do match the image for (size_t i=0; i<quantities.size(); ++i) if ((item_ids[i] == unset_item_uid) && (image_ids[i] == image_id)) { quantities[i] += quantity; return; } } // if the new items does not have a proper id, just look for a matching image id else { for (size_t i=0; i<quantities.size(); ++i) if (image_ids[i] == image_id) { quantities[i] += quantity; return; } } // otherwise insert the new item or add it to the end if (over_item_number < get_num_items()) { image_ids.insert(image_ids.begin()+over_item_number, image_id); item_ids.insert(item_ids.begin()+over_item_number, id); quantities.insert(quantities.begin()+over_item_number, quantity); } else { image_ids.push_back(image_id); item_ids.push_back(id); quantities.push_back(quantity); } }
void course_render_init() { free(treeLocsOrderedByZ); tree_t* treeLocs = get_tree_locs(); int numTrees = get_num_trees(); treeLocsOrderedByZ = (tree_t*)malloc(sizeof(tree_t)*numTrees); memcpy(treeLocsOrderedByZ,treeLocs,sizeof(tree_t)*numTrees); order_trees_by_z(treeLocsOrderedByZ,numTrees); first_tree_to_check=0; itemLocs = get_item_locs(); numItems = get_num_items(); int i; for (i=0;i<numItems;i++) { if (itemLocs[i].item_type == kStartType) { char* name = get_item_name(itemLocs[i].item_type); TRDebugLog("item name : %s, itemType = %d coord x = %f et coord y = %f\n",name, itemLocs[i].item_type,itemLocs[i].ray.pt.x,itemLocs[i].ray.pt.y); } } }