public void Register(SignUpLoadingScreen signUpLoadingScreen, PlayerDTO account) { try { bool waiting = false; Player newPlayer = null; ClientServiceProvider csp = new ClientServiceProvider( NetworkObjectParameters.LoginServerInformation.ServerPublicAddress, NetworkObjectParameters.LoginServerInformation.ServerPort, NetworkObjectParameters.LoginServerBufferSize, (serviceProvider, message) => { newPlayer = ObjectWrapper.Deserialize <Player>(message[1]); waiting = true; }); csp.OnFailToEstabilishConnection += signUpLoadingScreen.OnFailToStablishConnection; csp.StartOperation(); csp.RequestQueue.Enqueue(NetworkObjectParameters.LoginServerAccountCreationRequest, account); while (!waiting) { Thread.Sleep(100); } csp.StopOperation(); if (newPlayer == null) { //Unnable to create player (unknown reason) signUpLoadingScreen.OnFailToCreateAccount(); return; } string errorMessage = ""; //Invalid Nickname if (newPlayer.Nickname == null) { errorMessage += Language.RegisterFailureNickname; } //Invalid Email if (newPlayer.Email == null) { errorMessage += Language.RegisterFailureEmail; } //Fail if (errorMessage.Length > 0) { signUpLoadingScreen.OnFailToCreateAccount(); return; } //Success signUpLoadingScreen.OnCreateAccount(); } catch (Exception ex) { Console.WriteLine($"Ex: {ex.Message}"); } }