public async Task Run() { while (GameState != GameState.Running) { await Task.Delay(1000); } SetUpGame(); while (Players.Any() && QuestionPile.Any() && AnswerPile.Any()) { SetUpRound(); await DealCards(); await ShowQuestion(); // Wait for users to pick their answers await Sleep(60, CheckIfMaxAnswersHaveBeenSubmitted); await ShowAnswers(); // Wait for users to cast their votes await Sleep(60, CheckIfMaxVotesHaveBeenCast); await CalculateAndDisplayWinningCard(); await Sleep(8, () => false); await UpdateLeaderboard(); } await ChangeGameState(GameState.Ended); }
private void SetUpRound() { SubmittedAnswers.Clear(); CurrentQuestion = QuestionPile.Dequeue(); foreach (var player in Players) { player.Voted = false; } }
private void SetUpGame() { CardGenerator generator = new CardGenerator(); foreach (var card in generator.GenerateQuestions()) { QuestionPile.Enqueue(card); } foreach (var card in generator.GenerateAnswers()) { AnswerPile.Enqueue(card); } }