示例#1
0
        public AnswerSubmitResult SubmitGuess(int gameId, string guess)
        {
            return(Operation(() =>
            {
                CheckIsUserAuthenticated();
                if (!serverManager.IsUserInGame(LoggedUser, gameId))
                {
                    throw new Exception("Can't submit a guess to a game you are not in");
                }

                var result = serverManager.SubmitGuess(LoggedUser, gameId, guess);
                var gameUsers = serverManager.GetGameUsers(gameId);

                foreach (var user in gameUsers)
                {
                    if (user.Id == LoggedUser.Id)
                    {
                        continue;
                    }

                    var callback = userCallbacks.First(pair => pair.Key == user.Id).Value;
                    if (result == AnswerSubmitResult.Wrong)
                    {
                        callback.PlayerSubmitedGuess(LoggedUser, guess);
                    }
                    else if (result == AnswerSubmitResult.Right)
                    {
                        callback.PlayerAnsweredCorrectly(LoggedUser, serverManager.GetPlayerGameData(LoggedUser, gameId));
                    }
                }

                return result;
            }));
        }