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); } } }
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); } }
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; } }
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()); }
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); } }