/// <summary> /// Reveales a single letter that hasnt been revealed yet /// </summary> private void RevealLetter() { var rand = new Random(); var index = rand.Next(currentWord.Text.Length); var letter = currentWord.Text[index]; while (RevealedLetters.Any(rl => rl.LetterIndex == index)) { index = rand.Next(currentWord.Text.Length); letter = currentWord.Text[index]; } RevealedLetters.Add(new RevealedLetter() { Letter = letter, LetterIndex = index }); }
/// <summary> /// Resets the turn and picks a new painter /// </summary> private void ResetTurn() { if (words.IsEmpty) { IsGameFinished = true; currentWord = null; return; } // Needs to reset round if (currentRoundPainters.Count == gameRoom.Users.Count) { currentRoundNumber++; currentRoundPainters.Clear(); } var rand = new Random(); int newPainterId; while (true) { var index = rand.Next(0, gameRoom.Users.Count); newPainterId = gameRoom.Users.ToList().ElementAt(index).Key; if (newPainterId != currentPainterId && !currentRoundPainters.Any(id => id == newPainterId)) { break; } } currentPainterId = newPainterId; currentRoundPainters.Add(currentPainterId); words.TryDequeue(out var word); currentWord = word; RevealedLetters.Clear(); RemainingTime = GuessTime; }