void StopQuestionTimer() { if (TillNewQuestionDelayer != null) { TillNewQuestionDelayer.Stop(); TillNewQuestionDelayer = null; } }
async Task ChangeQuestion() { AcceptMessages = false; StopQuestionTimer(); foreach (var gameplayer in GamePlayers) { await Program.Server.Client.SendChatActionAsync(gameplayer.Player.ChatId, ChatAction.Typing); gameplayer.Answered = false; } if (QuestionNum == 0) { SendToAll.SendText(GamePlayers, "First question:"); } else if (QuestionNum == GameConfig.QuestionsPerGame) { SendToAll.SendText(GamePlayers, "Last question:"); } else if (QuestionNum > GameConfig.QuestionsPerGame) { SendToAll.SendText(GamePlayers, "Playing untill getting winner:"); } else { SendToAll.SendText(GamePlayers, "Question " + QuestionNum + ":"); } Question = QuestionSelector.SelectQuestion(); QuestionNum++; await Task.Delay(250); var outtext = Question.QuestionText; int i = 0; foreach (var answer in Question.Answers) { i++; outtext += "\n" + i + ") " + answer; } SendToAll.SendText(GamePlayers, outtext); AcceptMessages = true; TillNewQuestionDelayer = DelayedTask.DelayTask(new List <DelayedTask>() { new DelayedTask(() => ChangeQuestion(), 60), new DelayedTask(() => SendToAll.SendText(GamePlayers, "30 seconds remaining"), 30), new DelayedTask(() => SendToAll.SendText(GamePlayers, "15 seconds remaining"), 45), new DelayedTask(() => SendToAll.SendText(GamePlayers, "5 seconds remaining"), 55) }); }
void StartDelay() { Delayer = DelayedTask.DelayTask(new List <DelayedTask>() { new DelayedTask(() => StartGame(), 60), new DelayedTask(() => SendToAll.SendText(Players.ToArray(), "Game will start in 60 seconds."), 0), new DelayedTask(() => SendToAll.SendText(Players.ToArray(), "Game will start in 30 seconds."), 30), new DelayedTask(() => SendToAll.SendText(Players.ToArray(), "Game will start in 15 seconds."), 45), new DelayedTask(() => SendToAll.SendText(Players.ToArray(), "Game will start in 5 seconds."), 55) }); }
public static async Task WaitAsync(TimeSpan waitTime, ExecutionContext context, CancellationToken token) => await TaskDelayer.Sleep(waitTime, token) .ConfigureAwait(context.BotPolicyConfiguration.ContinueOnCapturedContext);