diff options
Diffstat (limited to 'src/jrummikub/control/network/NetworkControl.java')
-rw-r--r-- | src/jrummikub/control/network/NetworkControl.java | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/jrummikub/control/network/NetworkControl.java b/src/jrummikub/control/network/NetworkControl.java index ce7714b..013c866 100644 --- a/src/jrummikub/control/network/NetworkControl.java +++ b/src/jrummikub/control/network/NetworkControl.java @@ -1,7 +1,9 @@ package jrummikub.control.network; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.UUID; import jrummikub.util.Connection; @@ -20,6 +22,8 @@ public class NetworkControl { private List<Connection> connections = new ArrayList<Connection>(); private Event stopNetworkEvent = new Event(); + private Map<UUID, GameData> gameMap = new HashMap<UUID, GameData>(); + public NetworkControl(final LoginData loginData, final IView view) { this.view = view; connectionControl = new ConnectionControl(loginData); @@ -33,7 +37,8 @@ public class NetworkControl { GameData testData = new GameData(UUID.randomUUID(), "NeoRaider"); testData.setCurrentPlayerCount(2); testData.setMaxPlayerCount(4); - view.getGameListPanel().addGame(testData); + + connectionControl.offerGame(testData); } })); @@ -46,6 +51,36 @@ public class NetworkControl { } })); + connections.add(connectionControl.getGameOfferEvent().add( + new IListener1<IGameListPanel.GameData>() { + @Override + public void handle(GameData value) { + GameData game = gameMap.get(value.getGameID()); + + if (game == null) { + game = value; + gameMap.put(value.getGameID(), value); + } else { + game.setCurrentPlayerCount(value.getCurrentPlayerCount()); + game.setMaxPlayerCount(value.getMaxPlayerCount()); + } + + view.getGameListPanel().addGame(game); + } + })); + connections.add(connectionControl.getGameWithdrawalEvent().add( + new IListener1<UUID>() { + @Override + public void handle(UUID value) { + GameData game = gameMap.get(value); + + if (game != null) { + view.getGameListPanel().removeGame(game); + gameMap.remove(value); + } + } + })); + connections.add(view.getGameListPanel().getJoinEvent() .add(new IListener1<IGameListPanel.GameData>() { @Override |