Game Stats: fixed handling and display of leaderless, non-hidden sides

This commit is contained in:
Charles Dang 2016-08-10 19:46:25 +11:00
parent fc0235d675
commit 11162e02e7
3 changed files with 27 additions and 5 deletions

View file

@ -132,6 +132,7 @@
return_value_id = "ok"
[grid]
[row]
[column]
@ -155,6 +156,7 @@
[image]
id = "team_leader_image"
definition = "default"
linked_group = "image"
[/image]
[/column]
@ -396,6 +398,7 @@ Village"
return_value_id = "ok"
[grid]
[row]
[column]
@ -419,6 +422,7 @@ Village"
[image]
id = "team_leader_image"
definition = "default"
linked_group = "image"
[/image]
[/column]
@ -597,6 +601,11 @@ Village"
fixed_height = "true"
[/linked_group]
[linked_group]
id = "image"
fixed_height = "true"
[/linked_group]
[linked_group]
id = "tabs"
fixed_width = "true"

View file

@ -63,6 +63,17 @@ tgame_stats::tgame_stats(game_board& board, const int viewing_team)
}
}
unit_const_ptr tgame_stats::get_leader(const int side)
{
unit_map::const_iterator leader = board_.units().find_leader(side);
if(leader != board_.units().end()) {
return leader.get_shared_ptr();
}
return nullptr;
}
void tgame_stats::pre_show(twindow& window)
{
tlistbox& stats_list = find_widget<tlistbox>(&window, "game_stats_list", false);
@ -81,7 +92,7 @@ void tgame_stats::pre_show(twindow& window)
const team_data& data = team_data_[team.side() - 1];
unit_const_ptr leader = board_.units().find_leader(team.side()).get_shared_ptr();
unit_const_ptr leader = get_leader(team.side());
std::string leader_name;
std::string leader_image;
@ -192,8 +203,8 @@ void tgame_stats::pre_show(twindow& window)
// Sorting options for the status list
stats_list.register_sorting_option(0, [this](const int i) {
const std::string name = (*board_.units().find_leader(board_.teams()[i].side()).get_shared_ptr()).name();
return !name.empty() ? name : "Unknown"; });
unit_const_ptr leader = get_leader(i + 1);
return leader ? leader->name().str() : ""; });
stats_list.register_sorting_option(1, [this](const int i) { return board_.teams()[i].user_team_name().str(); });
stats_list.register_sorting_option(2, [this](const int i) { return board_.teams()[i].gold(); });
@ -204,8 +215,8 @@ void tgame_stats::pre_show(twindow& window)
// Sorting options for the settings list
settings_list.register_sorting_option(0, [this](const int i) {
const std::string name = (*board_.units().find_leader(board_.teams()[i].side()).get_shared_ptr()).name();
return !name.empty() ? name : "Unknown"; });
unit_const_ptr leader = get_leader(i + 1);
return leader ? leader->name().str() : ""; });
settings_list.register_sorting_option(1, [this](const int i) { return board_.teams()[i].side(); });
settings_list.register_sorting_option(2, [this](const int i) { return board_.teams()[i].start_gold(); });

View file

@ -52,6 +52,8 @@ private:
int selected_index_;
unit_const_ptr get_leader(const int side);
void on_tab_select(twindow& window);
/** Inherited from tdialog, implemented by REGISTER_DIALOG. */