Move the recruit dialog into a separate function.

This commit is contained in:
Boldizsár Lipka 2013-04-04 15:33:54 +02:00
parent 0e49adb276
commit adbbddcecd
3 changed files with 34 additions and 30 deletions

View file

@ -248,6 +248,37 @@ void show_objectives(const config &level, const std::string &objectives)
(objectives.empty() ? no_objectives : objectives), "", true);
}
int recruit_dialog(display& disp, std::vector< const unit_type* >& units, const std::vector< std::string >& items, int side, const std::string& title_suffix)
{
dialogs::unit_types_preview_pane unit_preview(
units, NULL, side);
std::vector<gui::preview_pane*> preview_panes;
preview_panes.push_back(&unit_preview);
gui::menu::basic_sorter sorter;
sorter.set_alpha_sort(1);
gui::dialog rmenu(disp, _("Recruit") + title_suffix,
_("Select unit:") + std::string("\n"),
gui::OK_CANCEL,
gui::dialog::default_style);
rmenu.add_button(new help::help_button(disp, "recruit_and_recall"),
gui::dialog::BUTTON_HELP);
gui::menu::imgsel_style units_display_style(gui::menu::bluebg_style);
units_display_style.scale_images(font::relative_size(72), font::relative_size(72));
gui::menu* units_menu = new gui::menu(disp.video(), items, false, -1,
gui::dialog::max_menu_width, &sorter, &units_display_style, false);
units_menu->sort_by(1); // otherwise it's unsorted by default
rmenu.set_menu(units_menu);
rmenu.set_panes(preview_panes);
return rmenu.show();
}
namespace {
/** Class to handle deleting a saved game. */

View file

@ -68,6 +68,8 @@ void show_objectives(const config &level, const std::string &objectives);
*/
std::string load_game_dialog(display& disp, const config& terrain_config, bool* select_difficulty, bool* show_replay, bool* cancel_orders);
int recruit_dialog(display& disp, std::vector<const unit_type*>& units, const std::vector<std::string>& items, int side, const std::string& title_suffix);
/** Show unit-stats in a side-pane to unit-list, recall-list, etc. */
class unit_preview_pane : public gui::preview_pane
{

View file

@ -776,36 +776,7 @@ void menu_handler::recruit(int side_num, const map_location &last_hex)
return;
}
int recruit_res = 0;
{
dialogs::unit_types_preview_pane unit_preview(
sample_units, NULL, side_num);
std::vector<gui::preview_pane*> preview_panes;
preview_panes.push_back(&unit_preview);
gui::menu::basic_sorter sorter;
sorter.set_alpha_sort(1);
gui::dialog rmenu(*gui_, _("Recruit") + get_title_suffix(side_num),
_("Select unit:") + std::string("\n"),
gui::OK_CANCEL,
gui::dialog::default_style);
rmenu.add_button(new help::help_button(*gui_,"recruit_and_recall"),
gui::dialog::BUTTON_HELP);
gui::menu::imgsel_style units_display_style(gui::menu::bluebg_style);
units_display_style.scale_images(font::relative_size(72), font::relative_size(72));
gui::menu* units_menu = new gui::menu(gui_->video(), items, false, -1,
gui::dialog::max_menu_width, &sorter, &units_display_style, false);
units_menu->sort_by(1); // otherwise it's unsorted by default
rmenu.set_menu(units_menu);
rmenu.set_panes(preview_panes);
recruit_res = rmenu.show();
}
int recruit_res = dialogs::recruit_dialog(*gui_, sample_units, items, side_num, get_title_suffix(side_num));
if(recruit_res != -1) {
do_recruit(item_keys[recruit_res], side_num, last_hex);