private static void OnSteamLoginEnd(MyMasterServiceClient client, IAsyncResult result, Action loginSuccessAction) { try { string username, token; if (MyMwcFinalBuildConstants.STEAM_DEMO) { username = client.EndSteamDemoLogin(out token, result); } else { username = client.EndSteamLogin(out token, result); } var screen = new MyGuiScreenLoginProgress(username, token, () => { MyClientServer.LoggedPlayer.LoggedUsingSteam = true; MyClientServer.LoggedPlayer.SetDisplayName(new StringBuilder(MySteam.UserName)); loginSuccessAction(); }, null); screen.CloseScreenBeforeCallingHandler = true; screen.PasswordHash = token; MyGuiManager.AddScreen(screen); m_loginInProgress = false; } catch (FaultException<MySteamFault> e) { if (e.Detail.SteamFaultCode == SteamFaultCode.NotRegistered) { MyMasterServerAction registerAction = new MyMasterServerAction(MyTextsWrapperEnum.LoginInProgressPleaseWait); registerAction.SetPublicCredentials(); if (String.IsNullOrEmpty(MySteam.SerialKey)) { m_loginInProgress = false; OnSteamRegisterError(new InvalidOperationException("Cannot obtain CD key from Steam")); } else { registerAction.BeginAction = (c) => c.BeginSteamRegister(MySteam.UserId, MySteam.SessionTicket, MySteam.SerialKey, MySteam.UserName, null, c); registerAction.EndAction = (c, r) => c.EndSteamRegister(r); registerAction.ActionSuccess += () => OnSteamRegister(loginSuccessAction); registerAction.ActionFailed += OnSteamRegisterError; registerAction.ShowErrorMessage = false; registerAction.Start(); } } else if (e.Detail.SteamFaultCode == SteamFaultCode.NoMW1ProductsOwned) { m_loginInProgress = false; MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SteamNoProductsText, MyTextsWrapperEnum.SteamNoProductsCaption, MyTextsWrapperEnum.Ok, null)); } else if (e.Detail.SteamFaultCode == SteamFaultCode.InvalidTicket) { m_loginInProgress = false; MySteam.RefreshSessionTicket(); MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SteamInvalidTicketText, MyTextsWrapperEnum.SteamInvalidTicketCaption, MyTextsWrapperEnum.Ok, null)); } else { m_loginInProgress = false; throw; } } finally { m_loginInProgress = false; } }
public void OnOkClick(MyGuiControlButton sender) { // Trim username and password because some users mistakenly write a space at the start/end // and then wonder why they can't log in m_usernameTextbox.Text = m_usernameTextbox.Text.Trim(); m_passwordTextbox.Text = m_passwordTextbox.Text.Trim(); SaveToConfig(); MyGuiScreenLoginProgress loginProgressScreen; if (m_openAfterSuccessfulLogin == null && m_callAfterSuccessfulLogin != null) { loginProgressScreen = new MyGuiScreenLoginProgress(m_usernameTextbox.Text, m_passwordTextbox.Text, m_callAfterSuccessfulLogin, this); } else { loginProgressScreen = new MyGuiScreenLoginProgress(m_usernameTextbox.Text, m_passwordTextbox.Text, m_openAfterSuccessfulLogin, this); } MyGuiManager.AddScreen(loginProgressScreen); //CloseScreen(); }