Пример #1
0
        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);
        }
Пример #2
0
        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 }
            });
        }