Index: ps/trunk/binaries/data/mods/public/gui/common/modern/sprites.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/common/modern/sprites.xml (revision 15068) +++ ps/trunk/binaries/data/mods/public/gui/common/modern/sprites.xml (revision 15069) @@ -1,474 +1,474 @@ - - - - - - Index: ps/trunk/binaries/data/mods/public/gui/lobby/prelobby.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/lobby/prelobby.js (revision 15068) +++ ps/trunk/binaries/data/mods/public/gui/lobby/prelobby.js (revision 15069) @@ -1,183 +1,256 @@ var g_LobbyIsConnecting = false; var g_EncrytedPassword = ""; var g_PasswordInputIsHidden = false; +var g_TermsOfServiceRead = false; +var g_TermsOfUseRead = false; +var g_hasSystemMessage = false; function init() { g_EncrytedPassword = Engine.ConfigDB_GetValue("user", "lobby.password"); + if (Engine.ConfigDB_GetValue("user", "lobby.login") && g_EncrytedPassword) + switchPage("connect"); } function lobbyStop() { Engine.GetGUIObjectByName("feedback").caption = ""; if (g_LobbyIsConnecting == false) return; g_LobbyIsConnecting = false; Engine.StopXmppClient(); } -function lobbyStart() +function lobbyStartConnect() { if (g_LobbyIsConnecting) return; if (Engine.HasXmppClient()) Engine.StopXmppClient(); var username = Engine.GetGUIObjectByName("connectUsername").caption; var password = Engine.GetGUIObjectByName("connectPassword").caption; var feedback = Engine.GetGUIObjectByName("feedback"); var room = Engine.ConfigDB_GetValue("user", "lobby.room"); var history = Number(Engine.ConfigDB_GetValue("user", "lobby.history")); feedback.caption = translate("Connecting..."); // If they enter a different password, re-encrypt. if (password != g_EncrytedPassword.substring(0, 10)) g_EncrytedPassword = Engine.EncryptPassword(password, username); // We just use username as nick for simplicity. Engine.StartXmppClient(username, g_EncrytedPassword, room, username, history); g_LobbyIsConnecting = true; Engine.ConnectXmppClient(); } function lobbyStartRegister() { - if (g_LobbyIsConnecting != false) + if (g_LobbyIsConnecting) return; if (Engine.HasXmppClient()) Engine.StopXmppClient(); - var account = Engine.GetGUIObjectByName("connectUsername").caption; - var password = Engine.GetGUIObjectByName("connectPassword").caption; - var passwordAgain = Engine.GetGUIObjectByName("registerPasswordAgain").caption; + var account = Engine.GetGUIObjectByName("registerUsername").caption; + var password = Engine.GetGUIObjectByName("registerPassword").caption; var feedback = Engine.GetGUIObjectByName("feedback"); - // Check the passwords match. - if (password != passwordAgain) - { - feedback.caption = translate("Passwords do not match"); - Engine.GetGUIObjectByName("connectPassword").caption = ""; - Engine.GetGUIObjectByName("registerPasswordAgain").caption = ""; - switchRegister(); - return; - } - feedback.caption = translate("Registering..."); g_EncrytedPassword = Engine.EncryptPassword(password, account); Engine.StartRegisterXmppClient(account, g_EncrytedPassword); g_LobbyIsConnecting = true; Engine.ConnectXmppClient(); } -function switchRegister() +function onTick() { - if (Engine.GetGUIObjectByName("pageRegister").hidden) + var pageRegisterHidden = Engine.GetGUIObjectByName("pageRegister").hidden; + if (pageRegisterHidden) { - lobbyStop(); - Engine.GetGUIObjectByName("pageRegister").hidden = false; - Engine.GetGUIObjectByName("pageConnect").hidden = true; - Engine.GetGUIObjectByName("connect").enabled = false; + var username = Engine.GetGUIObjectByName("connectUsername").caption; + var password = Engine.GetGUIObjectByName("connectPassword").caption; } else { - Engine.GetGUIObjectByName("pageRegister").hidden = true; - Engine.GetGUIObjectByName("pageConnect").hidden = false; - Engine.GetGUIObjectByName("connect").enabled = true; + var username = Engine.GetGUIObjectByName("registerUsername").caption; + var password = Engine.GetGUIObjectByName("registerPassword").caption; } -} - -function onTick() -{ - // - var username = Engine.GetGUIObjectByName("connectUsername").caption; - var password = Engine.GetGUIObjectByName("connectPassword").caption; var passwordAgain = Engine.GetGUIObjectByName("registerPasswordAgain").caption; + var agreeTerms = Engine.GetGUIObjectByName("registerAgreeTerms"); var feedback = Engine.GetGUIObjectByName("feedback"); - var pageRegisterHidden = Engine.GetGUIObjectByName("pageRegister").hidden; - var connectButton = Engine.GetGUIObjectByName("connect"); - var registerButton = Engine.GetGUIObjectByName("register"); - var sanitizedName = sanitizePlayerName(username, true, true) - // If there aren't a username and password entered, we can't start registration or connection. - if (!username || !password) - { - connectButton.enabled = false; - registerButton.enabled = false; - if (!username && !password) - feedback.caption = translate("Please enter existing login or desired registration credentials."); + var continueButton = Engine.GetGUIObjectByName("continue"); + var sanitizedName = sanitizePlayerName(username, true, true); + + // Do not change feedback while connecting. + if (g_LobbyIsConnecting) {} + // Do not show feedback on the welcome screen. + else if (!Engine.GetGUIObjectByName("pageWelcome").hidden) + { + feedback.caption = ""; + } + // Check that they entered a username. + else if (!username) + { + continueButton.enabled = false; + feedback.caption = translate("Please enter your username"); } - // Check they are using a valid account name. + // Check that they are using a valid username. else if (username != sanitizedName) { - feedback.caption = translate("Usernames can't contain [, ], unicode, whitespace, or commas."); - connectButton.enabled = false; - registerButton.enabled = false; + continueButton.enabled = false; + feedback.caption = translate("Usernames can't contain [, ], unicode, whitespace, or commas"); + } + // Check that they entered a password. + else if (!password) + { + continueButton.enabled = false; + feedback.caption = translate("Please enter your password"); } - // Allow them to connect/begin registation if there aren't any problems. + // Allow them to connect if tests pass up to this point. else if (pageRegisterHidden) { - // TODO Do this without comparing the caption - if (feedback.caption == translate("Usernames can't contain [, ], unicode, whitespace, or commas.") || - feedback.caption == translate("Please enter existing login or desired registration credentials.")) + if (!g_hasSystemMessage) + feedback.caption = ""; + continueButton.enabled = true; + } + // Check that they entered their password again. + else if (!passwordAgain) + { + continueButton.enabled = false; + feedback.caption = translate("Please enter your password again"); + } + // Check that the passwords match. + else if (passwordAgain != password) + { + continueButton.enabled = false; + feedback.caption = translate("Passwords do not match"); + } + // Check that they read the Terms of Service. + else if (!g_TermsOfServiceRead) + { + continueButton.enabled = false; + feedback.caption = translate("Please read the Terms of Service"); + } + // Check that they read the Terms of Use. + else if (!g_TermsOfUseRead) + { + continueButton.enabled = false; + feedback.caption = translate("Please read the Terms of Use"); + } + // Check that they agree to the terms of service and use. + else if (!agreeTerms.checked) + { + continueButton.enabled = false; + feedback.caption = translate("Please agree to the Terms of Service and Terms of Use"); + } + // Allow them to register. + else + { + if (!g_hasSystemMessage) feedback.caption = ""; - connectButton.enabled = true; - registerButton.enabled = true; + continueButton.enabled = true; } - // If the password hasn't been entered again, we can't complete registation. - if (!pageRegisterHidden && !passwordAgain) - registerButton.enabled = false; - else if (!pageRegisterHidden) - registerButton.enabled = true; if (!g_LobbyIsConnecting) // The Xmpp Client has not been created return; // The XmppClient has been created, we are waiting // to be connected or to receive an error. //Receive messages while (true) { var message = Engine.LobbyGuiPollMessage(); if (!message) break; if (message.type == "muc" && message.level == "join") { // We are connected, switch to the lobby page Engine.PopGuiPage(); // Use username as nick. var nick = sanitizePlayerName(username, true, true); // Switch to lobby Engine.SwitchGuiPage("page_lobby.xml"); // Store nick, login, and password Engine.ConfigDB_CreateValue("user", "playername", nick); Engine.ConfigDB_CreateValue("user", "lobby.login", username); // We only store the encrypted password, so make sure to re-encrypt it if changed before saving. if (password != g_EncrytedPassword.substring(0, 10)) g_EncrytedPassword = Engine.EncryptPassword(password, username); Engine.ConfigDB_CreateValue("user", "lobby.password", g_EncrytedPassword); Engine.ConfigDB_WriteFile("user", "config/user.cfg"); return; } else if (message.type == "system" && message.text == "registered") { // Great, we are registered. Switch to the connection window. feedback.caption = toTitleCase(message.text); Engine.StopXmppClient(); g_LobbyIsConnecting = false; - switchRegister(); + Engine.GetGUIObjectByName("connectUsername").caption = username; + Engine.GetGUIObjectByName("connectPassword").caption = password; + switchPage("connect"); } else if(message.type == "system" && (message.level == "error" || message.text == "disconnected")) { + g_hasSystemMessage = true; feedback.caption = toTitleCase(message.text); Engine.StopXmppClient(); g_LobbyIsConnecting = false; } } } + +function switchPage(page) +{ + // First hide everything. + if (!Engine.GetGUIObjectByName("pageWelcome").hidden) + { + Engine.GetGUIObjectByName("pageWelcome").hidden = true; + } + else if (!Engine.GetGUIObjectByName("pageRegister").hidden) + { + Engine.GetGUIObjectByName("pageRegister").hidden = true; + Engine.GetGUIObjectByName("continue").hidden = true; + var dialog = Engine.GetGUIObjectByName("dialog"); + var newSize = dialog.size; + newSize.bottom -= 150; + dialog.size = newSize; + } + else if (!Engine.GetGUIObjectByName("pageConnect").hidden) + { + Engine.GetGUIObjectByName("pageConnect").hidden = true; + Engine.GetGUIObjectByName("continue").hidden = true; + } + + // Then show appropriate page. + switch(page) + { + case "welcome": + Engine.GetGUIObjectByName("pageWelcome").hidden = false; + break; + case "register": + var dialog = Engine.GetGUIObjectByName("dialog"); + var newSize = dialog.size; + newSize.bottom += 150; + dialog.size = newSize; + Engine.GetGUIObjectByName("pageRegister").hidden = false; + Engine.GetGUIObjectByName("continue").caption = translate("Register"); + Engine.GetGUIObjectByName("continue").hidden = false; + break; + case "connect": + Engine.GetGUIObjectByName("pageConnect").hidden = false; + Engine.GetGUIObjectByName("continue").caption = translate("Connect"); + Engine.GetGUIObjectByName("continue").hidden = false; + break; + } +} + Index: ps/trunk/binaries/data/mods/public/gui/lobby/prelobby.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/lobby/prelobby.xml (revision 15068) +++ ps/trunk/binaries/data/mods/public/gui/lobby/prelobby.xml (revision 15069) @@ -1,98 +1,132 @@