SuperTuxKart
Loading...
Searching...
No Matches
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
NetworkingLobby Class Reference

Handles the networking lobby. More...

#include <networking_lobby.hpp>

Inheritance diagram for NetworkingLobby:
Inheritance graph
[legend]

Public Member Functions

virtual void onUpdate (float delta) OVERRIDE
 optional callback you can override to be notified at every frame.
 
virtual void loadedFromFile () OVERRIDE
 implement callback from parent class GUIEngine::Screen
 
virtual void eventCallback (GUIEngine::Widget *widget, const std::string &name, const int playerID) OVERRIDE
 implement callback from parent class GUIEngine::Screen
 
virtual void beforeAddingWidget () OVERRIDE
 implement callback from parent class GUIEngine::Screen
 
virtual void init () OVERRIDE
 implement callback from parent class GUIEngine::Screen
 
virtual void tearDown () OVERRIDE
 implement callback from parent class GUIEngine::Screen
 
virtual bool onEscapePressed () OVERRIDE
 implement callback from parent class GUIEngine::Screen
 
void finishAddingPlayers ()
 
void addMoreServerInfo (core::stringw info)
 
void setJoinedServer (std::shared_ptr< Server > server)
 
void updateServerInfos ()
 
void updatePlayers ()
 
void openSplitscreenDialog (InputDevice *device)
 
void addSplitscreenPlayer (irr::core::stringw name)
 
void cleanAddedPlayers ()
 
void initAutoStartTimer (bool grand_prix_started, unsigned min_players, float start_timeout, unsigned server_max_player)
 
void setStartingTimerTo (float t)
 
void toggleServerConfigButton (bool val)
 
void reloadServerInfos ()
 
void setHeader (const core::stringw &header)
 
void setAssignedPlayers (bool val)
 
- Public Member Functions inherited from GUIEngine::Screen
std::function< Screen *()> getNewScreenPointer () const
 Save the function before GUIEngine::clearScreenCache, call it after to get the new screen instance pointer.
 
void setScreenPointerFunction (const std::function< Screen *()> &f)
 
 Screen (bool pause_race=true)
 Creates a dummy incomplete object; only use to override behaviour in sub-class.
 
 Screen (const char *filename, bool pause_race=true)
 Creates a screen populated by the widgets described in a STK GUI file.
 
bool operator== (const char *filename) const
 
void loadFromFile ()
 loads this Screen from the file passed to the constructor
 
bool isLoaded () const
 
void addWidgets ()
 Adds the IrrLicht widgets corresponding to this screen to the IGUIEnvironment.
 
void calculateLayout ()
 Called after all widgets have been added.
 
void manualAddWidget (Widget *w)
 Can be used for custom purposes for which the load-screen-from-XML code won't make it.
 
void manualRemoveWidget (Widget *w)
 Can be used for custom purposes for which the load-screen-from-XML code won't make it.
 
void setUpdateInBackground (bool value)
 When set to true it updates the screen even if modal dialog is opened.
 
bool getUpdateInBackground ()
 
const std::string & getName () const
 
virtual void unload ()
 Next time this menu needs to be shown, don't use cached values, re-calculate everything.
 
bool needs3D ()
 Will be called to determine if the 3D scene must be rendered when at this screen.
 
void setNeeds3D (bool needs3D)
 Invoke this method for screens that use a 3D scene as background.
 
virtual void loadedFromFile ()=0
 Callback invoked when loading this menu.
 
virtual void unloaded ()
 Callback invoked when this screen is being unloaded.
 
virtual void beforeAddingWidget ()
 Optional callback invoked very early, before widgets have been added (contrast with init(), which is invoked afer widgets were added)
 
virtual void init ()
 Callback invoked when entering this menu (after the widgets have been added).
 
void push ()
 Displays this screen bu pushing it onto the stack of screen in the state manager.
 
virtual void tearDown ()
 Callback invoked before leaving this menu.
 
virtual bool onEscapePressed ()
 Called when escape is pressed.
 
virtual void eventCallback (Widget *widget, const std::string &name, const int playerID)=0
 will be called everytime something happens.
 
virtual void onUpdate (float dt)
 optional callback you can override to be notified at every frame.
 
virtual void onDraw (float dt)
 optional callback you can override to be notified at every frame.
 
virtual MusicInformationgetMusic () const
 
virtual MusicInformationgetInGameMenuMusic () const
 
virtual int getWidth ()
 
virtual int getHeight ()
 
virtual bool isResizable () const
 
virtual EventPropagation filterActions (PlayerAction action, int deviceID, const unsigned int value, Input::InputType type, int playerId)
 Override this if you need to be notified of player actions in subclasses.
 
virtual void onDisabledItemClicked (const std::string &item)
 Callback you can use if you want to know when the user pressed on a disabled ribbon item.
 
virtual void filterInput (Input::InputType type, int deviceID, int btnID, int axisDir, int value)
 Override this if you need to be notified of raw input in subclasses.
 
virtual void onDialogClose ()
 Callback that gets called when a dialog is closed.
 
virtual void onFocusChanged (Widget *previous, Widget *focus, int playerID)
 Callback called when focus changes.
 
- Public Member Functions inherited from GUIEngine::AbstractTopLevelContainer
virtual int getWidth ()=0
 
virtual int getHeight ()=0
 
WidgetgetWidget (const char *name)
 This function returns a widget by name if that widget is found.
 
WidgetgetWidget (const int id)
 This function returns a widget by irrlicht ID if that widget is found.
 
template<typename T >
T * getWidget (const char *name)
 This function searches and returns a widget by name, cast as specified type, if that widget is found and the type is correct.
 
WidgetgetFirstWidget (PtrVector< Widget > *within_vector=NULL)
 This function returns the first widget found in within_vector.
 
WidgetgetLastWidget (PtrVector< Widget > *within_vector=NULL)
 This function returns the last widget found in within_vector.
 
void elementsWereDeleted (PtrVector< Widget > *within_vector=NULL)
 This function is called when screen is removed.
 
bool isMyChild (Widget *widget) const
 This function checks if a widget is a child of the container.
 
virtual bool enableScreenPadding () const
 
virtual void onTextUpdated ()=0
 
virtual bool onEnterPressed (const irr::core::stringw &text)
 

Private Types

enum  LobbyState { LS_ADD_PLAYERS , LS_CONNECTING }
 

Private Member Functions

 NetworkingLobby ()
 This is the lobby screen that is shown on all clients, but not on the server.
 
virtual void unloaded () OVERRIDE
 implement optional callback from parent class GUIEngine::Screen
 
virtual void onTextUpdated () OVERRIDE
 
virtual bool onEnterPressed (const irr::core::stringw &text) OVERRIDE
 
void updatePlayerPings ()
 

Private Attributes

enum NetworkingLobby::LobbyState m_state
 
uint64_t m_ping_update_timer
 
std::map< std::string, LobbyPlayerm_player_names
 
std::shared_ptr< Serverm_joined_server
 
std::vector< gui::GlyphLayout > m_server_info
 
int m_server_info_height
 
int m_header_text_width
 
core::stringw m_start_text
 
core::stringw m_ready_text
 
core::stringw m_live_join_text
 
core::stringw m_configuration_text
 
core::stringw m_spectate_text
 
core::stringw m_install_addon_text
 
core::stringw m_header_text
 
float m_start_timeout
 
int64_t m_cur_starting_timer
 
unsigned m_min_start_game_players
 
bool m_has_auto_start_in_server
 
bool m_server_configurable
 
bool m_client_live_joinable
 
bool m_reload_server_info
 
bool m_assigned_players
 
Addonm_addon_install
 
video::ITexture * m_config_texture
 
video::ITexture * m_spectate_texture
 
video::ITexture * m_addon_texture
 
GUIEngine::IconButtonWidgetm_back_widget
 
GUIEngine::LabelWidgetm_header
 
GUIEngine::LabelWidgetm_text_bubble
 
GUIEngine::LabelWidgetm_timeout_message
 
GUIEngine::IconButtonWidgetm_start_button
 
GUIEngine::IconButtonWidgetm_config_button
 
GUIEngine::ListWidgetm_player_list
 
GUIEngine::TextBoxWidgetm_chat_box
 
GUIEngine::ButtonWidgetm_send_button
 
GUIEngine::ButtonWidgetm_emoji_button
 
irr::gui::STKModifiedSpriteBank * m_icon_bank
 

Friends

class GUIEngine::ScreenSingleton< NetworkingLobby >
 

Additional Inherited Members

- Static Public Member Functions inherited from GUIEngine::Screen
static void parseScreenFileDiv (irr::io::IXMLReader *xml, PtrVector< Widget > &append_to, irr::gui::IGUIElement *parent=NULL)
 Loads a GUI screen from its XML file.
 
- Static Public Member Functions inherited from GUIEngine::AbstractTopLevelContainer
static WidgetgetWidget (const char *name, PtrVector< Widget > *within_vector)
 This function returns a widget by name if that widget is found in within_vector.
 
static WidgetgetWidget (const int id, PtrVector< Widget > *within_vector)
 This function returns a widget by irrlicht ID if that widget is found.
 
- Static Public Member Functions inherited from GUIEngine::ScreenSingleton< NetworkingLobby >
static NetworkingLobbygetInstance ()
 
- Protected Member Functions inherited from GUIEngine::AbstractTopLevelContainer
void addWidgetsRecursively (PtrVector< Widget > &widgets, Widget *parent=NULL)
 This function adds a list of widgets recursively, effectively creating the hierarchy of widgets.
 
- Protected Attributes inherited from GUIEngine::Screen
bool m_resizable
 True if this screen is resizable.
 
- Protected Attributes inherited from GUIEngine::AbstractTopLevelContainer
PtrVector< Widget, HOLD > m_widgets
 the widgets in this screen
 
Widgetm_first_widget
 AbstractTopLevelContainer is generally able to determine its first widget just fine, but in highly complex screens (e.g.
 
Widgetm_last_widget
 AbstractTopLevelContainer is generally able to determine its last widget just fine, but in highly complex screens (e.g.
 
- Static Protected Attributes inherited from GUIEngine::ScreenSingleton< NetworkingLobby >
static NetworkingLobbysingleton
 

Detailed Description

Handles the networking lobby.

Constructor & Destructor Documentation

◆ NetworkingLobby()

NetworkingLobby::NetworkingLobby ( )
private

This is the lobby screen that is shown on all clients, but not on the server.

It shows currently connected clients, and allows the 'master' client (i.e. the stk instance that created the server) to control the server. This especially means that it can initialise the actual start of the racing. This class is responsible for creating the ActivePlayers data structure for all local players (the ActivePlayer maps device to player, i.e. controls which device is used by which player). Note that a server does not create an instance of this class and will create the ActivePlayer data structure in LobbyProtocol::loadWorld().

Member Function Documentation

◆ beforeAddingWidget()

void NetworkingLobby::beforeAddingWidget ( )
virtual

implement callback from parent class GUIEngine::Screen

Reimplemented from GUIEngine::Screen.

◆ eventCallback()

void NetworkingLobby::eventCallback ( GUIEngine::Widget widget,
const std::string &  name,
const int  playerID 
)
virtual

implement callback from parent class GUIEngine::Screen

Implements GUIEngine::Screen.

◆ init()

void NetworkingLobby::init ( )
virtual

implement callback from parent class GUIEngine::Screen

This function is a callback from the parent class, and is called each time this screen is shown to initialise the screen.

This class is responsible for creating the active players and binding them to the right device.

Reimplemented from GUIEngine::Screen.

◆ loadedFromFile()

void NetworkingLobby::loadedFromFile ( )
virtual

implement callback from parent class GUIEngine::Screen

Implements GUIEngine::Screen.

◆ onEnterPressed()

bool NetworkingLobby::onEnterPressed ( const irr::core::stringw &  text)
privatevirtual

Reimplemented from GUIEngine::ITextBoxWidgetListener.

◆ onEscapePressed()

bool NetworkingLobby::onEscapePressed ( )
virtual

implement callback from parent class GUIEngine::Screen

Reimplemented from GUIEngine::Screen.

◆ onTextUpdated()

virtual void NetworkingLobby::onTextUpdated ( )
inlineprivatevirtual

◆ onUpdate()

void NetworkingLobby::onUpdate ( float  dt)
virtual

optional callback you can override to be notified at every frame.

Reimplemented from GUIEngine::Screen.

◆ tearDown()

void NetworkingLobby::tearDown ( )
virtual

implement callback from parent class GUIEngine::Screen

Reimplemented from GUIEngine::Screen.

◆ unloaded()

void NetworkingLobby::unloaded ( )
privatevirtual

implement optional callback from parent class GUIEngine::Screen

Reimplemented from GUIEngine::Screen.


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