Move the recruit dialog into a separate function.
This commit is contained in:
parent
0e49adb276
commit
adbbddcecd
3 changed files with 34 additions and 30 deletions
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue