void statistics_dialog::action(gui::dialog_process_info &dp_info) { int sel = get_menu().selection(); bool has_details = sel < 5 && sel >= 0 && unit_count_[sel] > 0; detail_btn_->enable(has_details); if(dp_info.double_clicked && has_details) { set_result(sel); } else if(dp_info.new_key_down && !dp_info.key_down) { set_result(gui::CLOSE_DIALOG); } // Prepare the sub-dialog for Statistic Details std::string title; std::vector<std::string> items_sub; switch(result()) { case gui::CLOSE_DIALOG: break; case 0: items_sub = create_unit_table(stats_.recruits, team_num_); title = _("Recruits"); break; case 1: items_sub = create_unit_table(stats_.recalls, team_num_); title = _("Recalls"); break; case 2: items_sub = create_unit_table(stats_.advanced_to, team_num_); title = _("Advancements"); break; case 3: items_sub = create_unit_table(stats_.deaths, team_num_); title = _("Losses"); break; case 4: items_sub = create_unit_table(stats_.killed, team_num_); /** @todo FIXME? Perhaps killed units shouldn't have the same team-color as your own. */ title = _("Kills"); break; default: break; } if (items_sub.empty() == false) { gui::dialog d(get_display(), title + " (" + player_name_ + ")", "", gui::CLOSE_ONLY); d.set_menu(items_sub); d.show(); dp_info.clear_buttons(); set_result(gui::CONTINUE_DIALOG); } }
void statistics_dialog::action(gui::dialog_process_info &dp_info) { int sel = get_menu().selection(); bool has_details = sel < 5 && sel >= 0 && unit_count_[sel] > 0; detail_btn_->enable(has_details); if(dp_info.double_clicked && has_details) { set_result(sel); } else if(dp_info.new_key_down && !dp_info.key_down) { set_result(gui::CLOSE_DIALOG); } // Prepare the sub-dialog for Statistic Details std::string title; std::vector<std::string> items_sub; switch(result()) { case gui::CLOSE_DIALOG: break; case 0: items_sub = create_unit_table(current_stats().recruits, team_num_); title = _("Recruits"); break; case 1: items_sub = create_unit_table(current_stats().recalls, team_num_); title = _("Recalls"); break; case 2: items_sub = create_unit_table(current_stats().advanced_to, team_num_); title = _("Advancements"); break; case 3: items_sub = create_unit_table(current_stats().deaths, team_num_); title = _("Losses"); break; case 4: // Give kills a (probably) different team color. items_sub = create_unit_table(current_stats().killed, team_num_ == 1 ? 2 : 1); title = _("Kills"); break; case BUTTON_SCENE: // Scenario selection. do_scene_selection(); set_result(gui::CONTINUE_DIALOG); break; case BUTTON_TOGGLE: // Toggle between campaign and scenario stats. display_stats(!use_campaign_); set_result(gui::CONTINUE_DIALOG); break; default: break; } if (items_sub.empty() == false) { gui::dialog d(get_video(), title + " (" + player_name_ + ")", "", gui::CLOSE_ONLY); d.set_menu(items_sub); d.show(); dp_info.clear_buttons(); set_result(gui::CONTINUE_DIALOG); } }