private void HandleMatchWon() { IsGameRunning = false; var playersThatHaveWon = ParticipatingPlayers.Where(m => m.IsWinner).ToList(); if (ParticipatingPlayers.Count == 1) { playersThatHaveWon.First().WinMessage = "PRACTICE COMPLETE"; } else if (playersThatHaveWon.Count == 1) { playersThatHaveWon.First().WinMessage = "MATCH WON"; } else { foreach (var player in playersThatHaveWon) { player.WinMessage = "MATCH DRAWN"; } } _matchWon = true; var playersToCalculate = ParticipatingPlayers.Where(m => m.PlayerDetails != null).ToList(); _currentGameService.CloseMatch(GetGameParameters()); _currentStatisticsService.CalculatePlayerStatistics(SelectedGame.Id, playersToCalculate); MessageBus.Current.SendMessage(playersToCalculate); }
private void ProcessWonGame() { var soundToPlay = "gs.wav"; var soundToSay = "GAME SHOT"; var winners = _currentGameService.GetVictoriousPlayers(GetGameParameters()); GetCurrentPlayer().IsGameShot = true; ResetCheckOutHints(); // Determine if any other player is a joint winner var playersThatHaveWon = ParticipatingPlayers.Where(m => m.CurrentScore == winners.First().CurrentScore && m.SetsWon == winners.First().SetsWon&& m.LegsWon == winners.First().LegsWon).ToList(); foreach (var victoriousPlayer in playersThatHaveWon) { victoriousPlayer.IsWinner = true; // Update current score victoriousPlayer.LegsWon++; victoriousPlayer.CummulativeLegsWon++; } // Update legs played for all players foreach (var player in ParticipatingPlayers) { player.LegsPlayed++; player.CurrentDartCount = 0; } if (playersThatHaveWon.First().LegsWon == SelectedLeg) { soundToPlay = "gss.wav"; soundToSay = "GAME SHOT AND THE SET"; foreach (var player in ParticipatingPlayers) { player.LegsWon = 0; } // Update current score foreach (var victoriousPlayer in playersThatHaveWon) { victoriousPlayer.SetsWon++; } if (playersThatHaveWon.First().SetsWon == SelectedSet) { HandleMatchWon(); soundToPlay = "gsm.wav"; soundToSay = "GAME SHOT AND THE MATCH"; } } foreach (var player in ParticipatingPlayers) { player.LeaderMessage = string.Empty; } StartNextGame(); var nextPlayerSound = playersThatHaveWon.First().SetsWon == SelectedSet ? null : $"tfplayer{_currentPlayer + 1}.wav"; var nextPlayerText = playersThatHaveWon.First().SetsWon == SelectedSet ? null : $"{GetCurrentPlayerName()} TO THROW FIRST"; CommentaryPlayer.Play(new Commentary { PlaySounds = _configurationData.PlaySounds, SoundFiles = new[] { soundToPlay, nextPlayerSound }, SoundTexts = new[] { soundToSay, nextPlayerText } }); }