void Simulation::loadObjectList() {
	for (int i = 0; i < foreObjOptions.quantity; i++) {
		foreObjOptions.bodyDef.position = b2Vec2(rand() % window->getSize().x / SCALE, rand() % window->getSize().y / SCALE);
		objectList.push_back(DynamicObject(world, window, foreObjOptions));
		objectList.back().applyForce(b2Vec2(float32(rand() % 200 - 100), float32(rand() % 200 - 100)), 100);
	}
}
Beispiel #2
0
DynamicObject Builder::open(const boost::filesystem::path &so) const
{
  // use complete path to open a file, since dlopen() handles simple file
  // names in the funny way (i.e. "./my.so" works, but "my.so" doesn't).
  const std::string p=boost::filesystem::system_complete(so).string();
  dlerror();                                        // remove last error
  void *h=dlopen(p.c_str(), flags_ );               // open shared object
  const char *err=dlerror();                        // read error message
  if(err!=NULL)                                     // check for error
    throw ExceptionCannotOpenSharedObject(SYSTEM_SAVE_LOCATION, so, err);
  HandlePtrNN handle( new Handle(h) );
  return DynamicObject(handle);                     // return obtained handle
}
std::shared_ptr<Creature> ObjectFactory::createCreature(TemplateCreaturePreset &presetTemplate, RarityType &rarityType){
	TemplateCreatureBase &templateCreatureBase = engine::objectLibrary.creatureBaseTemplates[presetTemplate.creatureBaseId];

	int health =
		(int)(engine::healthMax *
		presetTemplate.healthFromMax *
		rarityType.improvementMultiplier *
		engine::random.variationMultiplier(engine::statisticVariation));

	int stamina =
		(int)(engine::staminaMax *
		presetTemplate.healthFromMax *
		rarityType.improvementMultiplier *
		engine::random.variationMultiplier(engine::statisticVariation));

	int magic =
		(int)(engine::magicMax *
		presetTemplate.magicFromMax *
		rarityType.improvementMultiplier *
		engine::random.variationMultiplier(engine::statisticVariation));
	
	double lootDropsFromMax = 
		0.30;

	std::shared_ptr<Creature> creature = std::shared_ptr<Creature>(new Creature(
		presetTemplate.id,
		RarityMod(rarityType), //engine::raritySystem.getCreatureMod(rarityType)
		DynamicObject(GameObject(
		presetTemplate.name,
		Creature::CREATURE,
		presetTemplate.glyph),
		health,
		templateCreatureBase.visualEffectOnTakeDamage),
		stamina,
		magic,
		engine::objectLibrary.ais[presetTemplate.aiId]->copy(),
		templateCreatureBase.limbs,
		lootDropsFromMax
		));
	//equip weapons
	for (auto &weaponId : presetTemplate.weaponIds){
		auto &weapon = createWeapon(engine::objectLibrary.weaponTemplates[weaponId], rarityType);
		creature->inventory.items.add(weapon);
		creature->inventory.equip(weapon);
	}
	//equip armors
	for (auto &armorId : presetTemplate.armorIds){
		auto &armor = createArmor(engine::objectLibrary.armorTemplates[armorId], rarityType);
		creature->inventory.items.add(armor);
		creature->inventory.equip(armor);
	}
	//equip accessories
	for (auto &accessoryId : presetTemplate.accessoryIds){
		auto &accessory = createAccessory(engine::objectLibrary.accessoryTemplates[accessoryId], rarityType);
		creature->inventory.items.add(accessory);
		creature->inventory.equip(accessory);
	}
	//regen stats
	creature->healthHit(-9999);
	creature->staminaHit(-9999);
	creature->magicHit(-9999);
	return creature;
}