public static AttackStatus ShootCommand(int userId, Direction direction) { Lobby lobby = LobbyRepository.Read(MemberRepository.ReadLobbyId(userId)); if (LobbyService.CanMakeTurn(lobby, userId) == false) { return(new AttackStatus { IsOtherTurn = true }); } var currentPlayer = lobby.Players[lobby.CurrentTurn]; var shootResult = PlayerLogic.TryShoot(lobby, currentPlayer, direction); LobbyService.EndTurn(lobby); if (currentPlayer.Guns == 0) { shootResult.KeyboardType = KeyboardType.Bomb; } if (currentPlayer.Guns == 0 && currentPlayer.Bombs == 0) { shootResult.KeyboardType = KeyboardType.Move; } return(shootResult); }
public static MoveStatus MoveCommand(int userId, Direction direction) { Lobby lobby = LobbyRepository.Read(MemberRepository.ReadLobbyId(userId)); if (LobbyService.CanMakeTurn(lobby, userId) == false) { return(new MoveStatus() { IsOtherTurn = true }); } var currentPlayer = lobby.Players[lobby.CurrentTurn]; var actionList = PlayerLogic.TryMove(lobby, currentPlayer, direction); LobbyService.EndTurn(lobby); //TODO: Вывод для дебага FormatAnswers.ConsoleApp(lobby); if (actionList.Contains(PlayerAction.GameEnd)) { lobby.IsActive = false; MemberRepository.Delete(lobby.GameId); LobbyService.EndTurn(lobby); return(new MoveStatus { IsGameEnd = true, CurrentPlayer = currentPlayer, PlayerActions = actionList }); } MoveStatus status = new MoveStatus { IsOtherTurn = false, IsGameEnd = false, CurrentPlayer = currentPlayer, PlayerActions = actionList }; if (actionList.Contains(PlayerAction.MeetPlayer)) { status.PlayersOnSameCell = MazeLogic.PlayersOnCell(currentPlayer, lobby); } return(status); }
public static AttackStatus StabCommand(int userId) { Lobby lobby = LobbyRepository.Read(MemberRepository.ReadLobbyId(userId)); if (LobbyService.CanMakeTurn(lobby, userId) == false) { return(new AttackStatus { IsOtherTurn = true }); } var currentPlayer = lobby.Players[lobby.CurrentTurn]; var stabResult = PlayerLogic.Stab(lobby, currentPlayer); LobbyService.EndTurn(lobby); return(stabResult); }
public static SkipTurnResult SkipTurn(int userId) { Lobby lobby = LobbyRepository.Read(MemberRepository.ReadLobbyId(userId)); var result = new SkipTurnResult(); if (LobbyService.CanMakeTurn(lobby, userId) == false) { //TODO: result.CanMakeTurn = false; return(result); } result.PickChest = PlayerLogic.LootChest(lobby, lobby.Players[lobby.CurrentTurn]); LobbyService.EndTurn(lobby); //TODO: result.CanMakeTurn = true; return(result); }
public static BombStatus BombCommand(int userId, Direction direction) { Lobby lobby = LobbyRepository.Read(MemberRepository.ReadLobbyId(userId)); if (LobbyService.CanMakeTurn(lobby, userId) == false) { return(new BombStatus { IsOtherTurn = true }); } var currentPlayer = lobby.Players[lobby.CurrentTurn]; var bombResult = PlayerLogic.Bomb(lobby, currentPlayer, direction); LobbyService.EndTurn(lobby); if (currentPlayer.Bombs == 0 && currentPlayer.Guns == 0) { return(new BombStatus { CurrentPlayer = currentPlayer, Result = bombResult, KeyboardId = KeyboardType.Move }); } if (currentPlayer.Bombs == 0) { return(new BombStatus { CurrentPlayer = currentPlayer, Result = bombResult, KeyboardId = KeyboardType.Shoot }); } return(new BombStatus { CurrentPlayer = currentPlayer, Result = bombResult, }); }