Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/gamesetup_mp/gamesetup_mp.js
Show All 17 Lines | |||||
*/ | */ | ||||
var g_ServerPort; | var g_ServerPort; | ||||
var g_IsRejoining = false; | var g_IsRejoining = false; | ||||
var g_GameAttributes; // used when rejoining | var g_GameAttributes; // used when rejoining | ||||
var g_PlayerAssignments; // used when rejoining | var g_PlayerAssignments; // used when rejoining | ||||
var g_UserRating; | var g_UserRating; | ||||
/** | |||||
* Object containing the IP address and port of the stun server. | |||||
elexisUnsubmitted Not Done Inline Actionselexis: ```
/**
* IP address of the
``` | |||||
*/ | |||||
var g_StunEndpoint; | |||||
function init(attribs) | function init(attribs) | ||||
{ | { | ||||
g_UserRating = attribs.rating; | g_UserRating = attribs.rating; | ||||
switch (attribs.multiplayerGameType) | switch (attribs.multiplayerGameType) | ||||
{ | { | ||||
case "join": | case "join": | ||||
{ | { | ||||
if (Engine.HasXmppClient()) | if (Engine.HasXmppClient()) | ||||
{ | { | ||||
if (startJoin(attribs.name, attribs.ip, getValidPort(attribs.port))) | if (startJoin(attribs.name, attribs.ip, getValidPort(attribs.port), attribs.hostJID)) | ||||
switchSetupPage("pageConnecting"); | switchSetupPage("pageConnecting"); | ||||
} | } | ||||
else | else | ||||
switchSetupPage("pageJoin"); | switchSetupPage("pageJoin"); | ||||
break; | break; | ||||
} | } | ||||
case "host": | case "host": | ||||
{ | { | ||||
if (Engine.HasXmppClient()) | if (Engine.HasXmppClient()) | ||||
{ | { | ||||
Engine.GetGUIObjectByName("hostPlayerName").caption = attribs.name; | Engine.GetGUIObjectByName("hostPlayerName").caption = attribs.name; | ||||
Engine.GetGUIObjectByName("hostServerName").caption = | Engine.GetGUIObjectByName("hostServerName").caption = | ||||
sprintf(translate("%(name)s's game"), { "name": attribs.name }); | sprintf(translate("%(name)s's game"), { "name": attribs.name }); | ||||
Engine.GetGUIObjectByName("hostSTUNWrapper").hidden = false; | |||||
Engine.GetGUIObjectByName("useSTUN").checked = Engine.ConfigDB_GetValue("user", "stun.enabled") == "true"; | |||||
} | } | ||||
switchSetupPage("pageHost"); | switchSetupPage("pageHost"); | ||||
break; | break; | ||||
} | } | ||||
default: | default: | ||||
error("Unrecognised multiplayer game type: " + attribs.multiplayerGameType); | error("Unrecognised multiplayer game type: " + attribs.multiplayerGameType); | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 167 Lines • ▼ Show 20 Lines | else | ||||
g_IsRejoining = true; | g_IsRejoining = true; | ||||
return; // we'll process the game setup messages in the next tick | return; // we'll process the game setup messages in the next tick | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
Engine.SwitchGuiPage("page_gamesetup.xml", { | Engine.SwitchGuiPage("page_gamesetup.xml", { | ||||
"type": g_GameType, | "type": g_GameType, | ||||
"serverName": g_ServerName, | "serverName": g_ServerName, | ||||
"serverPort": g_ServerPort | "serverPort": g_ServerPort, | ||||
"stunEndpoint": g_StunEndpoint | |||||
}); | }); | ||||
return; // don't process any more messages - leave them for the game GUI loop | return; // don't process any more messages - leave them for the game GUI loop | ||||
} | } | ||||
case "disconnected": | case "disconnected": | ||||
cancelSetup(); | cancelSetup(); | ||||
reportDisconnect(message.reason, false); | reportDisconnect(message.reason, false); | ||||
return; | return; | ||||
Show All 24 Lines | function switchSetupPage(newPage) | ||||
Engine.GetGUIObjectByName(newPage).hidden = false; | Engine.GetGUIObjectByName(newPage).hidden = false; | ||||
Engine.GetGUIObjectByName("hostPlayerNameWrapper").hidden = Engine.HasXmppClient(); | Engine.GetGUIObjectByName("hostPlayerNameWrapper").hidden = Engine.HasXmppClient(); | ||||
Engine.GetGUIObjectByName("hostServerNameWrapper").hidden = !Engine.HasXmppClient(); | Engine.GetGUIObjectByName("hostServerNameWrapper").hidden = !Engine.HasXmppClient(); | ||||
Engine.GetGUIObjectByName("continueButton").hidden = newPage == "pageConnecting"; | Engine.GetGUIObjectByName("continueButton").hidden = newPage == "pageConnecting"; | ||||
} | } | ||||
function saveSTUNSetting(enabled) | |||||
{ | |||||
Engine.ConfigDB_CreateValue("user", "stun.enabled", enabled); | |||||
Engine.ConfigDB_WriteValueToFile("user", "stun.enabled", enabled, "config/user.cfg"); | |||||
} | |||||
function startHost(playername, servername, port) | function startHost(playername, servername, port) | ||||
{ | { | ||||
startConnectionStatus("server"); | startConnectionStatus("server"); | ||||
// Save player name | // Save player name | ||||
Engine.ConfigDB_CreateValue("user", "playername.multiplayer", playername); | Engine.ConfigDB_CreateValue("user", "playername.multiplayer", playername); | ||||
Engine.ConfigDB_WriteValueToFile("user", "playername.multiplayer", playername, "config/user.cfg"); | Engine.ConfigDB_WriteValueToFile("user", "playername.multiplayer", playername, "config/user.cfg"); | ||||
// Save port | // Save port | ||||
Engine.ConfigDB_CreateValue("user", "multiplayerhosting.port", port); | Engine.ConfigDB_CreateValue("user", "multiplayerhosting.port", port); | ||||
Engine.ConfigDB_WriteValueToFile("user", "multiplayerhosting.port", port, "config/user.cfg"); | Engine.ConfigDB_WriteValueToFile("user", "multiplayerhosting.port", port, "config/user.cfg"); | ||||
// Disallow identically named games in the multiplayer lobby | // Disallow identically named games in the multiplayer lobby | ||||
if (Engine.HasXmppClient() && | if (Engine.HasXmppClient() && | ||||
Engine.GetGameList().some(game => game.name == servername)) | Engine.GetGameList().some(game => game.name == servername)) | ||||
{ | { | ||||
cancelSetup(); | cancelSetup(); | ||||
Engine.GetGUIObjectByName("hostFeedback").caption = | Engine.GetGUIObjectByName("hostFeedback").caption = | ||||
translate("Game name already in use."); | translate("Game name already in use."); | ||||
return false; | return false; | ||||
} | } | ||||
if (Engine.HasXmppClient() && Engine.GetGUIObjectByName("useSTUN").checked) | |||||
g_StunEndpoint = Engine.FindStunEndpoint(port); | |||||
try | try | ||||
{ | { | ||||
if (g_UserRating) | if (g_UserRating) | ||||
Engine.StartNetworkHost(playername + " (" + g_UserRating + ")", port); | Engine.StartNetworkHost(playername + " (" + g_UserRating + ")", port); | ||||
else | else | ||||
Engine.StartNetworkHost(playername, port); | Engine.StartNetworkHost(playername, port); | ||||
} | } | ||||
catch (e) | catch (e) | ||||
Show All 11 Lines | function startHost(playername, servername, port) | ||||
g_ServerPort = port; | g_ServerPort = port; | ||||
if (Engine.HasXmppClient()) | if (Engine.HasXmppClient()) | ||||
Engine.LobbySetPlayerPresence("playing"); | Engine.LobbySetPlayerPresence("playing"); | ||||
return true; | return true; | ||||
} | } | ||||
function startJoin(playername, ip, port) | function startJoin(playername, ip, port, hostJID) | ||||
{ | { | ||||
try | try | ||||
{ | { | ||||
if (g_UserRating) | Engine.StartNetworkJoin(playername + (g_UserRating ? " (" + g_UserRating + ")" : ""), ip, port, hostJID); | ||||
Not Done Inline Actionslet elexis: let | |||||
Engine.StartNetworkJoin(playername + " (" + g_UserRating + ")", ip, port); | |||||
else | |||||
Engine.StartNetworkJoin(playername, ip, port); | |||||
} | } | ||||
catch (e) | catch (e) | ||||
{ | { | ||||
cancelSetup(); | cancelSetup(); | ||||
messageBox( | messageBox( | ||||
400, 200, | 400, 200, | ||||
sprintf(translate("Cannot join game: %(message)s."), { "message": e.message }), | sprintf(translate("Cannot join game: %(message)s."), { "message": e.message }), | ||||
translate("Error") | translate("Error") | ||||
Show All 27 Lines |
Wildfire Games · Phabricator