예제 #1
0
        public static async Task GameOver(PlayerGameContext winner, PlayerGameContext loser)
        {
            var kb = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardHide();

            winner.User.AddWin();
            winner.User.status = User.Status.Default;
            await winner.SendAsync(lang => lang.GameFinished, kb);

            await winner.SendAsync(lang => GetWinMessage(winner, loser, lang));

            await winner.SendAsync(lang => GetMessageForMe(lang, winner.hero));

            await winner.SendAsync(lang => GetMessageForEnemy(lang, loser.hero));

            loser.User.AddLose();
            loser.User.status = User.Status.Default;
            await loser.SendAsync(lang => lang.GameFinished, kb);

            await loser.SendAsync(lang => GetWinMessage(winner, loser, lang));

            await loser.SendAsync(lang => GetMessageForMe(lang, loser.hero));

            await loser.SendAsync(lang => GetMessageForEnemy(lang, winner.hero));

            await winner.User.Sender.SendPhotoWithText(lang => lang.GetAds(), "http://cdn1.savepice.ru/uploads/2017/6/18/f3a68821810058281cb2e19aa0dd1bc0-full.png");

            await loser.User.Sender.SendPhotoWithText(lang => lang.GetAds(), "http://cdn1.savepice.ru/uploads/2017/6/18/f3a68821810058281cb2e19aa0dd1bc0-full.png");
        }
예제 #2
0
        public async Task PickHero(IHero hero)
        {
            player.hero = hero.Copy(new Sender(player.User.ID, player.User.lang, player.bot));

            var kb = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardHide();

            await player.SendAsync(lang => $"{lang.PickedHero} {hero.Name} !", kb);

            player.User.HeroName = hero.Name; //??

            if (enemyPlayer.User.status == User.Status.Picked)
            {
                Random random = new Random();
                if (random.Next(0, 2) == 0)
                {
                    SetAttackerAndExcepter(player, enemyPlayer);
                }
                else
                {
                    SetAttackerAndExcepter(enemyPlayer, player);
                }
            }
            else
            {
                player.User.status = User.Status.Picked;
                await player.SendAsync(lang => lang.WaitForPickOfAnotherPlayer);
            }
        }
예제 #3
0
        public async Task LeaveConfirming()
        {
            var kb = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardHide();
            await player.SendAsync(lang => lang.SearchingModeStopped, kb);

            await enemyPlayer.SendAsync(lang => lang.PlayerLeftThisLobby, kb);

            game.Reset();
        }
예제 #4
0
        public async Task LeaveGame()
        {
            var kb = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardHide();

            player.User.AddLose();
            enemyPlayer.User.AddWin();
            await player.SendAsync(lang => lang.Retreat, kb);

            await enemyPlayer.SendAsync(lang => lang.RetreatEnemy, kb);

            game.Reset();
        }
예제 #5
0
        public async Task ConfirmGame(bool accepted)
        {
            var kb = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardHide();

            if (accepted)
            {
                await player.SendAsync(lang => lang.GameAccepted);

                if (enemyPlayer.User.status == User.Status.WaitingForRespond)
                {
                    player.User.status      = User.Status.Picking;
                    enemyPlayer.User.status = User.Status.Picking;

                    await player.SendAsync(lang => lang.GameStarted, kb);

                    await enemyPlayer.SendAsync(lang => lang.GameStarted, kb);

                    string allHero = string.Join("\n", Game.hero_list.Select(x => x.Name));

                    await player.SendAsync(lang => $"{lang.StringHeroes}:\n{allHero}\n{lang.PickHero}:", GetKeyboardNextPage(player.User));

                    await enemyPlayer.SendAsync(lang => $"{lang.StringHeroes}:\n{allHero}\n{lang.PickHero}:", GetKeyboardNextPage(enemyPlayer.User));
                }
                else
                {
                    player.User.status = User.Status.WaitingForRespond;
                    await player.SendAsync(lang => lang.AnotherPlayerGameAcceptWaiting, replyMarkup : kb);
                }
            }
            else
            {
                game.Reset();
                await player.SendAsync(lang => lang.GameCanceled + "\n" + lang.GameNotAccepted, replyMarkup : kb);

                await enemyPlayer.SendAsync(lang => lang.GameCanceled + "\n" + lang.AnotherPlayerDidntAcceptGame, kb);

                //end
            }
        }