예제 #1
0
void container_fill(container* c) {
	int x;
	c->num_items = c->size;
	for(x=0; x < c->size; ++x) {
		c->items[x] = generate_item();
	}
}
예제 #2
0
파일: entity.cpp 프로젝트: bkentel/bkrl
////////////////////////////////////////////////////////////////////////////////
// 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);
}