示例#1
0
std::vector<attack_type> unit_type::attacks() const
{
	std::vector<attack_type> res;
	for (const config &att : cfg_.child_range("attack")) {
		res.push_back(attack_type(att));
	}

	return res;
}
static void set_weapon_info(twindow& window
		, const std::vector<battle_context>& weapons
		, const int best_weapon)
{
	tlistbox& weapon_list =
			find_widget<tlistbox>(&window, "weapon_list", false);
	window.keyboard_capture(&weapon_list);

	const config empty;
	attack_type no_weapon(empty);

	for (size_t i = 0; i < weapons.size(); ++i) {
		const battle_context_unit_stats& attacker =
				weapons[i].get_attacker_stats();

		const battle_context_unit_stats& defender =
				weapons[i].get_defender_stats();

		const attack_type& attacker_weapon = attack_type(*attacker.weapon);
		const attack_type& defender_weapon = attack_type(
				defender.weapon ? *defender.weapon : no_weapon);

		std::map<std::string, string_map> data;
		string_map item;

		item["label"] = attacker_weapon.name();
		data.insert(std::make_pair("attacker_weapon", item));

		item["label"] = defender_weapon.name();
		data.insert(std::make_pair("defender_weapon", item));

		weapon_list.add_row(data);

	}

	assert(best_weapon < static_cast<int>(weapon_list.get_item_count()));
	weapon_list.select_row(best_weapon);
}