Game Stats: fixed handling and display of leaderless, non-hidden sides
This commit is contained in:
parent
fc0235d675
commit
11162e02e7
3 changed files with 27 additions and 5 deletions
|
@ -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"
|
||||
|
|
|
@ -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(); });
|
||||
|
|
|
@ -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. */
|
||||
|
|
Loading…
Add table
Reference in a new issue