public async void TickTimer(object sender, EventArgs e) { Seconds++; if (Seconds == 59) { Seconds = 0; Minutes++; } if (Minutes == 59) { Minutes = 0; Hours++; } MainTimer.Text = string.Format("{0:00}:{1:00}:{2:00}", Hours, Minutes, Seconds); try { Core.db = new MainEntities(); List <UsersInOnLineGame> AllUsersInGame = Core.db.UsersInOnLineGame.Where(item => item.GameID == ThisUserInGame.GameID).ToList(); if (AllUsersInGame.Count() == 2) { Timer.Stop(); var USerChangeStatus = await Core.db.Users.FindAsync(Core.CurrentUser.ID); USerChangeStatus.StatusID = 4; var GameChangeStatus = await Core.db.OnLineGames.FindAsync(ThisUserInGame.GameID); GameChangeStatus.StatusID = 2; OnLineGames GameConnect = await Core.db.OnLineGames.FindAsync(ThisUserInGame.GameID); GameConnect.DateStart = DateTime.Now; GameConnect.LocationOfCheckers = ""; await Core.db.SaveChangesAsync(); Core.CurrentUser = USerChangeStatus; Windows.PlayingFieldHumanWindow NewPlayingField = new Windows.PlayingFieldHumanWindow(ThisUserInGame); GameFind = true; this.NavigationService.Navigate(new GameSelectTypePage()); NewPlayingField.ShowDialog(); } } catch (Exception ex) { if (ex.InnerException == null) { MessageBox.Show(ex.Message.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (ex.InnerException.InnerException == null) { MessageBox.Show(ex.InnerException.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } MessageBox.Show(ex.InnerException.ToString() + "\n" + ex.InnerException.InnerException.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } }
public async void TickTimer(object sender, EventArgs e) { Seconds++; if (Seconds == 59) { Seconds = 0; Minutes++; } if (Minutes == 59) { Minutes = 0; Hours++; } Core.db = new MainEntities(); OnLineGames Gamesdb = await Core.db.OnLineGames.FindAsync(CurrentGame.ID); if (CurrentGame != Gamesdb) { CurrentGame = Gamesdb; if (CurrentGame.StatusID == 3) { Timer.Stop(); var H = Hours * 60 * 60; var M = Minutes * 60; var S = Seconds + M + H; try { var ThisUserInGame = await Core.db.UsersInOnLineGame.FindAsync(ThisUser.ID); ThisUserInGame.StatusID = 3; // Работа со статистикой и рекордами осталась await Core.db.SaveChangesAsync(); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } if (WalksNumber % 2 != 0 && ThisUser.StatusID == 2) { MessageBox.Show("Ваш противник сдался\nВаши очки: " + User2Quantity * S, "Вы выиграли!", MessageBoxButton.OK, MessageBoxImage.Information); } else if (WalksNumber % 2 == 0 && ThisUser.StatusID == 1) { MessageBox.Show("Ваш противник сдался\nВаши очки: " + User1Quantity * S, "Вы выиграли!", MessageBoxButton.OK, MessageBoxImage.Information); } foreach (Window item in Application.Current.Windows) { if (item.Name == "LogGameWindow") { this.Close(); return; } } string str = Gamesdb.GameLog; Paragraph paragraph = new Paragraph(); paragraph.Inlines.Add(str); GameLogDocument = new FlowDocument(); GameLogDocument.Blocks.Add(paragraph); var newGameLogDocument = GameLogDocument; GameLogWindow window = new GameLogWindow(newGameLogDocument); window.Show(); this.Close(); } var CurrentLocationOfChekersStr = String.Empty; var GameLogText = new TextRange(GameLogDocument.ContentStart, GameLogDocument.ContentEnd); foreach (var item in CurrentGameArea) { CurrentLocationOfChekersStr += item + " "; } if (/*Gamesdb.GameLog != GameLogText.Text && */ Gamesdb.LocationOfCheckers != String.Empty && Gamesdb.LocationOfCheckers != CurrentLocationOfChekersStr) { string[] words = CurrentGame.LocationOfCheckers.Split(new char[] { ' ' }); var a = 0; User1Quantity = 0; User2Quantity = 0; PlayingField.Children.RemoveRange(0, PlayingField.Children.Count); for (int i = 0; i <= 7; i++) { StackPanel newStackpanel = new StackPanel(); newStackpanel.Orientation = Orientation.Horizontal; newStackpanel.Name = "N" + i; PlayingField.Children.Add(newStackpanel); for (int j = 0; j <= 7; j++) { CurrentGameArea[i, j] = words[a]; Button NewBtn = new Button(); NewBtn.Name = "N" + i + j; NewBtn.Content = "" + m[j] + (i + 1); NewBtn.Style = this.TryFindResource("Shashka") as Style; if (CurrentGameArea[i, j].ToString()[0] == 'W') { User2Quantity++; NewBtn.Background = Brushes.White; NewBtn.Foreground = Brushes.White; } if (CurrentGameArea[i, j].ToString()[0] == 'B') { User1Quantity++; NewBtn.Background = Brushes.Black; NewBtn.Foreground = Brushes.Black; } NewBtn.Click += Shashka_Click; NewBtn.MouseEnter += Shashka_MouseEnter; NewBtn.MouseLeave += Shashka_MouseLeave; newStackpanel.Children.Add(NewBtn); a++; } } string str = Gamesdb.GameLog; Paragraph paragraph = new Paragraph(); paragraph.Inlines.Add(str); GameLogDocument = new FlowDocument(); GameLogDocument.Blocks.Add(paragraph); WalksNumber++; } } this.Title = "Игра против пользователя с ником " + EnemyLogin; if (WalksNumber % 2 != 0 && ThisUser.StatusID == 1) { this.Title += " (Ваш ход)"; } else if (WalksNumber % 2 == 0 && ThisUser.StatusID == 2) { this.Title += " (Ваш ход)"; } else { this.Title += " (Ход противника)"; } if (WalksNumber % 2 == 0) { WhoWalks = "Белые"; } else { WhoWalks = "Черные"; } WhoWalksTxt.Text = WhoWalks; WalksNumerTxt.Text = WalksNumber.ToString(); InfoTimer.Text = string.Format("{0:00}:{1:00}", Hours, Minutes); InfoTimer.ToolTip = string.Format("{0:00}:{1:00}:{2:00}", Hours, Minutes, Seconds); ScoreBlack.Text = User1Quantity.ToString(); ScoreWhite.Text = User2Quantity.ToString(); }
private async void Page_Loaded(object sender, RoutedEventArgs e) { try { Core.db = new MainEntities(); var AllGames = Core.db.OnLineGames.ToList(); OnLineGames FindGame = AllGames.Find(item => item.StatusID == 1); if (FindGame == null) { OnLineGames CreateNewGame = new OnLineGames() { StatusID = 1 }; Core.db.OnLineGames.Add(CreateNewGame); await Core.db.SaveChangesAsync(); var ChangeStatusUser = await Core.db.Users.FindAsync(Core.CurrentUser.ID); ChangeStatusUser.StatusID = 3; ThisUserInGame = new UsersInOnLineGame() { UserID = Core.CurrentUser.ID, GameID = CreateNewGame.ID, StatusID = 1 }; Core.db.UsersInOnLineGame.Add(ThisUserInGame); await Core.db.SaveChangesAsync(); Core.CurrentUser = ChangeStatusUser; StartTimer(); } else { var AllUsersInGame = Core.db.UsersInOnLineGame.Where(item => item.GameID == FindGame.ID).ToList(); if (AllUsersInGame.Count() == 1) { var ChangeStatus = await Core.db.Users.FindAsync(Core.CurrentUser.ID); ChangeStatus.StatusID = 4; ThisUserInGame = new UsersInOnLineGame() { UserID = Core.CurrentUser.ID, GameID = FindGame.ID, StatusID = 2 }; Core.db.UsersInOnLineGame.Add(ThisUserInGame); await Core.db.SaveChangesAsync(); Core.CurrentUser = ChangeStatus; Windows.PlayingFieldHumanWindow NewPlayingField = new Windows.PlayingFieldHumanWindow(ThisUserInGame); GameFind = true; this.NavigationService.Navigate(new GameSelectTypePage()); NewPlayingField.ShowDialog(); } else { MessageBox.Show("Не удалось подключиться к игре", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); this.NavigationService.Navigate(new GameSelectTypePage()); } } } catch (Exception ex) { if (ex.InnerException == null) { MessageBox.Show(ex.Message.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (ex.InnerException.InnerException == null) { MessageBox.Show(ex.InnerException.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } MessageBox.Show(ex.InnerException.ToString() + "\n" + ex.InnerException.InnerException.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } }