The Battle for Wesnoth  1.17.0-dev
Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
gui2::dialogs::mp_lobby Class Reference

#include <lobby.hpp>

Inheritance diagram for gui2::dialogs::mp_lobby:

Public Types

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

Public Member Functions

 mp_lobby (mp::lobby_info &info, wesnothd_connection &connection, int &joined_game)
 
 ~mp_lobby ()
 
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
 Returns the cached window exit code. More...
 
void set_retval (int retval)
 Convenience wrapper to set the window's exit code. More...
 
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_help_callback ()
 
void show_preferences_button_callback ()
 
void show_server_info ()
 
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 ()
 
bool exit_hook (window &window)
 
virtual const std::string & window_id () const override
 The id of the window to build. More...
 
virtual void post_build (window &window) override
 Actions to be taken directly after the window is build. More...
 
virtual void pre_show (window &window) override
 Actions to be taken before showing the window. More...
 
virtual void post_show (window &window) override
 Actions to be taken after the window has been shown. More...
 
- Private Member Functions inherited from gui2::dialogs::plugin_executor
 plugin_executor ()
 
 ~plugin_executor ()
 

Static Private Member Functions

static bool logout_prompt ()
 

Private Attributes

listboxgamelistbox_
 
mp::lobby_infolobby_info_
 
chatboxchatbox_
 
field_boolfilter_friends_
 
field_boolfilter_ignored_
 
field_boolfilter_slots_
 
field_boolfilter_invert_
 
text_boxfilter_text_
 
int selected_game_id_
 
lobby_player_list_helper player_list_
 
bool player_list_dirty_
 
bool gamelist_dirty_
 
unsigned last_lobby_update_
 
bool gamelist_diff_update_
 
wesnothd_connectionnetwork_connection_
 
std::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_
 

Static Private Attributes

static std::string server_information_ = ""
 
static std::string announcements_ = ""
 

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 ()
 
- Protected Attributes inherited from gui2::dialogs::modal_dialog
std::unique_ptr< windowwindow_
 The window object build for this dialog. More...
 

Detailed Description

Definition at line 39 of file lobby.hpp.

Member Enumeration Documentation

◆ JOIN_MODE

Enumerator
DO_JOIN 
DO_OBSERVE 
DO_EITHER 

Definition at line 84 of file lobby.hpp.

◆ lobby_result

Enumerator
QUIT 
JOIN 
OBSERVE 
CREATE 
RELOAD_CONFIG 

Definition at line 62 of file lobby.hpp.

Constructor & Destructor Documentation

◆ mp_lobby()

gui2::dialogs::mp_lobby::mp_lobby ( mp::lobby_info info,
wesnothd_connection connection,
int &  joined_game 
)

◆ ~mp_lobby()

gui2::dialogs::mp_lobby::~mp_lobby ( )

Definition at line 130 of file lobby.cpp.

References lobby_update_timer_, and gui2::remove_timer().

Member Function Documentation

◆ adjust_game_row_contents()

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

◆ enter_game()

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 additional 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 789 of file lobby.cpp.

References _(), config::add_child(), mp::game_info::addons_outcome, mp::game_info::can_join(), mp::game_info::can_observe(), DBG_LB, 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().

◆ enter_game_by_id()

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 875 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().

◆ enter_game_by_index()

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 864 of file lobby.cpp.

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

Referenced by enter_selected_game().

◆ 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 887 of file lobby.cpp.

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

Referenced by pre_show().

◆ exit_hook()

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

Definition at line 563 of file lobby.cpp.

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

Referenced by pre_show().

◆ game_filter_change_callback()

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

Definition at line 978 of file lobby.cpp.

References game_filter_reload(), and update_gamelist_filter().

◆ game_filter_keypress_callback()

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

Definition at line 970 of file lobby.cpp.

References game_filter_reload(), and update_gamelist_filter().

Referenced by pre_show().

◆ game_filter_reload()

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

◆ gamelist_change_callback()

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

Definition at line 984 of file lobby.cpp.

References update_selected_game().

Referenced by pre_show().

◆ logout_prompt()

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

Definition at line 67 of file lobby.cpp.

References _().

◆ make_game_row_data()

std::map< std::string, string_map > gui2::dialogs::mp_lobby::make_game_row_data ( const mp::game_info game)
protected

◆ network_handler()

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

◆ player_filter_callback()

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

Definition at line 989 of file lobby.cpp.

References player_list_dirty_.

◆ post_build()

void gui2::dialogs::mp_lobby::post_build ( window window)
overrideprivatevirtual

◆ post_show()

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

Actions to be taken after the window has been shown.

At this point the registered fields already stored their values (if the OK has been pressed).

Parameters
windowThe window which has been shown.

Reimplemented from gui2::dialogs::modal_dialog.

Definition at line 693 of file lobby.cpp.

References lobby_update_timer_, gui2::dialogs::plugin_executor::plugins_context_, and gui2::remove_timer().

◆ pre_show()

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

Actions to be taken before showing the window.

At this point the registered fields are registered and initialized with their initial values.

Parameters
windowThe window to be shown.

Reimplemented from gui2::dialogs::modal_dialog.

Definition at line 568 of file lobby.cpp.

References gui2::chatbox::active_window_changed(), gui2::add_timer(), preferences::blindfold_replay(), gui2::CANCEL, chatbox_, gui2::event::connect_signal_mouse_left_click(), gui2::event::connect_signal_notify_modified(), gui2::event::connect_signal_pre_key_press(), CREATE, default_chat_log, DO_JOIN, DO_OBSERVE, enter_game_by_id(), enter_selected_game(), exit_hook(), filter_text_, game_filter_keypress_callback(), game_filter_reload(), mp::lobby_info::gamelist(), gamelist_change_callback(), gamelistbox_, mp::lobby_info::games(), mp::get_profile_link(), config::has_attribute(), gui2::lobby_player_list_helper::init(), gui2::chatbox::load_log(), lobby_info_, game_config::lobby_network_timer, lobby_update_timer_, mp::user_info::ME, N_, network_connection_, network_handler(), desktop::open_object(), player_list_, player_list_dirty_, gui2::dialogs::plugin_executor::plugins_context_, gui2::chatbox::room_window_open(), SCOPE_LB, selected_game_id_, gui2::chatbox::send_chat_message(), gui2::chatbox::set_active_window_changed_callback(), gui2::dialogs::modal_dialog::set_retval(), gui2::menu_button::set_selected(), gui2::chatbox::set_wesnothd_connection(), show_preferences_button_callback(), show_server_info(), preferences::skip_mp_replay(), skip_replay_changed_callback(), update_gamelist(), update_playerlist(), and mp::lobby_info::users().

◆ process_gamelist()

void gui2::dialogs::mp_lobby::process_gamelist ( const config data)
private

◆ process_gamelist_diff()

void gui2::dialogs::mp_lobby::process_gamelist_diff ( const config data)
private

◆ process_network_data()

void gui2::dialogs::mp_lobby::process_network_data ( const config data)
private

◆ refresh_lobby()

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

◆ show_help_callback()

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

Definition at line 897 of file lobby.cpp.

References help::show_help().

Referenced by post_build().

◆ show_preferences_button_callback()

void gui2::dialogs::mp_lobby::show_preferences_button_callback ( )
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 902 of file lobby.cpp.

References gui2::settings::gamemap_height, gui2::settings::gamemap_width, CVideo::get_singleton(), gui2::dialogs::modal_dialog::get_window(), gui2::window::invalidate_layout(), refresh_lobby(), CVideo::screen_area(), gui2::settings::screen_height, and gui2::settings::screen_width.

Referenced by post_build(), and pre_show().

◆ show_server_info()

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

Definition at line 928 of file lobby.cpp.

References announcements_, gui2::dialogs::server_info::display(), and server_information_.

Referenced by pre_show().

◆ skip_replay_changed_callback()

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

◆ update_gamelist()

void gui2::dialogs::mp_lobby::update_gamelist ( )

◆ update_gamelist_diff()

void gui2::dialogs::mp_lobby::update_gamelist_diff ( )
protected

◆ update_gamelist_filter()

void gui2::dialogs::mp_lobby::update_gamelist_filter ( )
protected

◆ update_gamelist_header()

void gui2::dialogs::mp_lobby::update_gamelist_header ( )
protected

◆ update_playerlist()

void gui2::dialogs::mp_lobby::update_playerlist ( )

◆ update_selected_game()

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

◆ user_dialog_callback()

void gui2::dialogs::mp_lobby::user_dialog_callback ( mp::user_info info)
private

◆ window_id()

virtual const std::string& gui2::dialogs::mp_lobby::window_id ( ) const
overrideprivatevirtual

The id of the window to build.

Implements gui2::dialogs::modal_dialog.

Friends And Related Function Documentation

◆ lobby_delay_gamelist_update_guard

friend struct lobby_delay_gamelist_update_guard
friend

Definition at line 182 of file lobby.hpp.

Member Data Documentation

◆ announcements_

std::string gui2::dialogs::mp_lobby::announcements_ = ""
inlinestaticprivate

Definition at line 185 of file lobby.hpp.

Referenced by process_network_data(), and show_server_info().

◆ chatbox_

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

Definition at line 148 of file lobby.hpp.

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

◆ delay_gamelist_update_

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

◆ delay_playerlist_update_

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

◆ filter_friends_

field_bool* gui2::dialogs::mp_lobby::filter_friends_
private

Definition at line 150 of file lobby.hpp.

Referenced by game_filter_reload().

◆ filter_ignored_

field_bool* gui2::dialogs::mp_lobby::filter_ignored_
private

Definition at line 151 of file lobby.hpp.

Referenced by game_filter_reload().

◆ filter_invert_

field_bool* gui2::dialogs::mp_lobby::filter_invert_
private

Definition at line 153 of file lobby.hpp.

Referenced by game_filter_reload().

◆ filter_slots_

field_bool* gui2::dialogs::mp_lobby::filter_slots_
private

Definition at line 152 of file lobby.hpp.

Referenced by game_filter_reload().

◆ filter_text_

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

Definition at line 155 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

◆ gamelist_diff_update_

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

Definition at line 167 of file lobby.hpp.

Referenced by network_handler(), and process_gamelist().

◆ gamelist_dirty_

bool gui2::dialogs::mp_lobby::gamelist_dirty_
private

◆ gamelist_id_at_row_

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

Definition at line 174 of file lobby.hpp.

Referenced by update_gamelist(), and update_gamelist_diff().

◆ gamelistbox_

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

◆ joined_game_id_

int& gui2::dialogs::mp_lobby::joined_game_id_
private

Definition at line 180 of file lobby.hpp.

Referenced by enter_game().

◆ last_lobby_update_

unsigned gui2::dialogs::mp_lobby::last_lobby_update_
private

◆ lobby_info_

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

◆ lobby_update_timer_

std::size_t gui2::dialogs::mp_lobby::lobby_update_timer_
private

Timer for updating the lobby.

Definition at line 172 of file lobby.hpp.

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

◆ network_connection_

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

Definition at line 169 of file lobby.hpp.

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

◆ player_list_

lobby_player_list_helper gui2::dialogs::mp_lobby::player_list_
private

Definition at line 159 of file lobby.hpp.

Referenced by pre_show(), and update_playerlist().

◆ player_list_dirty_

bool gui2::dialogs::mp_lobby::player_list_dirty_
private

◆ selected_game_id_

int gui2::dialogs::mp_lobby::selected_game_id_
private

◆ server_information_

std::string gui2::dialogs::mp_lobby::server_information_ = ""
inlinestaticprivate

Definition at line 184 of file lobby.hpp.

Referenced by process_network_data(), and show_server_info().


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