void container_fill(container* c) { int x; c->num_items = c->size; for(x=0; x < c->size; ++x) { c->items[x] = generate_item(); } }
//////////////////////////////////////////////////////////////////////////////// // generate_entity //////////////////////////////////////////////////////////////////////////////// bkrl::entity bkrl::generate_entity( random::generator& gen , entity_definitions const& entity_defs , item_definitions const& item_defs , loot_table_definitions const& loot_defs , item_store& items , spawn_table const& table ) { //TODO not thread safe; can't be initialized (save / load) static auto next_instance_id = uint32_t {0x80000000}; auto const size = entity_defs.get_definitions_size(); auto const index = random::uniform_range(gen, 0, size - 1); auto const& def = entity_defs.get_definition_at(index); auto const& id = def.id; entity result; auto const max_health = static_cast<health_t>(def.health(gen)); result.id = id; result.instance_id = entity_id {next_instance_id++}; result.data.health = ranged_value<health_t> {max_health}; result.data.position = {0, 0}; item_birthplace origin; origin.type = item_birthplace::entity; origin.id = id_to_value(id); def.drops.generate(gen, loot_defs, [&](item_def_id const itm_id, uint16_t const n) { result.data.items.insert( generate_item(gen, itm_id, items, item_defs, origin) ); }); return result; }
int main(int argc,char *argv[]) { int N=atoi(argv[1]); item_t *array=malloc(N*sizeof(item_t)); int i; clock_t c1,c2; srand((unsigned)time(NULL)); generate_init(); for(i=0;i<N;i++){ generate_item(&array[i]); } // print_array(array,N); c1=clock(); radix_sort(array,0,N-1); c2=clock(); // print_array(array,N); printf("sorted time: %.5fs\n",(double)(c2-c1)/CLOCKS_PER_SEC); return(0); }