public static List <MessageConfig> SkipTurn(int chatId) { //TODO: написать тип SkipStatus CharacterRepository character = new CharacterRepository(); var res = GameCommandService.SkipTurn(chatId); var memberlist = MemberRepository.ReadMemberList(MemberRepository.ReadLobbyId(chatId)); var username = character.Read(chatId).CharacterName; List <MessageConfig> msg = new List <MessageConfig>(); //TODO var lobby = LobbyRepository.Read(MemberRepository.ReadLobbyId(chatId)); var nextPlayer = lobby.Players[lobby.CurrentTurn]; if (res.CanMakeTurn) { if (res.PickChest) { msg.Add(new MessageConfig { Answer = String.Format(Answers.SkipTurn.RandomAnswer(), username) + '\n' + String.Format(Answers.MoveChest.RandomAnswer(), username), PlayerId = chatId }); msg.AddRange(memberlist .Where(m => m.UserId != chatId) .Select(m => new MessageConfig { Answer = String.Format(AnswersForOther.SkipTurn.RandomAnswer(), username) + '\n' + String.Format(AnswersForOther.MoveChest.RandomAnswer(), username), PlayerId = m.UserId })); } else { msg.Add(new MessageConfig { Answer = String.Format(Answers.SkipTurn.RandomAnswer(), username) + '\n', PlayerId = chatId }); msg.AddRange(memberlist .Where(m => m.UserId != chatId) .Select(m => new MessageConfig { Answer = String.Format(AnswersForOther.SkipTurn.RandomAnswer(), username), PlayerId = m.UserId })); } msg.Find(e => e.PlayerId == nextPlayer.TelegramUserId).KeyBoardId = GetKeyboardType(nextPlayer); return(msg); } msg.Add(new MessageConfig { Answer = String.Format(Answers.NoTurn.RandomAnswer()), PlayerId = chatId, }); return(msg); }
public static List <MessageConfig> MoveCommand(int chatId, Direction direction) { //TODO: var memberlist = MemberRepository.ReadMemberList(MemberRepository.ReadLobbyId(chatId)); var status = GameCommandService.MoveCommand(chatId, direction); var username = status.CurrentPlayer?.HeroName; List <MessageConfig> msg = new List <MessageConfig>(); if (status.IsOtherTurn) { msg.Add(new MessageConfig { Answer = String.Format(Answers.NoTurn.RandomAnswer()), PlayerId = chatId }); return(msg); } if (status.IsGameEnd) { //TODO: рефактринг, заменить for на AddRabge и LINQ foreach (var member in memberlist) { var character = CharacterRepository .ReadAll().Find(e => e.TelegramUserId == member.UserId); character.State = CharacterState.ChangeGameMode; CharacterRepository.Update(character); if (member.UserId == chatId) { msg.Add(new MessageConfig { Answer = String.Format(Answers.EndGame.RandomAnswer(), username), PlayerId = member.UserId }); } else { msg.Add(new MessageConfig { Answer = String.Format(AnswersForOther.EndGame.RandomAnswer(), username, Extensions.DirectionToString(direction)), PlayerId = member.UserId }); } } return(msg); } var lobby = LobbyRepository.Read(MemberRepository.ReadLobbyId(chatId)); var nextPlayer = lobby.Players[lobby.CurrentTurn]; if (status.PlayerActions.Contains(PlayerAction.OnWall)) { msg.Add(new MessageConfig { Answer = String.Format(Answers.MoveWall.RandomAnswer(), username) + '\n', PlayerId = chatId }); msg.AddRange(memberlist .Where(m => m.UserId != chatId) .Select(m => new MessageConfig { Answer = String.Format(AnswersForOther.MoveWall.RandomAnswer(), username, Extensions.DirectionToString(direction)), PlayerId = m.UserId })); msg.Find(e => e.PlayerId == nextPlayer.TelegramUserId).KeyBoardId = GetKeyboardType(nextPlayer); return(msg); } string s = ""; var messageList = new List <string>(); foreach (var item in status.PlayerActions) { var newString = StatusToMessage.MessageOnMoveAction(item, username); if (newString != null) { messageList.Add(newString); } } // messageList.Add(String.Format(Answers.MovePlayer.RandomAnswer(), username, player.HeroName)); s = string.Join("\\n", messageList); if (status.PlayerActions.Contains(PlayerAction.OnArsenal)) { msg.Add(new MessageConfig { Answer = String.Format(Answers.MoveGo.RandomAnswer(), username) + '\n' + s, PlayerId = chatId, KeyBoardId = KeyboardType.ShootwithBomb }); } else { msg.Add(new MessageConfig { Answer = String.Format(Answers.MoveGo.RandomAnswer(), username) + '\n' + s, PlayerId = chatId, }); } msg.AddRange(memberlist .Where(m => m.UserId != chatId) .Select(m => new MessageConfig { Answer = String.Format(AnswersForOther.MoveGo.RandomAnswer(), username, Extensions.DirectionToString(direction)) + s, PlayerId = m.UserId })); if (status.PlayersOnSameCell != null) { string answ1 = "", answ2 = ""; foreach (var player in status.PlayersOnSameCell) { answ1 += String.Format(Answers.MovePlayer.RandomAnswer(), player.HeroName) + '\n'; answ2 += String.Format(AnswersForOther.MovePlayer.RandomAnswer(), username, player.HeroName, Extensions.DirectionToString(direction)); } msg.Add(new MessageConfig { Answer = answ1, PlayerId = chatId }); msg.AddRange(memberlist .Where(m => m.UserId != chatId) .Select(m => new MessageConfig { Answer = answ2, PlayerId = m.UserId })); } msg.Find(e => e.PlayerId == nextPlayer.TelegramUserId).KeyBoardId = GetKeyboardType(nextPlayer); return(msg); }
public static List <MessageConfig> StabCommand(int userId) { //TODO: Назвать все userId и playerId в одном стиле var status = GameCommandService.StabCommand(userId); List <MessageConfig> msg = new List <MessageConfig>(); var lobby = LobbyRepository.Read(MemberRepository.ReadLobbyId(userId)); var nextPlayer = lobby.Players[lobby.CurrentTurn]; if (status.IsOtherTurn) { msg.Add(new MessageConfig { Answer = String.Format(Answers.NoTurn.RandomAnswer()), PlayerId = userId }); return(msg); } var memberlist = MemberRepository.ReadMemberList(MemberRepository.ReadLobbyId(userId)); var username = status.CurrentPlayer.HeroName; if (status.Result == AttackType.NoAttack) { for (int i = 0; i < memberlist.Count; i++) { if (memberlist[i].UserId == userId) { msg.Add(new MessageConfig { Answer = String.Format(Answers.StabWall.RandomAnswer(), username), PlayerId = memberlist[i].UserId }); } else { msg.Add(new MessageConfig { Answer = String.Format(AnswersForOther.StabWall.RandomAnswer(), username), PlayerId = memberlist[i].UserId }); } } msg.Find(e => e.PlayerId == nextPlayer.TelegramUserId).KeyBoardId = GetKeyboardType(nextPlayer); return(msg); } var config = StatusToMessage.MessageOnStab(status.Result, username, status.Target.HeroName); msg.Add(new MessageConfig { Answer = config.Item1, PlayerId = userId }); msg.AddRange(memberlist .Where(m => m.UserId != userId) .Select(m => new MessageConfig { Answer = config.Item2, PlayerId = m.UserId })); msg.Find(e => e.PlayerId == nextPlayer.TelegramUserId).KeyBoardId = GetKeyboardType(nextPlayer); msg.Find(e => e.PlayerId == status.Target.TelegramUserId).Answer += "Вы убиты. Для поиска игры воспользуйтесь командой /game"; return(msg); }
public static List <MessageConfig> ShootCommand(int userId, Direction direction) { List <MessageConfig> msg = new List <MessageConfig>(); var status = GameCommandService.ShootCommand(userId, direction); //TODO: вынести в отдебный метод отправку "не ваш ход" if (status.IsOtherTurn) { msg.Add(new MessageConfig { Answer = String.Format(Answers.NoTurn.RandomAnswer()), PlayerId = userId }); return(msg); } var username = status.CurrentPlayer.HeroName; var memberlist = MemberRepository.ReadMemberList(MemberRepository.ReadLobbyId(userId)); var lobby = LobbyRepository.Read(MemberRepository.ReadLobbyId(userId)); var nextPlayer = lobby.Players[lobby.CurrentTurn]; if (status.Result == AttackType.NoAttack) { for (int i = 0; i < memberlist.Count; i++) { if (memberlist[i].UserId == userId) { msg.Add(new MessageConfig { Answer = String.Format(Answers.NotBullet.RandomAnswer(), username), PlayerId = memberlist[i].UserId }); } else { msg.Add(new MessageConfig { Answer = String.Format(AnswersForOther.NotBullet.RandomAnswer(), username), PlayerId = memberlist[i].UserId }); } } msg.Find(e => e.PlayerId == nextPlayer.TelegramUserId).KeyBoardId = GetKeyboardType(nextPlayer); return(msg); } if (status.Result == AttackType.NoTarget) { msg.Add(new MessageConfig { Answer = String.Format(Answers.ShootWall.RandomAnswer(), username, Extensions.DirectionToString(direction)), PlayerId = userId, KeyBoardId = status.KeyboardType }); msg.AddRange(memberlist .Where(m => m.UserId != userId) .Select(m => new MessageConfig { Answer = String.Format(AnswersForOther.ShootWall.RandomAnswer(), username, Extensions.DirectionToString(direction)), PlayerId = m.UserId })); msg.Find(e => e.PlayerId == nextPlayer.TelegramUserId).KeyBoardId = GetKeyboardType(nextPlayer); return(msg); } var config = StatusToMessage.MessageOnShoot(status.Result, username, status.Target.HeroName, direction.DirectionToString()); msg.Add(new MessageConfig { Answer = config.Item1, PlayerId = userId }); msg.AddRange(memberlist .Where(m => m.UserId != userId) .Select(m => new MessageConfig { Answer = config.Item2, PlayerId = m.UserId })); //if (status.ShootCount == false) msg.Find(e => e.PlayerId == userId).KeyBoardId = status.KeyboardType; msg.Find(e => e.PlayerId == nextPlayer.TelegramUserId).KeyBoardId = GetKeyboardType(nextPlayer); msg.Find(e => e.PlayerId == status.Target.TelegramUserId).Answer += "Вы убиты. Для поиска игры воспользуйтесь командой /game"; return(msg); }
public static List <MessageConfig> BombCommand(int userId, Direction direction) { List <MessageConfig> msg = new List <MessageConfig>(); var memberlist = MemberRepository.ReadMemberList(MemberRepository.ReadLobbyId(userId)); var status = GameCommandService.BombCommand(userId, direction); if (status.IsOtherTurn) { msg.Add(new MessageConfig { Answer = String.Format(Answers.NoTurn.RandomAnswer()), PlayerId = userId }); return(msg); } var lobby = LobbyRepository.Read(MemberRepository.ReadLobbyId(userId)); var nextPlayer = lobby.Players[lobby.CurrentTurn]; var username = status.CurrentPlayer.HeroName; if (status.Result == BombResultType.Wall) { msg.Add(new MessageConfig { Answer = String.Format(Answers.ResultBombWall.RandomAnswer(), username) + '\n', PlayerId = userId }); msg.AddRange(memberlist .Where(m => m.UserId != userId) .Select(m => new MessageConfig { Answer = String.Format(AnswersForOther.ResultBombWall.RandomAnswer(), username, Extensions.DirectionToString(direction)), PlayerId = m.UserId })); } else if (status.Result == BombResultType.NoBomb) { msg.Add(new MessageConfig { Answer = String.Format(Answers.ResultBombNoBomb.RandomAnswer()), PlayerId = userId }); } else if (status.Result == BombResultType.Void) { for (int i = 0; i < memberlist.Count; i++) { msg.Add(new MessageConfig { Answer = String.Format(Answers.ResultBombVoid.RandomAnswer(), username) + '\n', PlayerId = userId }); msg.AddRange(memberlist .Where(m => m.UserId != userId) .Select(m => new MessageConfig { Answer = String.Format(AnswersForOther.ResultBombVoid.RandomAnswer(), username, direction.DirectionToString()), PlayerId = m.UserId })); } } // if (status.BombCount == false) msg.Find(e => e.PlayerId == userId).KeyBoardId = status.KeyboardId; msg.Find(e => e.PlayerId == nextPlayer.TelegramUserId).KeyBoardId = GetKeyboardType(nextPlayer); return(msg); }