summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control/network/NetworkControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/control/network/NetworkControl.java')
-rw-r--r--src/jrummikub/control/network/NetworkControl.java37
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