Source: lobby/LobbyPage/Buttons/HostButton.js

/**
 * This class manages the button that enables the player to configure the start a new hosted multiplayer match.
 */
class HostButton
{
	constructor(dialog, xmppMessages)
	{
		this.hostButton = Engine.GetGUIObjectByName("hostButton");
		this.hostButton.onPress = this.onPress.bind(this);
		this.hostButton.caption = translate("Host Game");
		this.hostButton.hidden = dialog;

		let onConnectionStatusChange = this.onConnectionStatusChange.bind(this);
		xmppMessages.registerXmppMessageHandler("system", "connected", onConnectionStatusChange);
		xmppMessages.registerXmppMessageHandler("system", "disconnected", onConnectionStatusChange);
		this.onConnectionStatusChange();
	}

	onConnectionStatusChange()
	{
		this.hostButton.enabled = Engine.IsXmppClientConnected();
	}

	onPress()
	{
		Engine.PushGuiPage("page_gamesetup_mp.xml", {
			"multiplayerGameType": "host",
			"name": g_Nickname,
			"rating": Engine.LobbyGetPlayerRating(g_Nickname)
		});
	}
}