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"); }
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); } }
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(); }
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(); }
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 } }