diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/GameEvent.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameEvent.java similarity index 94% rename from gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/GameEvent.java rename to gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameEvent.java index cfc491b05..539c6612e 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/GameEvent.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameEvent.java @@ -1,9 +1,10 @@ -package com.gempukku.lotro.game; +package com.gempukku.lotro.game.state; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Token; import com.gempukku.lotro.common.Zone; +import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.logic.timing.GameStats; import java.util.List; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java index 5e91782e4..695698518 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java @@ -40,6 +40,7 @@ public class GameState { private List _assignments = new LinkedList(); private Skirmish _skirmish = null; + private Map _recordinglisteners = new HashMap(); private Map _gameStateListeners = new HashMap(); private int _nextCardId = 0; @@ -63,6 +64,9 @@ public class GameState { addPlayerCards(stringListEntry.getKey(), stringListEntry.getValue(), library); } + for (String playerId : playerOrder.getAllPlayers()) + _recordinglisteners.put(playerId, new GatheringParticipantCommunicationChannel(playerId)); + for (String playerId : _gameStateListeners.keySet()) sendStateToPlayer(playerId); } @@ -114,15 +118,19 @@ public class GameState { private Collection getPrivateGameStateListeners(PhysicalCard physicalCard) { String owner = physicalCard.getOwner(); + Set listeners = new HashSet(); GameStateListener result = _gameStateListeners.get(owner); if (result != null) - return Collections.singleton(result); - else - return Collections.emptyList(); + listeners.add(result); + + listeners.add(_recordinglisteners.get(owner)); + return listeners; } private Collection getAllGameStateListeners() { - return _gameStateListeners.values(); + Set allListeners = new HashSet(_gameStateListeners.values()); + allListeners.addAll(_recordinglisteners.values()); + return allListeners; } private void sendStateToPlayer(String playerId) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/GatheringParticipantCommunicationChannel.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java similarity index 94% rename from gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/GatheringParticipantCommunicationChannel.java rename to gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java index c6af53201..c8471673a 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/GatheringParticipantCommunicationChannel.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java @@ -1,8 +1,9 @@ -package com.gempukku.lotro.game; +package com.gempukku.lotro.game.state; import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Token; import com.gempukku.lotro.communication.GameStateListener; +import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.logic.timing.GameStats; import java.util.Collection; @@ -10,7 +11,7 @@ import java.util.Date; import java.util.LinkedList; import java.util.List; -import static com.gempukku.lotro.game.GameEvent.Type.*; +import static com.gempukku.lotro.game.state.GameEvent.Type.*; public class GatheringParticipantCommunicationChannel implements GameStateListener { private List _events = new LinkedList(); 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 a6e795db5..48ac9c7bc 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 @@ -2,6 +2,8 @@ package com.gempukku.lotro.game; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.game.state.GameEvent; +import com.gempukku.lotro.game.state.GatheringParticipantCommunicationChannel; import com.gempukku.lotro.logic.decisions.AwaitingDecision; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import com.gempukku.lotro.logic.modifiers.Modifier; diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ParticipantCommunicationVisitor.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ParticipantCommunicationVisitor.java index 4bb3d9ec6..31d5ad42d 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ParticipantCommunicationVisitor.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ParticipantCommunicationVisitor.java @@ -1,5 +1,6 @@ package com.gempukku.lotro.game; +import com.gempukku.lotro.game.state.GameEvent; import com.gempukku.lotro.logic.decisions.AwaitingDecision; import java.util.Map; diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java index eba7074c9..4721f4048 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java @@ -12,6 +12,7 @@ import com.gempukku.lotro.db.PlayerDAO; import com.gempukku.lotro.db.vo.League; import com.gempukku.lotro.db.vo.Player; import com.gempukku.lotro.game.*; +import com.gempukku.lotro.game.state.GameEvent; import com.gempukku.lotro.hall.HallException; import com.gempukku.lotro.hall.HallInfoVisitor; import com.gempukku.lotro.hall.HallServer;