Esempio n. 1
0
        private void BtnLogin_Click(object sender, EventArgs e)
        {
            LoginLoadingScreen lls = new LoginLoadingScreen(nicknameTextBox.Text, passwordTextBox.Text);

            SetEnableTextBox(false);
            SetEnableInterfaceButtons(false);

            if (lls.ShowDialog() == DialogResult.OK)
            {
                Close();
            }

            SetEnableTextBox(true);
            SetEnableInterfaceButtons(true);
        }
        public void Login(LoginLoadingScreen loadingScreen, string nickname, string password)
        {
            try
            {
                //Preparing player variable
                Player player = new Player()
                {
                    Nickname = nickname,
                    Password = password
                };

                bool waiting = false;

                ClientServiceProvider csp = new ClientServiceProvider(
                    NetworkObjectParameters.LoginServerInformation.ServerPublicAddress,
                    NetworkObjectParameters.LoginServerInformation.ServerPort,
                    NetworkObjectParameters.LoginServerBufferSize,
                    (serviceProvider, message) =>
                {
                    if (message.Length == 2)
                    {
                        player = ObjectWrapper.Deserialize <Player>(message[1]);

                        if (player == null)
                        {
                            waiting = true;
                            return;
                        }
                    }
                    else
                    {
                        List <int> idList = ObjectWrapper.Deserialize <List <int> >(message[2]);

                        if (idList == null)
                        {
                            waiting = true;
                            return;
                        }

                        foreach (int i in idList)
                        {
                            player.PlayerAvatarMetadataList.Add(new PlayerAvatarMetadata()
                            {
                                Player         = player,
                                AvatarMetadata = new AvatarMetadata()
                                {
                                    ID             = i,
                                    AvatarCategory = (AvatarCategory)int.Parse(message[1])
                                },
                            });
                        }
                    }
                });

                csp.OnFailToEstabilishConnection += loadingScreen.OnFailToStablishConnection;
                csp.StartOperation();
                csp.RequestQueue.Enqueue(NetworkObjectParameters.LoginServerLoginAttemptRequest, player);

                while (!waiting)
                {
                    Thread.Sleep(100);
                }

                csp.StopOperation();

                if (player == null || player.ID == 0)
                {
                    loadingScreen.OnFailToFindPlayer();
                    return;
                }

                player.LoadOwnedAvatarDictionary();

                //Success
                Parameter.Player = player;
                loadingScreen.Close(DialogResult.OK);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Ex: {ex.Message}");
            }
        }
 public void PrepareLoginThread(LoginLoadingScreen loadingScreen, string nickname, string password)
 {
     RequestThread = new Thread(() => Login(loadingScreen, nickname, password));
     RequestThread.IsBackground = true;
     RequestThread.Start();
 }