void force_list_manager::update_leader_list(int old_faction_combo_index)
{
	// const config& side = *side_list_[side_index];

	int selected_index_in_forces = (leaders_.empty() || !old_faction_combo_index)? -1: leaders_[old_faction_combo_index];
	int modified_faction_combo_index = old_faction_combo_index;

	leaders_.clear();
/*
	if (side["random_faction"].to_bool()) {
		if(faction_combo_ != NULL) {
			std::vector<std::string> dummy;
			dummy.push_back("-");
			faction_combo_->enable(false);
			faction_combo_->set_items(dummy);
			faction_combo_->set_selected(0);
		}
		return;
	} else {
		if(faction_combo_ != NULL)
			faction_combo_->enable(true);
		if(gender_combo_ != NULL)
			gender_combo_->enable(true);
	}
*/
	std::vector<std::string> force_ids;
	if (!era_cfg_["factions"].empty()) {
		force_ids = utils::split(era_cfg_["factions"]);
	}

	std::vector<std::string>::const_iterator itor;

	leaders_.push_back(RANDOM_FORCE);

	int partial_index = 1;
	for (itor = force_ids.begin(); itor != force_ids.end(); ++itor) {
		int index = 0;
		for (std::vector<std::pair<const config *, int> >::iterator v = force_list_.begin(); v != force_list_.end(); ++ v, index ++) {
			if (v->second >= 0 && v->second != index_) {
				continue;
			}
			const config& force = *(v->first);
			if (*itor == force["id"]) {
				leaders_.push_back(index); 
				if (selected_index_in_forces == index) {
					modified_faction_combo_index = partial_index;
				}
				partial_index ++;
			}
		}
	}

	populate_leader_combo(modified_faction_combo_index);
}
Esempio n. 2
0
void leader_list_manager::set_leader_combo(gui::combo* combo)
{
	int selected = leader_combo_ != NULL ? leader_combo_->selected() : 0;
	leader_combo_ = combo;

	if(leader_combo_ != NULL) {
		if(leaders_.empty()) {
			update_leader_list(0);
		} else {
			populate_leader_combo(selected);
		}
	}
}
Esempio n. 3
0
void leader_list_manager::update_leader_list(int side_index)
{
	const config& side = *side_list_[side_index];

	leaders_.clear();

	if (side["random_faction"].to_bool()) {
		if(leader_combo_ != NULL) {
			std::vector<std::string> dummy;
			dummy.push_back(utils::unicode_em_dash);
			leader_combo_->enable(false);
			leader_combo_->set_items(dummy);
			leader_combo_->set_selected(0);
		}
		return;
	} else {
		if(leader_combo_ != NULL)
			leader_combo_->enable(true);
		if(gender_combo_ != NULL)
			gender_combo_->enable(true);
	}

	if(!side["leader"].empty()) {
		leaders_ = utils::split(side["leader"]);
	}

	const std::string default_leader = side["type"];
	const std::string random_leader = "random";
	size_t default_index = 0;

	std::vector<std::string>::const_iterator itor;

	for (itor = leaders_.begin(); itor != leaders_.end(); ++itor) {
		if (*itor == default_leader) {
			break;
		}
		default_index++;
	}

	if (default_index == leaders_.size()) {
		leaders_.push_back(default_leader);
	}

	if (default_leader != random_leader) {
		leaders_.push_back(random_leader);
	}

	populate_leader_combo(default_index);
}