Exemplo n.º 1
0
void leader_list_manager::update_gender_list(const std::string& leader)
{
	int gender_index = gender_combo_ != NULL ? gender_combo_->selected() : 0;
	genders_.clear();
	gender_ids_.clear();
	if (leader == "random" || leader == "-" || leader == "?") {
		// Assume random/unknown leader/faction == unknown gender
		gender_ids_.push_back("null");
		genders_.push_back("-");
		if (gender_combo_ != NULL) {
			gender_combo_->enable(false);
			gender_combo_->set_items(genders_);
			gender_combo_->set_selected(0);
		}
		return;
	}

	unit_type_data::unit_type_map_wrapper& utypes = unit_type_data::types();
	if (utypes.unit_type_exists(leader)) {
		const unit_type* ut;
		const unit_type* utg;
		ut = &(utypes.find_unit_type(leader)->second);
		const std::vector<unit_race::GENDER> genders = ut->genders();
		if ( (genders.size() < 2) && (gender_combo_ != NULL) ) {
			gender_combo_->enable(false);
		} else {
			gender_ids_.push_back("random");
			genders_.push_back(IMAGE_PREFIX + random_enemy_picture + COLUMN_SEPARATOR + _("gender^Random"));
			if (gender_combo_ != NULL) gender_combo_->enable(true);
		}
		for (std::vector<unit_race::GENDER>::const_iterator i=genders.begin(); i != genders.end(); ++i) {
			utg = &(ut->get_gender_unit_type(*i));

			// Make the internationalized titles for each gender, along with the WML ids
			if (*i == unit_race::FEMALE) {
				gender_ids_.push_back("female");
				genders_.push_back(IMAGE_PREFIX + utg->image() + get_RC_suffix(utg->flag_rgb()) +
						COLUMN_SEPARATOR + _("Female ♀"));
			} else {
				gender_ids_.push_back("male");
				genders_.push_back(IMAGE_PREFIX + utg->image() + get_RC_suffix(utg->flag_rgb()) +
						COLUMN_SEPARATOR + _("Male ♂"));
			}
		}
		if (gender_combo_ != NULL) {
			gender_combo_->set_items(genders_);
			assert(genders_.size()!=0);
			gender_index %= genders_.size();
			gender_combo_->set_selected(gender_index);
		}
	} else {
		gender_ids_.push_back("random");
		genders_.push_back(IMAGE_PREFIX + random_enemy_picture + COLUMN_SEPARATOR + _("Random"));
		if (gender_combo_ != NULL) {
			gender_combo_->enable(false);
			gender_combo_->set_items(genders_);
			gender_combo_->set_selected(0);
		}
	}
}
Exemplo n.º 2
0
void leader_list_manager::populate_leader_combo(int selected_index) {
	std::vector<std::string>::const_iterator itor;
	std::vector<std::string> leader_strings;
	for(itor = leaders_.begin(); itor != leaders_.end(); ++itor) {

		const unit_type *utp = unit_types.find(*itor);
		if (utp) {
			std::string gender;
			if (gender_combo_ != NULL && !genders_.empty() && size_t(gender_combo_->selected()) < genders_.size()) {
				gender = gender_ids_[gender_combo_->selected()];
			}
			const unit_type& ut = utp->get_gender_unit_type(gender);
			leader_strings.push_back(IMAGE_PREFIX + ut.image() + get_RC_suffix(ut.flag_rgb()) + COLUMN_SEPARATOR + ut.type_name());

		} else {
			if(*itor == "random") {
				leader_strings.push_back(IMAGE_PREFIX + random_enemy_picture + COLUMN_SEPARATOR + _("Random"));
			} else {
				leader_strings.push_back("?");
			}
		}
	}

	if(leader_combo_ != NULL) {
		leader_combo_->set_items(leader_strings);
		leader_combo_->set_selected(selected_index);
	}
}
Exemplo n.º 3
0
void flg_manager::reset_gender_combo(gui::combo& combo_gender, const std::string& color) const
{
	const unit_type* unit = unit_types.find(current_leader_);

	std::vector<std::string> genders;
	BOOST_FOREACH(const std::string& gender, choosable_genders_) {
		if (gender == unit_race::s_female || gender == unit_race::s_male) {
			if (unit) {
				const unit_type& gender_unit =
					unit->get_gender_unit_type(gender);

				std::string gender_name = (gender == unit_race::s_female) ?
					_("Female ♀") : _("Male ♂");
				genders.push_back(IMAGE_PREFIX + gender_unit.image() +
					get_RC_suffix(gender_unit.flag_rgb(), color) +
					COLUMN_SEPARATOR + gender_name);
			}
		} else if (gender == "random") {
			genders.push_back(IMAGE_PREFIX + random_enemy_picture +
				COLUMN_SEPARATOR + _("Random"));
		} else if (gender == "null") {
			genders.push_back(utils::unicode_em_dash);
		} else {
			genders.push_back("?");
		}
	}

	combo_gender.enable(genders.size() > 1 && !saved_game_);

	combo_gender.set_items(genders);
	combo_gender.set_selected(current_gender_index());
}
void leader_list_manager::update_gender_list(const std::string& leader)
{
	genders_.clear();
	gender_ids_.clear();
	if (leader == "random" || leader == "-" || leader == "?") {
		// Assume random/unknown leader/faction == unknown gender
		gender_ids_.push_back("null");
		genders_.push_back("-");
		gender_enabled_ = false;
	} else {
		const unit_type *utp = unit_types.find(leader);
		if (utp) {
			const unit_type &ut = *utp;
			const std::vector<unit_race::GENDER> genders = ut.genders();
			if (genders.size() > 1) {
				gender_ids_.push_back("random");
				genders_.push_back(IMAGE_PREFIX + random_enemy_picture + COLUMN_SEPARATOR + _("gender^Random"));
			}
			foreach(unit_race::GENDER gender, genders) {
				const unit_type& utg = ut.get_gender_unit_type(gender);

				// Make the internationalized titles for each gender, along with the WML ids
				if (gender == unit_race::FEMALE) {
					gender_ids_.push_back("female");
					genders_.push_back(IMAGE_PREFIX + utg.image() + get_RC_suffix(utg.flag_rgb()) +
							COLUMN_SEPARATOR + _("Female ♀"));
				} else {
					gender_ids_.push_back("male");
					genders_.push_back(IMAGE_PREFIX + utg.image() + get_RC_suffix(utg.flag_rgb()) +
							COLUMN_SEPARATOR + _("Male ♂"));
				}
			}
			gender_enabled_ = true;
		} else {
			gender_ids_.push_back("random");
			genders_.push_back(IMAGE_PREFIX + random_enemy_picture + COLUMN_SEPARATOR + _("Random"));
			gender_enabled_ = false;
		}
	}
Exemplo n.º 5
0
void flg_manager::reset_leader_combo(gui::combo& combo_leader, const std::string& color) const
{
	std::vector<std::string> leaders;
	BOOST_FOREACH(const std::string& leader, choosable_leaders_) {
		const unit_type* unit = unit_types.find(leader);
		if (unit) {
			leaders.push_back(IMAGE_PREFIX + unit->image() +
				get_RC_suffix(unit->flag_rgb(), color) +
				COLUMN_SEPARATOR + unit->type_name());
		} else if (leader == "random") {
			leaders.push_back(IMAGE_PREFIX + random_enemy_picture +
				COLUMN_SEPARATOR + _("Random"));
		} else if (leader == "null") {
			leaders.push_back(utils::unicode_em_dash);
		} else {
			leaders.push_back("?");
		}
	}

	combo_leader.enable(leaders.size() > 1 && !saved_game_);

	combo_leader.set_items(leaders);
	combo_leader.set_selected(current_leader_index());
}
Exemplo n.º 6
0
void leader_list_manager::populate_leader_combo(int selected_index) {
	std::vector<shared_string>::const_iterator itor;
	std::vector<shared_string> leader_strings;
	for(itor = leaders_.begin(); itor != leaders_.end(); ++itor) {

		unit_type_data::unit_type_map_wrapper& utypes = unit_type_data::types();

		//const std::string name = data_->unit_types->find(*itor).type_name();
		if (utypes.unit_type_exists(*itor)) {
			const unit_type* ut;
			ut = &(utypes.find_unit_type(*itor)->second);
			if (gender_combo_ != NULL && !genders_.empty() && size_t(gender_combo_->selected()) < genders_.size()) {
				if (gender_ids_[gender_combo_->selected()] == "male"){
					ut = &(utypes.find_unit_type(*itor)->second.get_gender_unit_type(unit_race::MALE));
				} else if (gender_ids_[gender_combo_->selected()] == "female") {
					ut = &(utypes.find_unit_type(*itor)->second.get_gender_unit_type(unit_race::FEMALE));
				}
			}
			const std::string name =  ut->type_name();
			const std::string image = ut->image();
			leader_strings.push_back(IMAGE_PREFIX + image + get_RC_suffix(ut->flag_rgb()) + COLUMN_SEPARATOR + name);

		} else {
			if(*itor == "random") {
				leader_strings.push_back(IMAGE_PREFIX + random_enemy_picture + COLUMN_SEPARATOR + _("Random"));
			} else {
				leader_strings.push_back("?");
			}
		}
	}

	if(leader_combo_ != NULL) {
		leader_combo_->set_items(leader_strings);
		leader_combo_->set_selected(selected_index);
	}
}