From 9f8413fdc211377099857d61d9908f68c66e370f Mon Sep 17 00:00:00 2001 From: GabrieleRadice <265572328+GabrieleRadice@users.noreply.github.com> Date: Sat, 18 Apr 2026 18:11:48 +0200 Subject: [PATCH 1/5] Add: Partial Implementation Of TCPServer.java. --- .../gc14/Network/Server/TCP/TCPServer.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/Server/TCP/TCPServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/Server/TCP/TCPServer.java index 4403d84..a2e6e80 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/Server/TCP/TCPServer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/Server/TCP/TCPServer.java @@ -9,11 +9,16 @@ import java.util.List; public class TCPServer { int port = -1; + int ConnectedPlayers = 0; ServerSocket serverTCP = null; GameController gameController; private List clientHandlers; + private int getConnectedPlayers(){ + return ConnectedPlayers; + } + public void start(String args[]){ clientHandlers = new ArrayList<>(); @@ -25,19 +30,26 @@ public class TCPServer { e.printStackTrace(); return; } - System.out.println("Listening on port " + port); + System.out.println("Listening on port: " + port); while(true){ Socket clientSocket = null; - try { + try{ clientSocket = serverTCP.accept(); - } catch (IOException e) { + if(!gameController.addPlayer(clientSocket.getInputStream().toString()) || ConnectedPlayers >= clientHandlers.size()){ + clientSocket.close(); + System.out.println("Player already present or username is invalid. Connection terminated.\n"); + } + } + catch (IOException e){ e.printStackTrace(); } + System.out.println("Accepted"); - ClientHandler clientHandler = new ClientHandler(clientSocket, clientHandlers, this.gameController); + ConnectedPlayers++; + ClientHandler clientHandler = new ClientHandler(clientSocket, clientHandlers, gameController); clientHandlers.add(clientHandler); Thread t = new Thread(clientHandler); t.start(); From c1e9602b35b174f9d244437fcdd886158fcc67d1 Mon Sep 17 00:00:00 2001 From: GabrieleRadice <265572328+GabrieleRadice@users.noreply.github.com> Date: Sat, 18 Apr 2026 19:17:55 +0200 Subject: [PATCH 2/5] Add: Added Partial Logic For Client Connection Handling And Termination In TCPServer.java. --- .../Network/TCP/Server/ClientHandler.java | 25 ++++++++++++------- .../gc14/Network/TCP/Server/TCPServer.java | 11 +++++--- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java index a599d19..7000c31 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java @@ -12,37 +12,44 @@ public class ClientHandler implements Runnable { PrintWriter out = null; List clientHandlers; GameController gameController; + public ClientHandler(Socket clientSocket, List clientHandlers, GameController gameController) { this.clientSocket = clientSocket; this.clientHandlers = clientHandlers; this.gameController = gameController; } + @Override - public void run() { + public void run(){ clientLoop(); } - private void clientLoop() { - try { + + private void clientLoop(){ + try{ in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); - synchronized (out) { + synchronized(out){ out = new PrintWriter(clientSocket.getOutputStream(), true); } - } catch (IOException e) { + } + catch(IOException e){ e.printStackTrace(); } String s = ""; try{ while ((s = in.readLine()) != null) { - System.out.println(s); - out.println(s.toUpperCase()); + synchronized(out){ + System.out.println(s); + out.println(s.toUpperCase()); + } } } catch (IOException e) { e.printStackTrace(); } } - private void notifyEvent(Object event) { - synchronized (out) { + + public void notifyEvent(Object event) { + synchronized(out){ out.println(event.toString()); } } diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java index 8a4fe3b..7cafb9e 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java @@ -37,16 +37,15 @@ public class TCPServer { try{ clientSocket = serverTCP.accept(); - if(!gameController.addPlayer(clientSocket.getInputStream().toString()) || ConnectedPlayers >= clientHandlers.size()){ + if(!gameController.addPlayer(clientSocket.getInputStream().toString()) || ConnectedPlayers > gameController.getModel().getNPlayers()){ clientSocket.close(); - System.out.println("Player already present or username is invalid. Connection terminated.\n"); + System.out.println("Invalid parameters. Connection terminated.\n"); } } catch (IOException e){ e.printStackTrace(); } - System.out.println("Accepted"); ConnectedPlayers++; ClientHandler clientHandler = new ClientHandler(clientSocket, clientHandlers, gameController); @@ -56,8 +55,12 @@ public class TCPServer { } } - private TCPServer(GameController gameController, int port) { + private TCPServer(GameController gameController, int port){ this.port = port; this.gameController = gameController; } + + public void broadcastUpdate(Object event){ + clientHandlers.forEach((x) -> x.notifyEvent(event)); + } } From 4b732139ea62d7056fb7d5c6ae2d455542296dd5 Mon Sep 17 00:00:00 2001 From: GabrieleRadice <265572328+GabrieleRadice@users.noreply.github.com> Date: Sun, 19 Apr 2026 16:07:05 +0200 Subject: [PATCH 3/5] Add: Added Partial Logic For Client-Server Serialized Message Handling. --- .../java/it/polimi/ingsw/gc14/Model/Game.java | 3 +- .../Network/TCP/Server/ClientHandler.java | 32 ++++++++++--------- .../gc14/Network/TCP/Server/TCPServer.java | 23 +++++++++++-- 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java index 4091090..98507e0 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java @@ -14,10 +14,11 @@ import it.polimi.ingsw.gc14.Model.Orders.Order4; import it.polimi.ingsw.gc14.Model.Orders.Order5; import it.polimi.ingsw.gc14.Model.GamePackage.GameStages; +import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; -public class Game { +public class Game implements Serializable { private ArrayList playersList; private CurrentState currentState; diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java index 7000c31..6ac06de 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java @@ -8,11 +8,15 @@ import java.util.List; public class ClientHandler implements Runnable { private Socket clientSocket; - BufferedReader in = null; - PrintWriter out = null; + public ObjectInputStream in = null; + public ObjectOutputStream out = null; List clientHandlers; GameController gameController; + public Socket getClientSocket() { + return clientSocket; + } + public ClientHandler(Socket clientSocket, List clientHandlers, GameController gameController) { this.clientSocket = clientSocket; this.clientHandlers = clientHandlers; @@ -25,21 +29,11 @@ public class ClientHandler implements Runnable { } private void clientLoop(){ - try{ - in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); - synchronized(out){ - out = new PrintWriter(clientSocket.getOutputStream(), true); - } - } - catch(IOException e){ - e.printStackTrace(); - } String s = ""; try{ while ((s = in.readLine()) != null) { synchronized(out){ - System.out.println(s); - out.println(s.toUpperCase()); + //do something } } } @@ -48,9 +42,17 @@ public class ClientHandler implements Runnable { } } - public void notifyEvent(Object event) { + public void notifyEvent(Object event){ synchronized(out){ - out.println(event.toString()); + try{ + out = new ObjectOutputStream(clientSocket.getOutputStream()); + out.writeObject(gameController.getModel()); + } + catch(IOException e){ + e.printStackTrace(); + } } } } + + diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java index 7cafb9e..0614f7b 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java @@ -2,7 +2,7 @@ package it.polimi.ingsw.gc14.Network.TCP.Server; import it.polimi.ingsw.gc14.Controller.GameController; -import java.io.IOException; +import java.io.*; import java.net.*; import java.util.ArrayList; import java.util.List; @@ -15,6 +15,8 @@ public class TCPServer { private List clientHandlers; + + private int getConnectedPlayers(){ return ConnectedPlayers; } @@ -46,10 +48,27 @@ public class TCPServer { e.printStackTrace(); } - System.out.println("Accepted"); + System.out.println("Accepted player: " + gameController.getModel().getPlayerByUsername(clientSocket.getInetAddress().toString())); + ConnectedPlayers++; ClientHandler clientHandler = new ClientHandler(clientSocket, clientHandlers, gameController); clientHandlers.add(clientHandler); + + //Sending model to clients + if(ConnectedPlayers == gameController.getModel().getNPlayers()){ + for (ClientHandler handler : clientHandlers) { + try { + synchronized(handler.out){ + ObjectOutputStream socketTx = new ObjectOutputStream(handler.getClientSocket().getOutputStream()); + socketTx.writeObject(gameController.getModel()); + } + } + catch(IOException e){ + e.printStackTrace(); + } + } + } + Thread t = new Thread(clientHandler); t.start(); } From d14c97c1d4308f252a5d1a4d187bfeefba05865b Mon Sep 17 00:00:00 2001 From: GabrieleRadice <265572328+GabrieleRadice@users.noreply.github.com> Date: Sun, 19 Apr 2026 16:40:25 +0200 Subject: [PATCH 4/5] Add: Finished Implementation For TCP Server. --- .../Network/TCP/Server/ClientHandler.java | 28 +++++++++++++++---- .../gc14/Network/TCP/Server/TCPServer.java | 4 ++- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java index 6ac06de..1a3b94f 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/ClientHandler.java @@ -1,6 +1,8 @@ package it.polimi.ingsw.gc14.Network.TCP.Server; import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; import java.io.*; import java.net.*; @@ -8,10 +10,12 @@ import java.util.List; public class ClientHandler implements Runnable { private Socket clientSocket; + private TCPServer server; public ObjectInputStream in = null; public ObjectOutputStream out = null; List clientHandlers; GameController gameController; + private EventType eventType; public Socket getClientSocket() { return clientSocket; @@ -29,12 +33,26 @@ public class ClientHandler implements Runnable { } private void clientLoop(){ - String s = ""; try{ - while ((s = in.readLine()) != null) { - synchronized(out){ - //do something + NetworkEvent input = null; + synchronized(in){ + in = new ObjectInputStream(clientSocket.getInputStream()); + } + while(true){ + try{ + input = (NetworkEvent)(in.readObject()); + if(input.apply(gameController)){ + server.broadcastUpdate(input); + } } + catch(java.io.IOException e){ + e.printStackTrace(); + } + catch (ClassNotFoundException e){ + throw new RuntimeException(e); + } + + } } catch (IOException e) { @@ -42,7 +60,7 @@ public class ClientHandler implements Runnable { } } - public void notifyEvent(Object event){ + public void notifyEvent(NetworkEvent event){ synchronized(out){ try{ out = new ObjectOutputStream(clientSocket.getOutputStream()); diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java index 0614f7b..38fafe1 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java @@ -1,6 +1,7 @@ package it.polimi.ingsw.gc14.Network.TCP.Server; import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; import java.io.*; import java.net.*; @@ -43,6 +44,7 @@ public class TCPServer { clientSocket.close(); System.out.println("Invalid parameters. Connection terminated.\n"); } + // gestione di ADD_PLAYER } catch (IOException e){ e.printStackTrace(); @@ -79,7 +81,7 @@ public class TCPServer { this.gameController = gameController; } - public void broadcastUpdate(Object event){ + public void broadcastUpdate(NetworkEvent event){ clientHandlers.forEach((x) -> x.notifyEvent(event)); } } From 47ef913a432ce8e5b4ee16dd701026d8d4ac529c Mon Sep 17 00:00:00 2001 From: GabrieleRadice <265572328+GabrieleRadice@users.noreply.github.com> Date: Sun, 19 Apr 2026 16:57:51 +0200 Subject: [PATCH 5/5] Add: Added Event Methods For Client-Server Event Execution. --- .../NetworkEvents/DrawLowerBuildingCard.java | 29 +++++++++++++++++++ .../TCP/NetworkEvents/DrawLowerTribeCard.java | 29 +++++++++++++++++++ .../NetworkEvents/DrawUpperBuildingCard.java | 29 +++++++++++++++++++ .../TCP/NetworkEvents/DrawUpperTribeCard.java | 29 +++++++++++++++++++ .../PickOptionalBuildingCard.java | 29 +++++++++++++++++++ .../NetworkEvents/PickOptionalTribeCard.java | 29 +++++++++++++++++++ .../Network/TCP/NetworkEvents/SlotChoice.java | 29 +++++++++++++++++++ 7 files changed, 203 insertions(+) create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawLowerBuildingCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawLowerTribeCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawUpperBuildingCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawUpperTribeCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/PickOptionalBuildingCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/PickOptionalTribeCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/SlotChoice.java diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawLowerBuildingCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawLowerBuildingCard.java new file mode 100644 index 0000000..8e7fc80 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawLowerBuildingCard.java @@ -0,0 +1,29 @@ +package it.polimi.ingsw.gc14.Network.TCP.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class DrawLowerBuildingCard extends NetworkEvent implements Serializable{ + private String username; + private EventType eventType; + private int pos; + + public DrawLowerBuildingCard(String username, int pos){ + this.username = username; + this.eventType = EventType.DRAW_LOWER_BUILD; + this.pos = pos; + } + + @Override + public boolean apply(GameController gameController){ + return gameController.drawLowerBuildingCard(username, pos); + } + + public String apply(IView gameController){ + return gameController.toString(); + } +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawLowerTribeCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawLowerTribeCard.java new file mode 100644 index 0000000..17848d1 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawLowerTribeCard.java @@ -0,0 +1,29 @@ +package it.polimi.ingsw.gc14.Network.TCP.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class DrawLowerTribeCard extends NetworkEvent implements Serializable{ + private String username; + private EventType eventType; + private int pos; + + public DrawLowerTribeCard(String username, int pos){ + this.username = username; + this.eventType = EventType.DRAW_LOWER_TRIBE; + this.pos = pos; + } + + @Override + public boolean apply(GameController gameController){ + return gameController.drawLowerTribeCard(username, pos); + } + + public String apply(IView gameController){ + return gameController.toString(); + } +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawUpperBuildingCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawUpperBuildingCard.java new file mode 100644 index 0000000..a39bbb1 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawUpperBuildingCard.java @@ -0,0 +1,29 @@ +package it.polimi.ingsw.gc14.Network.TCP.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class DrawUpperBuildingCard extends NetworkEvent implements Serializable{ + private String username; + private EventType eventType; + private int pos; + + public DrawUpperBuildingCard(String username, int pos){ + this.username = username; + this.eventType = EventType.DRAW_UPPER_BUILD; + this.pos = pos; + } + + @Override + public boolean apply(GameController gameController){ + return gameController.drawUpperBuildingCard(username, pos); + } + + public String apply(IView gameController){ + return gameController.toString(); + } +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawUpperTribeCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawUpperTribeCard.java new file mode 100644 index 0000000..6f261ed --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/DrawUpperTribeCard.java @@ -0,0 +1,29 @@ +package it.polimi.ingsw.gc14.Network.TCP.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class DrawUpperTribeCard extends NetworkEvent implements Serializable{ + private String username; + private EventType eventType; + private int pos; + + public DrawUpperTribeCard(String username, int pos){ + this.username = username; + this.eventType = EventType.DRAW_UPPER_TRIBE; + this.pos = pos; + } + + @Override + public boolean apply(GameController gameController){ + return gameController.drawUpperTribeCard(username, pos); + } + + public String apply(IView gameController){ + return gameController.toString(); + } +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/PickOptionalBuildingCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/PickOptionalBuildingCard.java new file mode 100644 index 0000000..1946be3 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/PickOptionalBuildingCard.java @@ -0,0 +1,29 @@ +package it.polimi.ingsw.gc14.Network.TCP.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class PickOptionalBuildingCard extends NetworkEvent implements Serializable{ + private String username; + private EventType eventType; + private int pos; + + public PickOptionalBuildingCard(String username, int pos){ + this.username = username; + this.eventType = EventType.PICK_OPTIONAL_BUILD; + this.pos = pos; + } + + @Override + public boolean apply(GameController gameController){ + return gameController.pickOptionalBuildingCard(username, pos); + } + + public String apply(IView gameController){ + return gameController.toString(); + } +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/PickOptionalTribeCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/PickOptionalTribeCard.java new file mode 100644 index 0000000..5620976 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/PickOptionalTribeCard.java @@ -0,0 +1,29 @@ +package it.polimi.ingsw.gc14.Network.TCP.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class PickOptionalTribeCard extends NetworkEvent implements Serializable{ + private String username; + private EventType eventType; + private int pos; + + public PickOptionalTribeCard(String username, int pos){ + this.username = username; + this.eventType = EventType.PICK_OPTIONAL_TRIBE; + this.pos = pos; + } + + @Override + public boolean apply(GameController gameController){ + return gameController.pickOptionalTribeCard(username, pos); + } + + public String apply(IView gameController){ + return gameController.toString(); + } +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/SlotChoice.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/SlotChoice.java new file mode 100644 index 0000000..2c6caa1 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/NetworkEvents/SlotChoice.java @@ -0,0 +1,29 @@ +package it.polimi.ingsw.gc14.Network.TCP.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class SlotChoice extends NetworkEvent implements Serializable{ + private String username; + private EventType eventType; + private int pos; + + public SlotChoice(String username, int pos){ + this.username = username; + this.eventType = EventType.SLOT_CHOICE; + this.pos = pos; + } + + @Override + public boolean apply(GameController gameController){ + return gameController.slotChoice(username, pos); + } + + public String apply(IView gameController){ + return gameController.toString(); + } +}