示例#1
0
        private static void HandleOnWordGuessPackage(WordGuessPackage package)
        {
            var match = GetMatchByUid(package.MatchUid);

            if (match.WordToDraw == null)
            {
                return;
            }

            if (String.Equals(match.WordToDraw.Value, package.GuessedWord, StringComparison.InvariantCultureIgnoreCase))
            {
                foreach (var matchPlayer in match.Players)
                {
                    _server.Router.DistributePackage(new WordGuessCorrectPackage(package.SenderUid, Router.ServerWildcard, matchPlayer.Uid));
                }

                match.CalculateAndRaiseScore(package.SenderUid);

                //Check if all players (exept the drawing player) have guessed the word and stop this subround!
                if (match.HasEveryPlayerGuessedTheWord())
                {
                    match.StopSubRoundTimer();
                }
            }
            else
            {
                foreach (var matchPlayer in match.Players)
                {
                    _server.Router.DistributePackage(new WordGuessPackage(package.GuessedWord, match.MatchUid, package.PlayerUid, Router.ServerWildcard, matchPlayer.Uid));
                }
            }
        }
        private void HandleOnWordGuessedByOtherPlayer(WordGuessPackage package)
        {
            InvokeGui(() =>
            {
                var player = GetPlayerByUid(package.PlayerUid);

                if (player != null)
                {
                    _viewModel.Guesses.Add(new Guess(player.Username, package.GuessedWord, false));
                    Log.Debug($"Other user guessed a word: {package}");

                    ScrollGuessListToLastItem();
                }
            });
        }