From b0ebbc9c7752894ceb3ada0c6ca66ca0904c1317 Mon Sep 17 00:00:00 2001 From: Sebastian Lenzlinger Date: Fri, 8 Apr 2022 16:34:25 +0200 Subject: [PATCH] Extending CentralServerData to enable lobby creation and joining --- .../multiplayer/server/ClientHandler.java | 5 ++ .../dbis/cs108/multiplayer/server/Server.java | 2 + .../cs108/sebaschi/CentralServerData.java | 56 +++++++++++++++++-- 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java index 60d6ee3..a3336b8 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java @@ -3,6 +3,7 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.server; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.ServerPinger; +import ch.unibas.dmi.dbis.cs108.sebaschi.Lobby; import java.io.*; import java.net.InetAddress; import java.net.Socket; @@ -205,6 +206,10 @@ public class ClientHandler implements Runnable { disconnectClient(); } + public void createNewLobby() { + Lobby newGame = new Lobby(this); + } + /** * Closes the client's socket, in, and out. */ diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java index 012a4b7..d9c9a93 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java @@ -1,6 +1,7 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.server; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; +import ch.unibas.dmi.dbis.cs108.sebaschi.CentralServerData; import java.io.*; import java.net.ServerSocket; import java.net.Socket; @@ -12,6 +13,7 @@ import org.apache.logging.log4j.Logger; public class Server { public static final Logger LOGGER = LogManager.getLogger(); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); + private static CentralServerData allData; private static final int gamePort = 42069; private HashSet connectedClients = new HashSet<>(); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/CentralServerData.java b/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/CentralServerData.java index ed92d4c..89f59f4 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/CentralServerData.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/sebaschi/CentralServerData.java @@ -5,6 +5,10 @@ import ch.unibas.dmi.dbis.cs108.gamelogic.Game; import ch.unibas.dmi.dbis.cs108.multiplayer.client.Client; import ch.unibas.dmi.dbis.cs108.multiplayer.server.ClientHandler; import java.net.Socket; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import org.apache.logging.log4j.LogManager; @@ -21,10 +25,52 @@ public class CentralServerData { public static final BudaLogConfig l = new BudaLogConfig(LOGGER); private Set clientsOnServer; - private Set activeGames; - private Set gamesOpenToJoin; - private Map clientSocketMap; - private Map socketClientMap; - private Map gameClientMap; + private List allLobbies; + private Map lobbyIDMap; + + public CentralServerData() { + clientsOnServer = new HashSet<>(); + allLobbies = new ArrayList<>(); + lobbyIDMap = new HashMap<>(); + } + + //Getters + + /** + * Getter for set of all clients. + * @return the set of all clients. + */ + public Set getClientsOnServer() { + return clientsOnServer; + } + + /** + * Used to add the client to the set of all clients on server. + * @param client + */ + public void addClientToSetOfAllClients(ClientHandler client) { + this.getClientsOnServer().add(client); + } + + public void removeClientFromSetOfAllClients(){ + //TODO implement or make sure something equivalent is implemented somewhere else + } + + /** + * Getter for List of all lobbies. + * @return a list of all lobbies + */ + public List getAllLobbies() { + return allLobbies; + } + + /** + * Mapping from an Integer that repesents a LobbyID to the lobby + * should be set in {@link Lobby} and is then used by clients to join a lobby. + * @return a mapping from Integer to Lobby. + */ + public Map getLobbyIDMap() { + return lobbyIDMap; + } }