void mp_staging::select_leader_callback(ng::side_engine_ptr side, grid& row_grid) { if(gui2::dialogs::faction_select::execute(side->flg(), side->color_id(), side->index() + 1)) { update_leader_display(side, row_grid); set_state_changed(); } }
void mp_staging::select_leader_callback(window& window, ng::side_engine_ptr side, grid& row_grid) { gui2::dialogs::faction_select dlg(side->flg(), std::to_string(side->color() + 1), side->index() + 1); dlg.show(window.video()); if(dlg.get_retval() == window::OK) { update_leader_display(side, row_grid); set_state_changed(); } }
void mp_staging::update_leader_display(ng::side_engine_ptr side, grid& row_grid) { const std::string current_faction = (*side->flg().choosable_factions()[side->flg().current_faction_index()])["name"]; // BIG FAT TODO: get rid of this shitty "null" string value in the FLG manager std::string current_leader = side->flg().current_leader() != "null" ? side->flg().current_leader() : font::unicode_em_dash; const std::string current_gender = side->flg().current_gender() != "null" ? side->flg().current_gender() : font::unicode_em_dash; // Sprite std::string new_image; if(side->flg().is_random_faction() || current_leader == "random") { new_image = ng::random_enemy_picture; } if(const unit_type* ut = unit_types.find(current_leader)) { const unit_type& type = ut->get_gender_unit_type(current_gender); new_image = formatter() << type.image() << "~RC(magenta>" << side->color_id() << ")"; // We don't need the unit type id anymore, and can now replace this variable with the type name current_leader = type.type_name(); } find_widget<image>(&row_grid, "leader_image", false).set_label(new_image); // Faction and leader if(!side->cfg()["name"].empty()) { current_leader = formatter() << side->cfg()["name"] << " (<i>" << current_leader << "</i>)"; } find_widget<label>(&row_grid, "leader_type", false).set_label(current_leader); find_widget<label>(&row_grid, "leader_faction", false).set_label("<span color='#a69275'>" + current_faction + "</span>"); // Gender if(current_gender != font::unicode_em_dash) { const std::string gender_icon = formatter() << "icons/icon-" << current_gender << ".png"; image& icon = find_widget<image>(&row_grid, "leader_gender", false); icon.set_label(gender_icon); icon.set_tooltip(current_gender); } }