public void SubmitAnswer(Player player, string answer, Action onSuccess)
        {
            if (IsPrompt(answer))
            {
                Logger.Log(this, "Player {0}'s answer matches prompt!", player.Data.Name);
                player.SendAnswerValidation(GameAnswerValidationResponse.MatchesPrompt);
            }
            else if (MatchesExistingAnswer(answer))
            {
                Logger.Log(this, "Player {0}'s answer matches an existing answer from another player!", player.Data.Name);
                player.SendAnswerValidation(GameAnswerValidationResponse.AlreadyExists);
            }
            else if (string.IsNullOrWhiteSpace(answer))
            {
                player.SendAnswerValidation(GameAnswerValidationResponse.Empty);
            }
            else
            {
                player.SendAnswerValidation(GameAnswerValidationResponse.None);

                // Add answer here
                var answerData = new AnswerData(player.Data, answer.Trim());
                Logger.Log(this, "Add answer: {0}", answerData.Answer);
                answers.Add(answerData);

                // Tell all clients that player has submitted answer
                Players.ForEach(x => x.NotifyPlayerGameAction(player.Data, GamePlayerAction.AnswerSubmitted));

                if (onSuccess != null)
                    onSuccess();
            }
        }
Beispiel #2
0
 public SendActualAnswer(AnswerData answer)
 {
     Answer = answer;
 }
Beispiel #3
0
 public SendResult(AnswerData answer)
 {
     Answer = answer;
 }
Beispiel #4
0
 public SendActualAnswer(AnswerData answer)
 {
     Answer = answer;
 }
Beispiel #5
0
 public SendResult(AnswerData answer)
 {
     Answer = answer;
 }
Beispiel #6
0
 public ScoreData(uint score, uint likes, AnswerData answerGiven)
 {
     Score = score;
     Likes = likes;
     AnswerGiven = answerGiven;
 }
        public Queue<AnswerData> GetResults()
        {
            var results = new Queue<AnswerData>();

            // Sort answers by least chosen to most chosen excluding the actual answer
            var sortedAnswers = ChosenAnswers
                .Where(x => x.Type != GameAnswerType.ActualAnswer)
                .OrderBy(x => x.Choosers.Count)
                .ToList();
            sortedAnswers.ForEach(x => results.Enqueue(x));

            // Append the actual answer to the queue
            var actualAnswer = ChosenAnswers.FirstOrDefault(x => x.Type == GameAnswerType.ActualAnswer);
            if (actualAnswer == null)
                actualAnswer = new AnswerData(CurrentDrawing.Prompt.GetText(), GameAnswerType.ActualAnswer);
            results.Enqueue(actualAnswer);

            return results;
        }
        public void SendChoicesToPlayers()
        {
            // Find out how many players didn't answer
            var playersWithNoAnswerCount = 0;
            foreach (var player in Players)
            {
                if (!answers.Any(x => x.Author == player.Data) && player.Data != CurrentDrawing.Creator)
                    playersWithNoAnswerCount++;
            }

            // Add decoys for every player that didn't answer
            var decoys = Settings.Drawesome.Decoys;

            if (decoys.Count == 0)
            {
                Logger.Warn(this, "Can't add decoys as none are present in Drawesome's settings");
            }
            else
            {
                var rnd = new Random();
                for (int i = 0; i < playersWithNoAnswerCount; i++)
                {
                    var decoy = decoys[rnd.Next(0, decoys.Count - 1)];
                    answers.Add(new AnswerData(decoy, GameAnswerType.Decoy));
                    Console.WriteLine("Add decoy: {0}", decoy);
                }
            }

            // Add actual answer
            var answerData = new AnswerData(CurrentDrawing.Prompt.GetText(), GameAnswerType.ActualAnswer);
            answers.Add(answerData);

            Players.ForEach(x => x.SendChoices(CurrentDrawing.Creator, answers.ToList()));
        }
Beispiel #9
0
 public ScoreData(uint score, uint likes, AnswerData answerGiven)
 {
     Score       = score;
     Likes       = likes;
     AnswerGiven = answerGiven;
 }