The Battle for Wesnoth  1.13.10+dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
gui2::dialogs::mp_lobby Class Reference

#include <lobby.hpp>

Inheritance diagram for gui2::dialogs::mp_lobby:
Inheritance graph

Public Types

enum  lobby_result {
  QUIT, JOIN, OBSERVE, CREATE,
  RELOAD_CONFIG
}
 

Public Member Functions

 mp_lobby (const config &game_config, mp::lobby_info &info, wesnothd_connection &connection)
 
 ~mp_lobby ()
 
int get_joined_game_id () const
 
void update_gamelist ()
 
void update_playerlist ()
 
- Public Member Functions inherited from gui2::dialogs::modal_dialog
 modal_dialog ()
 
virtual ~modal_dialog ()
 
bool show (const unsigned auto_close_time=0)
 Shows the window. More...
 
windowget_window () const
 Returns a pointer to the dialog's window. More...
 
int get_retval () const
 
void set_always_save_fields (const bool always_save_fields)
 
void set_restore (const bool restore)
 
void set_allow_plugin_skip (const bool allow_plugin_skip)
 
void set_show_even_without_video (const bool show_even_without_video)
 
- Public Member Functions inherited from quit_confirmation
 quit_confirmation (const std::function< bool()> &prompt=&quit_confirmation::default_prompt)
 
 ~quit_confirmation ()
 

Protected Member Functions

void update_gamelist_header ()
 
void update_gamelist_diff ()
 
void update_gamelist_filter ()
 
std::map< std::string, string_mapmake_game_row_data (const mp::game_info &game)
 
void adjust_game_row_contents (const mp::game_info &game, grid *grid, bool add_callbacks=true)
 
- Protected Member Functions inherited from gui2::dialogs::modal_dialog
field_boolregister_bool (const std::string &id, const bool mandatory, const std::function< bool()> callback_load_value=nullptr, const std::function< void(bool)> callback_save_value=nullptr, const std::function< void(widget &)> callback_change=nullptr, const bool initial_fire=false)
 Creates a new boolean field. More...
 
field_boolregister_bool (const std::string &id, const bool mandatory, bool &linked_variable, const std::function< void(widget &)> callback_change=nullptr, const bool initial_fire=false)
 Creates a new boolean field. More...
 
field_integerregister_integer (const std::string &id, const bool mandatory, const std::function< int()> callback_load_value=nullptr, const std::function< void(int)> callback_save_value=nullptr)
 Creates a new integer field. More...
 
field_integerregister_integer (const std::string &id, const bool mandatory, int &linked_variable)
 Creates a new integer field. More...
 
field_textregister_text (const std::string &id, const bool mandatory, const std::function< std::string()> callback_load_value=nullptr, const std::function< void(const std::string &)> callback_save_value=nullptr, const bool capture_focus=false)
 Creates a new text field. More...
 
field_textregister_text (const std::string &id, const bool mandatory, std::string &linked_variable, const bool capture_focus=false)
 Creates a new text field. More...
 
field_labelregister_label (const std::string &id, const bool mandatory, const std::string &text, const bool use_markup=false)
 Registers a new styled_widget as a label. More...
 
field_labelregister_image (const std::string &id, const bool mandatory, const std::string &filename)
 Registers a new styled_widget as image. More...
 

Private Types

enum  JOIN_MODE { DO_JOIN, DO_OBSERVE, DO_EITHER }
 

Private Member Functions

void update_selected_game ()
 
void network_handler ()
 Network polling callback. More...
 
void process_network_data (const config &data)
 
void process_gamelist (const config &data)
 
void process_gamelist_diff (const config &data)
 
void enter_game (const mp::game_info &game, JOIN_MODE mode)
 Exits the lobby and enters the given game. More...
 
void enter_game_by_index (const int index, JOIN_MODE mode)
 Entry wrapper for enter_game, where game is located by index. More...
 
void enter_game_by_id (const int game_id, JOIN_MODE mode)
 Entry wrapper for enter_game, where game is located by game id. More...
 
void enter_selected_game (JOIN_MODE mode)
 Enter game by index, where index is the selected game listbox row. More...
 
void show_preferences_button_callback (window &window)
 
void refresh_lobby ()
 
void game_filter_reload ()
 
void game_filter_change_callback ()
 
void game_filter_keypress_callback (const SDL_Keycode key)
 
void gamelist_change_callback ()
 
void player_filter_callback ()
 
void user_dialog_callback (mp::user_info *info)
 
void skip_replay_changed_callback (window &window)
 
bool exit_hook (window &window)
 
virtual const std::string & window_id () const override
 Inherited from modal_dialog, implemented by REGISTER_DIALOG. More...
 
virtual void post_build (window &window) override
 Inherited from modal_dialog. More...
 
virtual void pre_show (window &window) override
 Inherited from modal_dialog. More...
 
virtual void post_show (window &window) override
 Inherited from modal_dialog. More...
 
- Private Member Functions inherited from gui2::dialogs::plugin_executor
 plugin_executor ()
 
 ~plugin_executor ()
 

Static Private Member Functions

static bool logout_prompt ()
 

Private Attributes

const configgame_config_
 
listboxgamelistbox_
 
mp::lobby_infolobby_info_
 
chatboxchatbox_
 
toggle_buttonfilter_friends_
 
toggle_buttonfilter_ignored_
 
toggle_buttonfilter_slots_
 
toggle_buttonfilter_invert_
 
text_boxfilter_text_
 
int selected_game_id_
 
player_list player_list_
 
bool player_list_dirty_
 
bool gamelist_dirty_
 
unsigned last_gamelist_update_
 
bool gamelist_diff_update_
 
wesnothd_connectionnetwork_connection_
 
size_t lobby_update_timer_
 Timer for updating the lobby. More...
 
std::vector< int > gamelist_id_at_row_
 
bool delay_playerlist_update_
 
bool delay_gamelist_update_
 
int joined_game_id_
 
- Private Attributes inherited from gui2::dialogs::plugin_executor
std::unique_ptr< plugins_contextplugins_context_
 

Friends

struct lobby_delay_gamelist_update_guard
 

Additional Inherited Members

- Static Public Member Functions inherited from quit_confirmation
static bool quit ()
 Shows the quit confirmation if needed. More...
 
static void quit_to_title ()
 
static void quit_to_desktop ()
 
static bool show_prompt (const std::string &message)
 
static bool default_prompt ()
 

Detailed Description

Definition at line 70 of file lobby.hpp.

Member Enumeration Documentation

Enumerator
DO_JOIN 
DO_OBSERVE 
DO_EITHER 

Definition at line 119 of file lobby.hpp.

Enumerator
QUIT 
JOIN 
OBSERVE 
CREATE 
RELOAD_CONFIG 

Definition at line 95 of file lobby.hpp.

Constructor & Destructor Documentation

gui2::dialogs::mp_lobby::mp_lobby ( const config game_config,
mp::lobby_info info,
wesnothd_connection connection 
)
gui2::dialogs::mp_lobby::~mp_lobby ( )

Definition at line 171 of file lobby.cpp.

References lobby_update_timer_, and gui2::remove_timer().

Member Function Documentation

void gui2::dialogs::mp_lobby::adjust_game_row_contents ( const mp::game_info game,
grid grid,
bool  add_callbacks = true 
)
protected
void gui2::dialogs::mp_lobby::enter_game ( const mp::game_info game,
JOIN_MODE  mode 
)
private

Exits the lobby and enters the given game.

This assembles the game request for the server and handles any applicable pre-join actions, such as prompting the player for the game's password or informing them additonal content needs installing.

The lobby window will be closed on completion, assuming an error wasn't encountered.

Parameters
gameInfo on the game we're attempting to join.
modeWhether joining as player, observer or whichever works.

Definition at line 926 of file lobby.cpp.

References _(), config::add_child(), mp::game_info::addons_outcome, mp::game_info::can_join(), mp::game_info::can_observe(), DO_EITHER, DO_JOIN, DO_OBSERVE, config::empty(), ERR_LB, gui2::dialogs::modal_dialog::get_window(), mp::game_info::id, JOIN, joined_game_id_, network_connection_, OBSERVE, preferences::password(), mp::game_info::password_required, RELOAD_CONFIG, mp::game_info::required_addons, mp::game_info::SATISFIED, wesnothd_connection::send_data(), gui2::window::set_retval(), and gui2::show_error_message().

Referenced by enter_game_by_id(), and enter_game_by_index().

void gui2::dialogs::mp_lobby::enter_game_by_id ( const int  game_id,
JOIN_MODE  mode 
)
private

Entry wrapper for enter_game, where game is located by game id.

Definition at line 994 of file lobby.cpp.

References enter_game(), ERR_LB, mp::lobby_info::get_game_by_id(), and lobby_info_.

Referenced by adjust_game_row_contents(), and pre_show().

void gui2::dialogs::mp_lobby::enter_game_by_index ( const int  index,
JOIN_MODE  mode 
)
private

Entry wrapper for enter_game, where game is located by index.

Definition at line 983 of file lobby.cpp.

References enter_game(), ERR_LB, mp::lobby_info::games(), and lobby_info_.

Referenced by enter_selected_game().

void gui2::dialogs::mp_lobby::enter_selected_game ( JOIN_MODE  mode)
private

Enter game by index, where index is the selected game listbox row.

Definition at line 1006 of file lobby.cpp.

References enter_game_by_index(), gamelistbox_, and gui2::listbox::get_selected_row().

Referenced by pre_show().

bool gui2::dialogs::mp_lobby::exit_hook ( window window)
private

Definition at line 714 of file lobby.cpp.

References gui2::window::CANCEL, gui2::window::get_retval(), and quit_confirmation::quit().

Referenced by pre_show().

void gui2::dialogs::mp_lobby::game_filter_change_callback ( )
private

Definition at line 1082 of file lobby.cpp.

References game_filter_reload(), and update_gamelist_filter().

Referenced by pre_show().

void gui2::dialogs::mp_lobby::game_filter_keypress_callback ( const SDL_Keycode  key)
private

Definition at line 1074 of file lobby.cpp.

References game_filter_reload(), and update_gamelist_filter().

Referenced by pre_show().

void gui2::dialogs::mp_lobby::game_filter_reload ( )
private
void gui2::dialogs::mp_lobby::gamelist_change_callback ( )
private

Definition at line 1088 of file lobby.cpp.

References update_selected_game().

Referenced by pre_show().

int gui2::dialogs::mp_lobby::get_joined_game_id ( ) const
inline

Definition at line 77 of file lobby.hpp.

References joined_game_id_.

bool gui2::dialogs::mp_lobby::logout_prompt ( )
staticprivate

Definition at line 124 of file lobby.cpp.

References _(), and quit_confirmation::show_prompt().

std::map< std::string, string_map > gui2::dialogs::mp_lobby::make_game_row_data ( const mp::game_info game)
protected
void gui2::dialogs::mp_lobby::network_handler ( )
private
void gui2::dialogs::mp_lobby::player_filter_callback ( )
private
void gui2::dialogs::mp_lobby::post_build ( window window)
overrideprivatevirtual

Inherited from modal_dialog.

Todo:
Should become a global hotkey after 1.8, then remove it here.

Reimplemented from gui2::dialogs::modal_dialog.

Definition at line 178 of file lobby.cpp.

References hotkey::HOTKEY_FULLSCREEN, hotkey::HOTKEY_PREFERENCES, gui2::event::dispatcher::register_hotkey(), show_preferences_button_callback(), CVideo::toggle_fullscreen(), and gui2::window::video().

void gui2::dialogs::mp_lobby::post_show ( window window)
overrideprivatevirtual
void gui2::dialogs::mp_lobby::pre_show ( window window)
overrideprivatevirtual

Inherited from modal_dialog.

Reimplemented from gui2::dialogs::modal_dialog.

Definition at line 723 of file lobby.cpp.

References gui2::chatbox::active_window_changed(), gui2::add_timer(), preferences::blindfold_replay(), gui2::window::CANCEL, chatbox_, gui2::menu_button::connect_click_handler(), gui2::event::connect_signal_mouse_left_click(), gui2::event::connect_signal_notify_modified(), gui2::event::connect_signal_pre_key_press(), CREATE, DO_JOIN, DO_OBSERVE, enter_game_by_id(), enter_selected_game(), exit_hook(), filter_friends_, filter_ignored_, filter_invert_, filter_slots_, filter_text_, game_config_, game_filter_change_callback(), game_filter_keypress_callback(), game_filter_reload(), mp::lobby_info::gamelist(), gamelist_change_callback(), gamelistbox_, mp::lobby_info::games(), config::has_attribute(), gui2::dialogs::player_list::init(), lobby_info_, game_config::lobby_network_timer, lobby_update_timer_, network_connection_, network_handler(), player_filter_callback(), player_list_, player_list_dirty_, preferences::playerlist_sort_name(), preferences::playerlist_sort_relation(), gui2::dialogs::plugin_executor::plugins_context_, refresh_lobby(), gui2::chatbox::room_window_open(), SCOPE_LB, selected_game_id_, gui2::chatbox::send_chat_message(), gui2::chatbox::set_active_window_changed_callback(), gui2::chatbox::set_lobby_info(), gui2::menu_button::set_selected(), gui2::toggle_button::set_value(), gui2::chatbox::set_wesnothd_connection(), show_preferences_button_callback(), preferences::skip_mp_replay(), skip_replay_changed_callback(), gui2::dialogs::player_list::sort_by_name, gui2::dialogs::player_list::sort_by_relation, update_gamelist(), update_playerlist(), and gui2::dialogs::player_list::update_sort_icons().

void gui2::dialogs::mp_lobby::process_gamelist ( const config data)
private
void gui2::dialogs::mp_lobby::process_gamelist_diff ( const config data)
private
void gui2::dialogs::mp_lobby::process_network_data ( const config data)
private
void gui2::dialogs::mp_lobby::refresh_lobby ( )
private
void gui2::dialogs::mp_lobby::show_preferences_button_callback ( window window)
private

The screen size might have changed force an update of the size.

Todo:
This might no longer be needed when gui2 is done.

The screen size might have changed force an update of the size.

Todo:
This might no longer be needed when gui2 is done.

Definition at line 1016 of file lobby.cpp.

References gui2::dialogs::preferences_dialog::display(), game_config_, gui2::settings::gamemap_height, gui2::settings::gamemap_width, gui2::window::invalidate_layout(), refresh_lobby(), CVideo::screen_area(), gui2::settings::screen_height, gui2::settings::screen_width, and gui2::window::video().

Referenced by post_build(), and pre_show().

void gui2::dialogs::mp_lobby::skip_replay_changed_callback ( window window)
private

Definition at line 1129 of file lobby.cpp.

References preferences::set_blindfold_replay(), and preferences::set_skip_mp_replay().

Referenced by pre_show().

void gui2::dialogs::mp_lobby::update_gamelist ( )
void gui2::dialogs::mp_lobby::update_gamelist_diff ( )
protected
void gui2::dialogs::mp_lobby::update_gamelist_filter ( )
protected
void gui2::dialogs::mp_lobby::update_gamelist_header ( )
protected
void gui2::dialogs::mp_lobby::update_playerlist ( )
void gui2::dialogs::mp_lobby::update_selected_game ( )
private
void gui2::dialogs::mp_lobby::user_dialog_callback ( mp::user_info info)
private
virtual const std::string& gui2::dialogs::mp_lobby::window_id ( ) const
overrideprivatevirtual

Inherited from modal_dialog, implemented by REGISTER_DIALOG.

Implements gui2::dialogs::modal_dialog.

Friends And Related Function Documentation

friend struct lobby_delay_gamelist_update_guard
friend

Definition at line 222 of file lobby.hpp.

Member Data Documentation

chatbox* gui2::dialogs::mp_lobby::chatbox_
private

Definition at line 185 of file lobby.hpp.

Referenced by pre_show(), process_network_data(), update_playerlist(), and user_dialog_callback().

bool gui2::dialogs::mp_lobby::delay_gamelist_update_
private
bool gui2::dialogs::mp_lobby::delay_playerlist_update_
private

Definition at line 216 of file lobby.hpp.

Referenced by update_playerlist(), and user_dialog_callback().

toggle_button* gui2::dialogs::mp_lobby::filter_friends_
private

Definition at line 187 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

toggle_button* gui2::dialogs::mp_lobby::filter_ignored_
private

Definition at line 189 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

toggle_button* gui2::dialogs::mp_lobby::filter_invert_
private

Definition at line 193 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

toggle_button* gui2::dialogs::mp_lobby::filter_slots_
private

Definition at line 191 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

text_box* gui2::dialogs::mp_lobby::filter_text_
private

Definition at line 195 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

const config& gui2::dialogs::mp_lobby::game_config_
private

Definition at line 179 of file lobby.hpp.

Referenced by adjust_game_row_contents(), pre_show(), and show_preferences_button_callback().

bool gui2::dialogs::mp_lobby::gamelist_diff_update_
private

Definition at line 207 of file lobby.hpp.

Referenced by network_handler(), and process_gamelist().

bool gui2::dialogs::mp_lobby::gamelist_dirty_
private
std::vector<int> gui2::dialogs::mp_lobby::gamelist_id_at_row_
private

Definition at line 214 of file lobby.hpp.

Referenced by update_gamelist(), and update_gamelist_diff().

listbox* gui2::dialogs::mp_lobby::gamelistbox_
private
int gui2::dialogs::mp_lobby::joined_game_id_
private

Definition at line 220 of file lobby.hpp.

Referenced by enter_game(), and get_joined_game_id().

unsigned gui2::dialogs::mp_lobby::last_gamelist_update_
private

Definition at line 205 of file lobby.hpp.

Referenced by network_handler(), update_gamelist(), and update_gamelist_diff().

mp::lobby_info& gui2::dialogs::mp_lobby::lobby_info_
private
size_t gui2::dialogs::mp_lobby::lobby_update_timer_
private

Timer for updating the lobby.

Definition at line 212 of file lobby.hpp.

Referenced by post_show(), pre_show(), and ~mp_lobby().

wesnothd_connection& gui2::dialogs::mp_lobby::network_connection_
private

Definition at line 209 of file lobby.hpp.

Referenced by enter_game(), network_handler(), pre_show(), and refresh_lobby().

player_list gui2::dialogs::mp_lobby::player_list_
private

Definition at line 199 of file lobby.hpp.

Referenced by player_filter_callback(), pre_show(), and update_playerlist().

bool gui2::dialogs::mp_lobby::player_list_dirty_
private
int gui2::dialogs::mp_lobby::selected_game_id_
private

The documentation for this class was generated from the following files: