コード例 #1
0
 void StopQuestionTimer()
 {
     if (TillNewQuestionDelayer != null)
     {
         TillNewQuestionDelayer.Stop();
         TillNewQuestionDelayer = null;
     }
 }
コード例 #2
0
        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)
            });
        }
コード例 #3
0
 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)
     });
 }
コード例 #4
0
ファイル: RetryBotUtils.cs プロジェクト: crazyants/trybot
 public static async Task WaitAsync(TimeSpan waitTime, ExecutionContext context, CancellationToken token) =>
 await TaskDelayer.Sleep(waitTime, token)
 .ConfigureAwait(context.BotPolicyConfiguration.ContinueOnCapturedContext);