OpenTTD Source  1.11.2
network_gui.cpp File Reference
#include "../stdafx.h"
#include "../strings_func.h"
#include "../date_func.h"
#include "../fios.h"
#include "network_client.h"
#include "network_gui.h"
#include "network_gamelist.h"
#include "network.h"
#include "network_base.h"
#include "network_content.h"
#include "../gui.h"
#include "network_udp.h"
#include "../window_func.h"
#include "../gfx_func.h"
#include "../widgets/dropdown_func.h"
#include "../querystring_gui.h"
#include "../sortlist_type.h"
#include "../company_func.h"
#include "../core/geometry_func.hpp"
#include "../genworld.h"
#include "../map_type.h"
#include "../guitimer_func.h"
#include "../zoom_func.h"
#include "../widgets/network_widget.h"
#include "table/strings.h"
#include "../table/sprites.h"
#include "../stringfilter_type.h"
#include "../safeguards.h"

Go to the source code of this file.

Data Structures

class  NWidgetServerListHeader
 Full blown container to make it behave exactly as we want :) More...
 
class  NetworkGameWindow
 
struct  NetworkStartServerWindow
 
struct  NetworkLobbyWindow
 
struct  NetworkClientListPopupWindow
 Popup selection window to chose an action to perform. More...
 
struct  NetworkClientListPopupWindow::ClientListAction
 Container for actions that can be executed. More...
 
struct  NetworkClientListWindow
 Main handle for clientlist. More...
 
struct  NetworkJoinStatusWindow
 
struct  NetworkCompanyPasswordWindow
 

Typedefs

typedef GUIList< NetworkGameList *, StringFilter & > GUIGameServerList
 
typedef uint16 ServerListPosition
 
typedef void ClientList_Action_Proc(const NetworkClientInfo *ci)
 Prototype for ClientList actions. More...
 

Functions

static void ShowNetworkStartServerWindow ()
 
static void ShowNetworkLobbyWindow (NetworkGameList *ngl)
 Show the networklobbywindow with the selected server. More...
 
void SortNetworkLanguages ()
 
void UpdateNetworkGameWindow ()
 Update the network new window because a new server is found on the network.
 
static NWidgetBaseMakeResizableHeader (int *biggest_index)
 
void ShowNetworkGameWindow ()
 
NetworkCompanyInfoGetLobbyCompanyInfo (CompanyID company)
 Get the company information of a given company to fill for the lobby. More...
 
void DrawCompanyIcon (CompanyID cid, int x, int y)
 Draw the icon of a company. More...
 
static void ClientList_Kick (const NetworkClientInfo *ci)
 
static void ClientList_Ban (const NetworkClientInfo *ci)
 
static void ClientList_SpeakToClient (const NetworkClientInfo *ci)
 
static void ClientList_SpeakToCompany (const NetworkClientInfo *ci)
 
static void ClientList_SpeakToAll (const NetworkClientInfo *ci)
 
static void PopupClientList (ClientID client_id, int x, int y)
 Show the popup (action list)
 
void ShowClientList ()
 
void ShowJoinStatusWindow ()
 
void ShowNetworkNeedPassword (NetworkPasswordType npt)
 
void ShowNetworkCompanyPasswordWindow (Window *parent)
 

Variables

static const StringID _connection_types_dropdown []
 Advertisement options in the start server window. More...
 
static std::vector< StringID_language_dropdown
 
static const ServerListPosition SLP_INVALID = 0xFFFF
 
static const NWidgetPart _nested_network_game_widgets []
 
static WindowDesc _network_game_window_desc (WDP_CENTER, "list_servers", 1000, 730, WC_NETWORK_WINDOW, WC_NONE, 0, _nested_network_game_widgets, lengthof(_nested_network_game_widgets))
 
static const NWidgetPart _nested_network_start_server_window_widgets []
 
static WindowDesc _network_start_server_window_desc (WDP_CENTER, nullptr, 0, 0, WC_NETWORK_WINDOW, WC_NONE, 0, _nested_network_start_server_window_widgets, lengthof(_nested_network_start_server_window_widgets))
 
static const NWidgetPart _nested_network_lobby_window_widgets []
 
static WindowDesc _network_lobby_window_desc (WDP_CENTER, nullptr, 0, 0, WC_NETWORK_WINDOW, WC_NONE, 0, _nested_network_lobby_window_widgets, lengthof(_nested_network_lobby_window_widgets))
 
static const NWidgetPart _nested_client_list_popup_widgets []
 
static WindowDesc _client_list_popup_desc (WDP_AUTO, nullptr, 0, 0, WC_CLIENT_LIST_POPUP, WC_CLIENT_LIST, 0, _nested_client_list_popup_widgets, lengthof(_nested_client_list_popup_widgets))
 
static const NWidgetPart _nested_client_list_widgets []
 
static WindowDesc _client_list_desc (WDP_AUTO, "list_clients", 0, 0, WC_CLIENT_LIST, WC_NONE, 0, _nested_client_list_widgets, lengthof(_nested_client_list_widgets))
 
NetworkJoinStatus _network_join_status
 The status of joining.
 
uint8 _network_join_waiting
 The number of clients waiting in front of us.
 
uint32 _network_join_bytes
 The number of bytes we already downloaded.
 
uint32 _network_join_bytes_total
 The total number of bytes to download.
 
static const NWidgetPart _nested_network_join_status_window_widgets []
 
static WindowDesc _network_join_status_window_desc (WDP_CENTER, nullptr, 0, 0, WC_NETWORK_STATUS_WINDOW, WC_NONE, WDF_MODAL, _nested_network_join_status_window_widgets, lengthof(_nested_network_join_status_window_widgets))
 
static const NWidgetPart _nested_network_company_password_window_widgets []
 
static WindowDesc _network_company_password_window_desc (WDP_AUTO, nullptr, 0, 0, WC_COMPANY_PASSWORD_WINDOW, WC_NONE, 0, _nested_network_company_password_window_widgets, lengthof(_nested_network_company_password_window_widgets))
 

Detailed Description

Implementation of the Network related GUIs.

Definition in file network_gui.cpp.

Typedef Documentation

◆ ClientList_Action_Proc

typedef void ClientList_Action_Proc(const NetworkClientInfo *ci)

Prototype for ClientList actions.

Parameters
ciThe information about the current client.

Definition at line 1646 of file network_gui.cpp.

Function Documentation

◆ DrawCompanyIcon()

void DrawCompanyIcon ( CompanyID  c,
int  x,
int  y 
)

Draw the icon of a company.

Parameters
cCompany that needs its icon drawn.
xHorizontal coordinate of the icon.
yVertical coordinate of the icon.

Definition at line 143 of file company_cmd.cpp.

Referenced by AIDebugWindow::OnPaint().

◆ GetLobbyCompanyInfo()

NetworkCompanyInfo* GetLobbyCompanyInfo ( CompanyID  company)

Get the company information of a given company to fill for the lobby.

Parameters
companythe company to get the company info struct from.
Returns
the company info struct to write the (downloaded) data to.

Definition at line 1631 of file network_gui.cpp.

References FindWindowById(), MAX_COMPANIES, WC_NETWORK_WINDOW, and WN_NETWORK_WINDOW_LOBBY.

Referenced by NetworkLobbyWindow::OnPaint(), and ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_INFO().

◆ ShowNetworkLobbyWindow()

static void ShowNetworkLobbyWindow ( NetworkGameList ngl)
static

Show the networklobbywindow with the selected server.

Parameters
nglSelected game pointer which is passed to the new window.

Definition at line 1615 of file network_gui.cpp.

References _settings_client, DeleteWindowById(), NetworkSettings::last_host, NetworkSettings::last_port, ClientSettings::network, NetworkTCPQueryServer(), NetworkUDPQueryServer(), WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_GAME, and WN_NETWORK_WINDOW_START.

Variable Documentation

◆ _connection_types_dropdown

const StringID _connection_types_dropdown[]
static
Initial value:
= {
STR_NETWORK_START_SERVER_UNADVERTISED,
STR_NETWORK_START_SERVER_ADVERTISED,
}

Advertisement options in the start server window.

Definition at line 53 of file network_gui.cpp.

Referenced by NetworkStartServerWindow::SetStringParameters(), and NetworkStartServerWindow::UpdateWidgetSize().

◆ _nested_client_list_popup_widgets

const NWidgetPart _nested_client_list_popup_widgets[]
static
Initial value:
= {
}

Definition at line 1648 of file network_gui.cpp.

◆ _nested_client_list_widgets

const NWidgetPart _nested_client_list_widgets[]
static
Initial value:
= {
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_NETWORK_COMPANY_LIST_CLIENT_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_STICKYBOX, COLOUR_GREY),
}

Definition at line 1806 of file network_gui.cpp.

◆ _nested_network_company_password_window_widgets

const NWidgetPart _nested_network_company_password_window_widgets[]
static
Initial value:
= {
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_COMPANY_PASSWORD_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_TEXT, COLOUR_GREY, WID_NCP_LABEL), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_NULL),
NWidget(WWT_EDITBOX, COLOUR_GREY, WID_NCP_PASSWORD), SetFill(1, 0), SetMinimalSize(194, 12), SetDataTip(STR_COMPANY_VIEW_SET_PASSWORD, STR_NULL),
SetDataTip(STR_COMPANY_PASSWORD_MAKE_DEFAULT, STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NCP_CANCEL), SetFill(1, 0), SetDataTip(STR_BUTTON_CANCEL, STR_COMPANY_PASSWORD_CANCEL),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NCP_OK), SetFill(1, 0), SetDataTip(STR_BUTTON_OK, STR_COMPANY_PASSWORD_OK),
}

Definition at line 2187 of file network_gui.cpp.

◆ _nested_network_join_status_window_widgets

const NWidgetPart _nested_network_join_status_window_widgets[]
static
Initial value:
= {
NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_NETWORK_CONNECTING_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PANEL, COLOUR_GREY),
NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NJS_CANCELOK), SetMinimalSize(101, 12), SetDataTip(STR_NETWORK_CONNECTION_DISCONNECT, STR_NULL),
}

Definition at line 2076 of file network_gui.cpp.

WD_FRAMERECT_TOP
@ WD_FRAMERECT_TOP
Offset at top to draw the frame rectangular area.
Definition: window_gui.h:62
WWT_STICKYBOX
@ WWT_STICKYBOX
Sticky box (at top-right of a window, after WWT_DEFSIZEBOX)
Definition: widget_type.h:64
WWT_CAPTION
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:59
WID_NJS_CANCELOK
@ WID_NJS_CANCELOK
Cancel / OK button.
Definition: network_widget.h:113
NWID_HORIZONTAL
@ NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:73
SetResize
static NWidgetPart SetResize(int16 dx, int16 dy)
Widget part function for setting the resize step.
Definition: widget_type.h:939
WWT_EMPTY
@ WWT_EMPTY
Empty widget, place holder to reserve space in widget array.
Definition: widget_type.h:46
WID_CLP_PANEL
@ WID_CLP_PANEL
Panel of the window.
Definition: network_widget.h:107
SetDataTip
static NWidgetPart SetDataTip(uint32 data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1023
WID_NCP_SAVE_AS_DEFAULT_PASSWORD
@ WID_NCP_SAVE_AS_DEFAULT_PASSWORD
Toggle 'button' for saving the current password as default password.
Definition: network_widget.h:121
NC_EQUALSIZE
@ NC_EQUALSIZE
Value of the NCB_EQUALSIZE flag.
Definition: widget_type.h:438
WWT_EDITBOX
@ WWT_EDITBOX
a textbox for typing
Definition: widget_type.h:69
WID_NCP_WARNING
@ WID_NCP_WARNING
Warning text about password security.
Definition: network_widget.h:122
WD_FRAMERECT_BOTTOM
@ WD_FRAMERECT_BOTTOM
Offset at bottom to draw the frame rectangular area.
Definition: window_gui.h:63
WWT_PUSHTXTBTN
@ WWT_PUSHTXTBTN
Normal push-button (no toggle button) with text caption.
Definition: widget_type.h:102
WID_NJS_BACKGROUND
@ WID_NJS_BACKGROUND
Background of the window.
Definition: network_widget.h:112
WID_NCP_CANCEL
@ WID_NCP_CANCEL
Close the window without changing anything.
Definition: network_widget.h:123
WID_NCP_LABEL
@ WID_NCP_LABEL
Label in front of the password field.
Definition: network_widget.h:119
NWID_VERTICAL
@ NWID_VERTICAL
Vertical container.
Definition: widget_type.h:75
WWT_CLOSEBOX
@ WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:67
WID_NCP_BACKGROUND
@ WID_NCP_BACKGROUND
Background of the window.
Definition: network_widget.h:118
EndContainer
static NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
Definition: widget_type.h:1008
WWT_TEXT
@ WWT_TEXT
Pure simple text.
Definition: widget_type.h:56
WID_NCP_PASSWORD
@ WID_NCP_PASSWORD
Input field for the password.
Definition: network_widget.h:120
NWidget
static NWidgetPart NWidget(WidgetType tp, Colours col, int16 idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1123
SetMinimalSize
static NWidgetPart SetMinimalSize(int16 x, int16 y)
Widget part function for setting the minimal size.
Definition: widget_type.h:956
WWT_PANEL
@ WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:48
NWID_SPACER
@ NWID_SPACER
Invisible widget that takes some space.
Definition: widget_type.h:77
SetPIP
static NWidgetPart SetPIP(uint8 pre, uint8 inter, uint8 post)
Widget part function for setting a pre/inter/post spaces.
Definition: widget_type.h:1085
SetFill
static NWidgetPart SetFill(uint fill_x, uint fill_y)
Widget part function for setting filling.
Definition: widget_type.h:992
WID_NCP_OK
@ WID_NCP_OK
Safe the password etc.
Definition: network_widget.h:124
WID_CL_PANEL
@ WID_CL_PANEL
Panel of the window.
Definition: network_widget.h:102
WWT_TEXTBTN
@ WWT_TEXTBTN
(Toggle) Button with text
Definition: widget_type.h:53
INVALID_STRING_ID
static const StringID INVALID_STRING_ID
Constant representing an invalid string (16bit in case it is used in savegames)
Definition: strings_type.h:17