mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-25 17:17:39 +00:00
MP/Player List Helper: added method to get user_info of selected user
This commit is contained in:
parent
75e0a4ac52
commit
72bfb7e391
@ -135,6 +135,8 @@ void lobby_player_list_helper::update(const std::vector<mp::user_info>& user_inf
|
||||
}
|
||||
}
|
||||
|
||||
info_map.clear();
|
||||
|
||||
for(std::size_t i = 0; i < player_lists.size(); ++i) {
|
||||
assert(inputs[i].node_data.size() == inputs[i].user_data.size());
|
||||
|
||||
@ -142,9 +144,15 @@ void lobby_player_list_helper::update(const std::vector<mp::user_info>& user_inf
|
||||
const auto new_nodes = player_lists[i].root->replace_children("player", inputs[i].node_data);
|
||||
|
||||
for(std::size_t k = 0; k < new_nodes.size(); ++k) {
|
||||
auto* node = new_nodes[k].get();
|
||||
auto* info = inputs[i].user_data[k];
|
||||
|
||||
// Note the user_info associated with this node
|
||||
info_map.try_emplace(node, info);
|
||||
|
||||
connect_signal_mouse_left_double_click(
|
||||
find_widget<toggle_panel>(new_nodes[k].get(), "tree_view_node_label", false),
|
||||
std::bind(user_callback, inputs[i].user_data[k])
|
||||
find_widget<toggle_panel>(node, "tree_view_node_label", false),
|
||||
std::bind(user_callback, info)
|
||||
);
|
||||
}
|
||||
|
||||
@ -167,4 +175,10 @@ void lobby_player_list_helper::init(window& w)
|
||||
sub_list{tree, _("Other Games"), false}
|
||||
};
|
||||
}
|
||||
|
||||
const mp::user_info* lobby_player_list_helper::get_selected_info() const
|
||||
{
|
||||
return info_map.at(tree->selected_item());
|
||||
}
|
||||
|
||||
} // namespace gui2
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
#include <array>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
namespace mp
|
||||
@ -61,12 +62,18 @@ private:
|
||||
/** The double click callback bound to each player's tree node. */
|
||||
std::function<void(const mp::user_info*)> user_callback;
|
||||
|
||||
/** Node-to-info mappings for easy access. */
|
||||
std::map<const tree_view_node*, const mp::user_info*> info_map;
|
||||
|
||||
public:
|
||||
lobby_player_list_helper(decltype(user_callback) ucb)
|
||||
: player_lists()
|
||||
, tree(nullptr)
|
||||
, user_callback(ucb)
|
||||
, info_map()
|
||||
{
|
||||
}
|
||||
|
||||
const mp::user_info* get_selected_info() const;
|
||||
};
|
||||
} // namespace gui2
|
||||
|
Loading…
x
Reference in New Issue
Block a user