private void Login() { try { ChannelFactory <Servicegame> cf = new ChannelFactory <Servicegame>("MyEndpoint"); ServiceProxy.Proxy = cf.CreateChannel(); //0 success //1 incorrect pass //2 already online //3 hacking attempt int res = ServiceProxy.Proxy.Login(login, passw); Thread.Sleep(2000); //emulate conntion procc this.Dispatcher.Invoke(new Action(delegate { loginBtn.IsEnabled = true; })); if (res == 0) { App.UserName = login; App.isConnected = true; App.iamonlineTread = new Thread(App.iAmOnline) { IsBackground = true }; App.iamonlineTread.Start(); bool isError = false; bool contains = false; App.ProxyMutex.WaitOne(); try { contains = ServiceProxy.Proxy.isAccountContainsAnyCharacter(login); } catch { App.OnException(); isError = true; } App.ProxyMutex.ReleaseMutex(); if (isError) { return; } if (!contains) { this.Dispatcher.Invoke(new Action(delegate { if (!App.WindowList.ContainsKey("CharacterCreateWnd")) { CharacterCreateScreen ccs = new CharacterCreateScreen(); App.WindowList.Add(ccs.Name, ccs); } else { (App.WindowList["CharacterCreateWnd"] as CharacterCreateScreen).OnWindowShow(); } App.WindowList["CharacterCreateWnd"].Show(); //loginTextBox.Text = ""; passwordTextBox.Password = ""; })); } else { this.Dispatcher.Invoke(new Action(delegate { if (!App.WindowList.ContainsKey("LobbyWnd")) { LobbyScreen ls = new LobbyScreen(); App.WindowList.Add(ls.Name, ls); } else { (App.WindowList["LobbyWnd"] as LobbyScreen).OnWindowShow(); } App.WindowList["LobbyWnd"].Show(); //loginTextBox.Text = ""; passwordTextBox.Password = ""; })); } Thread.Sleep(1000); this.Dispatcher.Invoke(new Action(delegate { errorPopupInfo.HideWaitInfo(); Hide(); })); } else if (res == 1) { this.Dispatcher.Invoke(new Action(delegate { errorPopupInfo.HideWaitInfoAndShowError("Неправильный логин или пароль!"); })); } else if (res == 2) { this.Dispatcher.Invoke(new Action(delegate { errorPopupInfo.HideWaitInfoAndShowError("Кто-то другой использует ваш аккаунт!"); })); } else if (res == 3) { this.Dispatcher.Invoke(new Action(delegate { errorPopupInfo.HideWaitInfoAndShowError("Поля заполнены некорректено!"); })); } if (!App.isConnected) { this.Dispatcher.Invoke(new Action(delegate { DoubleAnimation da = new DoubleAnimation(1, 0, TimeSpan.FromMilliseconds(100)); da.BeginTime = TimeSpan.FromMilliseconds(2000); da.FillBehavior = FillBehavior.Stop; da.Completed += new EventHandler(da_Completed); LoginErrorInfo.BeginAnimation(OpacityProperty, da); })); } } catch (CommunicationException) { this.Dispatcher.Invoke(new Action(delegate { App.isConnected = false; loginBtn.IsEnabled = true; errorPopupInfo.HideWaitInfoAndShowError( "Ошибка подключения!\r\nПопробуйте повторить попытку позже..." ); })); } catch (Exception exc) { this.Dispatcher.Invoke(new Action(delegate { App.isConnected = false; loginBtn.IsEnabled = true; App.dumpException(exc); MessageBox.Show(exc.Message, "Критическая ошибка!"); })); } }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.CharacterCreateWnd = ((CardGameClient.CharacterCreateScreen)(target)); #line 5 "..\..\..\CharacterCreateScreen.xaml" this.CharacterCreateWnd.Closing += new System.ComponentModel.CancelEventHandler(this.Window_Closing); #line default #line hidden #line 5 "..\..\..\CharacterCreateScreen.xaml" this.CharacterCreateWnd.Closed += new System.EventHandler(this.Window_Closed); #line default #line hidden #line 5 "..\..\..\CharacterCreateScreen.xaml" this.CharacterCreateWnd.Loaded += new System.Windows.RoutedEventHandler(this.Window_Loaded); #line default #line hidden #line 5 "..\..\..\CharacterCreateScreen.xaml" this.CharacterCreateWnd.ContentRendered += new System.EventHandler(this.Window_ContentRendered); #line default #line hidden #line 5 "..\..\..\CharacterCreateScreen.xaml" this.CharacterCreateWnd.IsVisibleChanged += new System.Windows.DependencyPropertyChangedEventHandler(this.CharacterCreateWnd_IsVisibleChanged); #line default #line hidden return; case 2: this.characterNameTextBox = ((CardGameClient.StyledTextBox)(target)); return; case 3: this.exitBtn = ((CardGameClient.StyledBtn)(target)); return; case 4: this.createCharBtn = ((CardGameClient.StyledBtn)(target)); return; case 5: this.grid2 = ((System.Windows.Controls.Grid)(target)); return; case 6: this.errorText = ((System.Windows.Controls.Label)(target)); return; case 7: this.gridHeroes = ((System.Windows.Controls.Grid)(target)); return; case 8: this.errorPopupInfo = ((CardGameClient.PopupInfo)(target)); return; } this._contentLoaded = true; }