diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatRoomMediator.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatRoomMediator.java index a547b95dc..5936e1871 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatRoomMediator.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatRoomMediator.java @@ -23,20 +23,14 @@ public class ChatRoomMediator { _channelInactivityTimeoutPeriod = 1000 * secondsTimeoutPeriod; } - public synchronized List joinUser(String playerId, boolean admin) { - if (!admin && _allowedPlayers != null && !_allowedPlayers.contains(playerId)) - throw new WebApplicationException(Response.Status.FORBIDDEN); - + public synchronized List joinUser(String playerId) { GatheringChatRoomListener value = new GatheringChatRoomListener(); _listeners.put(playerId, value); _chatRoom.joinChatRoom(playerId, value); return value.consumeMessages(); } - public synchronized List getPendingMessages(String playerId, boolean admin) { - if (!admin && _allowedPlayers != null && !_allowedPlayers.contains(playerId)) - throw new WebApplicationException(Response.Status.FORBIDDEN); - + public synchronized List getPendingMessages(String playerId) { GatheringChatRoomListener gatheringChatRoomListener = _listeners.get(playerId); if (gatheringChatRoomListener == null) throw new WebApplicationException(Response.Status.NOT_FOUND); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatServer.java index 439eaf0a2..ba1ee3775 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatServer.java @@ -16,7 +16,7 @@ public class ChatServer extends AbstractServer { return chatRoom; } - public ChatRoomMediator createPrivateChatRoom(String name, Set allowedUsers, int secondsTimeoutPeriod) { + public ChatRoomMediator createVoicedChatRoom(String name, Set allowedUsers, int secondsTimeoutPeriod) { ChatRoomMediator chatRoom = new ChatRoomMediator(secondsTimeoutPeriod, allowedUsers); chatRoom.sendMessage("System", "Welcome to private room: " + name, true); _chatRooms.put(name, chatRoom); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java index fb1637f6e..f08784bc9 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java @@ -29,7 +29,7 @@ public class LotroGameMediator { private Set _playersPlaying = new HashSet(); private int _maxSecondsForGamePerPlayer = 60 * 80; // 80 minutes - private boolean _noSpectators; + private boolean _allowSpectators; private boolean _cancellable; // private final int _maxSecondsForGamePerPlayer = 60 * 40; // 40 minutes private final int _channelInactivityTimeoutPeriod = 1000 * 60 * 5; // 5 minutes @@ -41,9 +41,9 @@ public class LotroGameMediator { private int _channelNextIndex = 0; public LotroGameMediator(LotroFormat lotroFormat, LotroGameParticipant[] participants, LotroCardBlueprintLibrary library, int maxSecondsForGamePerPlayer, - boolean noSpectators, boolean cancellable) { + boolean allowSpectators, boolean cancellable) { _maxSecondsForGamePerPlayer = maxSecondsForGamePerPlayer; - _noSpectators = noSpectators; + _allowSpectators = allowSpectators; _cancellable = cancellable; if (participants.length < 1) throw new IllegalArgumentException("Game can't have less than one participant"); @@ -62,8 +62,8 @@ public class LotroGameMediator { _userFeedback.setGame(_lotroGame); } - public boolean isNoSpectators() { - return _noSpectators; + public boolean isAllowSpectators() { + return _allowSpectators; } public void setPlayerAutoPassSettings(String playerId, Set phases) { @@ -325,7 +325,7 @@ public class LotroGameMediator { public void processCommunicationChannel(Player player, int channelNumber, ParticipantCommunicationVisitor visitor) { String playerName = player.getName(); - if (!player.getType().contains("a") && _noSpectators && !_playersPlaying.contains(playerName)) + if (!player.getType().contains("a") && !_allowSpectators && !_playersPlaying.contains(playerName)) throw new WebApplicationException(Response.Status.FORBIDDEN); _readLock.lock(); @@ -360,7 +360,7 @@ public class LotroGameMediator { public void singupUserForGame(Player player, ParticipantCommunicationVisitor visitor) { String playerName = player.getName(); - if (!player.getType().contains("a") && _noSpectators && !_playersPlaying.contains(playerName)) + if (!player.getType().contains("a") && !_allowSpectators && !_playersPlaying.contains(playerName)) throw new WebApplicationException(Response.Status.FORBIDDEN); _readLock.lock(); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java index 30ead7d30..5f86a3a84 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java @@ -122,24 +122,22 @@ public class LotroServer extends AbstractServer { return "Game" + gameId; } - public synchronized String createNewGame(LotroFormat lotroFormat, String tournamentName, final LotroGameParticipant[] participants, boolean competitive, boolean tournament) { + public synchronized String createNewGame(LotroFormat lotroFormat, String tournamentName, final LotroGameParticipant[] participants, boolean allowSpectators, boolean allowCancelling, boolean muteSpectators, boolean competitiveTime + ) { if (participants.length < 2) throw new IllegalArgumentException("There has to be at least two players"); final String gameId = String.valueOf(_nextGameId); - boolean noSpectators = tournament; - boolean cancellable = !tournament; - - if (noSpectators) { + if (muteSpectators) { Set allowedUsers = new HashSet(); for (LotroGameParticipant participant : participants) allowedUsers.add(participant.getPlayerId()); - _chatServer.createPrivateChatRoom(getChatRoomName(gameId), allowedUsers, 30); + _chatServer.createVoicedChatRoom(getChatRoomName(gameId), allowedUsers, 30); } else _chatServer.createChatRoom(getChatRoomName(gameId), 30); LotroGameMediator lotroGameMediator = new LotroGameMediator(lotroFormat, participants, _lotroCardBlueprintLibrary, - competitive ? 60 * 40 : 60 * 80, noSpectators, cancellable); + competitiveTime ? 60 * 40 : 60 * 80, !allowSpectators, allowCancelling); lotroGameMediator.addGameResultListener( new GameResultListener() { @Override diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java index 2d4f00272..1804ff3e7 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java @@ -266,7 +266,7 @@ public class HallServer extends AbstractServer { LotroGameMediator lotroGameMediator = _lotroServer.getGameById(runningTable.getGameId()); if (lotroGameMediator != null) { if (!lotroGameMediator.isFinished()) - visitor.visitTable(runningGame.getKey(), runningTable.getGameId(), player.getType().contains("a") || !lotroGameMediator.isNoSpectators(), lotroGameMediator.getGameStatus(), runningTable.getFormatName(), runningTable.getTournamentName(), lotroGameMediator.getPlayersPlaying(), lotroGameMediator.getWinner()); + visitor.visitTable(runningGame.getKey(), runningTable.getGameId(), player.getType().contains("a") || lotroGameMediator.isAllowSpectators(), lotroGameMediator.getGameStatus(), runningTable.getFormatName(), runningTable.getTournamentName(), lotroGameMediator.getPlayersPlaying(), lotroGameMediator.getWinner()); else finishedTables.put(runningGame.getKey(), runningTable); } @@ -391,12 +391,12 @@ public class HallServer extends AbstractServer { }; } - createGame(tableId, participants, listener, awaitingTable.getLotroFormat(), getTournamentName(awaitingTable), league != null, false); + createGame(tableId, participants, listener, awaitingTable.getLotroFormat(), getTournamentName(awaitingTable), true, league == null, false, false); _awaitingTables.remove(tableId); } - private void createGame(String tableId, LotroGameParticipant[] participants, GameResultListener listener, LotroFormat lotroFormat, String tournamentName, boolean competitive, boolean tournament) { - String gameId = _lotroServer.createNewGame(lotroFormat, tournamentName, participants, competitive, tournament); + private void createGame(String tableId, LotroGameParticipant[] participants, GameResultListener listener, LotroFormat lotroFormat, String tournamentName, boolean allowSpectators, boolean allowCancelling, boolean muteSpectators, boolean competitiveTime) { + String gameId = _lotroServer.createNewGame(lotroFormat, tournamentName, participants, allowSpectators, allowCancelling, muteSpectators, competitiveTime); LotroGameMediator lotroGameMediator = _lotroServer.getGameById(gameId); if (listener != null) lotroGameMediator.addGameResultListener(listener); @@ -513,14 +513,14 @@ public class HallServer extends AbstractServer { } @Override - public void createGame(LotroGameParticipant playerOne, LotroGameParticipant playerTwo) { + public void createGame(LotroGameParticipant playerOne, LotroGameParticipant playerTwo, boolean allowSpectators) { final LotroGameParticipant[] participants = new LotroGameParticipant[2]; participants[0] = playerOne; participants[1] = playerTwo; - createGameInternal(participants); + createGameInternal(participants, allowSpectators); } - private void createGameInternal(final LotroGameParticipant[] participants) { + private void createGameInternal(final LotroGameParticipant[] participants, final boolean allowSpectators) { _hallDataAccessLock.writeLock().lock(); try { if (!_shutdown) { @@ -533,9 +533,9 @@ public class HallServer extends AbstractServer { @Override public void gameCancelled() { - createGameInternal(participants); + createGameInternal(participants, allowSpectators); } - }, _formatLibrary.getFormat(_tournament.getFormat()), _tournament.getTournamentName(), true, true); + }, _formatLibrary.getFormat(_tournament.getFormat()), _tournament.getTournamentName(), allowSpectators, false, true, true); } } finally { _hallDataAccessLock.writeLock().unlock(); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournament.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournament.java index 14d30b89d..77470eb4d 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournament.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/AbstractTournament.java @@ -207,9 +207,9 @@ public abstract class AbstractTournament implements Tournament { } } - private void createNewGame(TournamentCallback tournamentCallback, String playerOne, String playerTwo) { + private void createNewGame(TournamentCallback tournamentCallback, String playerOne, String playerTwo, boolean allowSpectators) { tournamentCallback.createGame(new LotroGameParticipant(playerOne, _playerDecks.get(playerOne)), - new LotroGameParticipant(playerTwo, _playerDecks.get(playerTwo))); + new LotroGameParticipant(playerTwo, _playerDecks.get(playerTwo)), allowSpectators); } private class StartTournament implements TournamentTask { @@ -253,10 +253,10 @@ public abstract class AbstractTournament implements Tournament { protected abstract void pairPlayers(TournamentCallback tournamentCallback); - protected void pairNewGame(TournamentCallback tournamentCallback, String playerOne, String playerTwo) { + protected void pairNewGame(TournamentCallback tournamentCallback, String playerOne, String playerTwo, boolean allowSpectators) { _ongoingGamesCount++; _tournamentService.addMatch(_tournamentId, _currentRound, playerOne, playerTwo); - createNewGame(tournamentCallback, playerOne, playerTwo); + createNewGame(tournamentCallback, playerOne, playerTwo, allowSpectators); } protected void awardNewBye(TournamentCallback tournamentCallback, String player) { @@ -279,7 +279,7 @@ public abstract class AbstractTournament implements Tournament { String playerOne = pairings.getKey(); String playerTwo = pairings.getValue(); _ongoingGamesCount++; - createNewGame(tournamentCallback, playerOne, playerTwo); + createNewGame(tournamentCallback, playerOne, playerTwo, false); } } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SingleEliminationTournament.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SingleEliminationTournament.java index 78d0516d1..c5ee47fb6 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SingleEliminationTournament.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/SingleEliminationTournament.java @@ -29,7 +29,7 @@ public class SingleEliminationTournament extends AbstractTournament { String playerOne = playerIterator.next(); if (playerIterator.hasNext()) { String playerTwo = playerIterator.next(); - pairNewGame(tournamentCallback, playerOne, playerTwo); + pairNewGame(tournamentCallback, playerOne, playerTwo, playersRandomized.size() == 2); } else { awardNewBye(tournamentCallback, playerOne); } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentCallback.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentCallback.java index 10487c0e4..e73c63346 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentCallback.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/tournament/TournamentCallback.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.tournament; import com.gempukku.lotro.game.LotroGameParticipant; public interface TournamentCallback { - public void createGame(LotroGameParticipant playerOne, LotroGameParticipant playerTwo); + public void createGame(LotroGameParticipant playerOne, LotroGameParticipant playerTwo, boolean allowSpectators); public void broadcastMessage(String message); } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/tournament/SingleEliminationTournamentTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/tournament/SingleEliminationTournamentTest.java index 4594cb2f7..a296ce32b 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/tournament/SingleEliminationTournamentTest.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/tournament/SingleEliminationTournamentTest.java @@ -39,7 +39,7 @@ public class SingleEliminationTournamentTest { TournamentCallback tournamentCallback = Mockito.mock(TournamentCallback.class); tournament.advanceTournament(tournamentCallback); - Mockito.verify(tournamentCallback, new Times(1)).createGame(Mockito.any(), Mockito.any()); + Mockito.verify(tournamentCallback, new Times(1)).createGame(Mockito.any(), Mockito.any(), Mockito.anyBoolean()); assertTrue(tournament.isPlayerInCompetition("p1")); assertTrue(tournament.isPlayerInCompetition("p2")); @@ -78,7 +78,7 @@ public class SingleEliminationTournamentTest { ArgumentCaptor playerOne = ArgumentCaptor.forClass(LotroGameParticipant.class); ArgumentCaptor playerTwo = ArgumentCaptor.forClass(LotroGameParticipant.class); - Mockito.verify(tournamentCallback, new Times(2)).createGame(playerOne.capture(), playerTwo.capture()); + Mockito.verify(tournamentCallback, new Times(2)).createGame(playerOne.capture(), playerTwo.capture(), Mockito.anyBoolean()); List playerOnes = playerOne.getAllValues(); List playerTwos = playerTwo.getAllValues(); @@ -118,7 +118,7 @@ public class SingleEliminationTournamentTest { ArgumentCaptor playerOne2 = ArgumentCaptor.forClass(LotroGameParticipant.class); ArgumentCaptor playerTwo2 = ArgumentCaptor.forClass(LotroGameParticipant.class); - Mockito.verify(tournamentCallback, new Times(1)).createGame(playerOne2.capture(), playerTwo2.capture()); + Mockito.verify(tournamentCallback, new Times(1)).createGame(playerOne2.capture(), playerTwo2.capture(), Mockito.anyBoolean()); assertTrue(oneNames.contains("p1") || twoNames.contains("p1")); assertTrue(oneNames.contains(secondWinner) || twoNames.contains(secondWinner)); diff --git a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/ChatResource.java b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/ChatResource.java index 421d1b36b..0b704d572 100644 --- a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/ChatResource.java +++ b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/ChatResource.java @@ -39,7 +39,7 @@ public class ChatResource extends AbstractResource { if (chatRoom == null) sendError(Response.Status.NOT_FOUND); - List chatMessages = chatRoom.joinUser(resourceOwner.getName(), resourceOwner.getType().contains("a")); + List chatMessages = chatRoom.joinUser(resourceOwner.getName()); Collection usersInRoom = chatRoom.getUsersInRoom(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); @@ -73,7 +73,7 @@ public class ChatResource extends AbstractResource { } } - List chatMessages = chatRoom.getPendingMessages(resourceOwner.getName(), resourceOwner.getType().contains("a")); + List chatMessages = chatRoom.getPendingMessages(resourceOwner.getName()); Collection usersInRoom = chatRoom.getUsersInRoom();