//авторизация
        void AuthenticateMP()
        {
            //если уже вошел - создаём игру
            if (IsAuthenticated)
            {
                CreateGame();
            }
            else             //авторизуемся в сервисах
            {
                Social.localUser.Authenticate((bool success) =>
                {
                    if (success)
                    {
                        LoginUpdateEvent?.Invoke();
                        ManagerUI.ShowMsg("Authentication successeded");

                        CreateGame();
                    }
                    else
                    {
                        ManagerUI.ShowMsg("Authentication failed");
                        //событие завершения инициализации (прячем прогресс бар)
                        InitMultiplayerEvent?.Invoke(false);
                    }
                });
            }
        }
        private void axRDP_OnDisconnected(object sender, AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEvent e)
        {
            //codes https://social.technet.microsoft.com/wiki/contents/articles/37870.rds-remote-desktop-client-disconnect-codes-and-reasons.aspx
            if (e.discReason != 3)
            {
                LoginUpdateEvent?.Invoke(this, new LoginResultArgs(axRDP.Server, LoginResultArgs.LoginResultCode.Failed, e.discReason.ToString()));
            }

            this.Close();
        }
        void Login()
        {
            //если уже вошел - пропускаем
            if (IsAuthenticated)
            {
                return;
            }

            Social.localUser.Authenticate((bool success) =>
            {
                if (success)
                {
                    SetSavedGameClient();
                    LoginUpdateEvent?.Invoke();
                    ManagerUI.ShowMsg("Login successful");
                }
                else
                {
                    ManagerUI.ShowMsg("Login failed :(");
                }
            });
        }
 private void tmrLoginFailure_Tick(object sender, EventArgs e)
 {
     tmrLoginFailure.Enabled = false;
     LoginUpdateEvent?.Invoke(this, new LoginResultArgs(axRDP.Server, LoginResultArgs.LoginResultCode.Failed, "Timeout"));
 }
 private void axRDP_OnLoginComplete(object sender, EventArgs e)
 {
     tmrLoginFailure.Enabled = false;
     LoginUpdateEvent?.Invoke(this, new LoginResultArgs(axRDP.Server, LoginResultArgs.LoginResultCode.Success, ""));
 }
 //выход и сервисов
 void SingOut()
 {
     PlayGamesPlatform.Instance.SignOut();
     LoginUpdateEvent?.Invoke();
 }