From b45a0df082506b16959ec0a0f2a7b79635843e1b Mon Sep 17 00:00:00 2001 From: rubenpirreram Date: Sun, 19 Apr 2026 17:56:45 +0200 Subject: [PATCH] Refactor: Network Type --- .../ingsw/gc14/Network/NetworkEvent.java | 20 +++++++++++++ .../gc14/Network/NetworkEvents/AddPlayer.java | 25 ++++++++++++++++ .../NetworkEvents/DrawLowerBuildingCard.java | 29 +++++++++++++++++++ .../NetworkEvents/DrawLowerTribeCard.java | 28 ++++++++++++++++++ .../NetworkEvents/DrawUpperBuildingCard.java | 28 ++++++++++++++++++ .../NetworkEvents/DrawUpperTribeCard.java | 28 ++++++++++++++++++ .../PickOptionalBuildingCard.java | 28 ++++++++++++++++++ .../NetworkEvents/PickOptionalTribeCard.java | 28 ++++++++++++++++++ .../Network/NetworkEvents/SlotChoice.java | 28 ++++++++++++++++++ .../Network/RMI/Client/IClientCallback.java | 2 +- .../gc14/Network/RMI/Server/IGameServer.java | 15 +++------- .../Network/RMI/Server/RMIGameController.java | 20 ++++++------- 12 files changed, 257 insertions(+), 22 deletions(-) create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvent.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/AddPlayer.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerBuildingCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerTribeCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawUpperBuildingCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawUpperTribeCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalBuildingCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalTribeCard.java create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SlotChoice.java diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvent.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvent.java new file mode 100644 index 0000000..6e0f683 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvent.java @@ -0,0 +1,20 @@ +package it.polimi.ingsw.gc14.Network; + +import it.polimi.ingsw.gc14.Controller.GameController; + +import java.io.Serializable; + +public abstract class NetworkEvent implements Serializable { + protected String username; + public String getUsername() { + return username; + } + public NetworkEvent() + { + + } + public NetworkEvent(String username) { + this.username = username; + } + public abstract boolean apply(GameController gameController); +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/AddPlayer.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/AddPlayer.java new file mode 100644 index 0000000..3032dfb --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/AddPlayer.java @@ -0,0 +1,25 @@ +package it.polimi.ingsw.gc14.Network.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class AddPlayer extends NetworkEvent implements Serializable { + private EventType eventType; + public AddPlayer(String username) { + this.username = username; + this.eventType = EventType.ADD_PLAYER; + } + @Override + public boolean apply(GameController gameController) + { + return gameController.addPlayer(username); + } + public String apply(IView gameController) + { + return gameController.toString(); + } +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerBuildingCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerBuildingCard.java new file mode 100644 index 0000000..3cfcadd --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerBuildingCard.java @@ -0,0 +1,29 @@ +package it.polimi.ingsw.gc14.Network.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class DrawLowerBuildingCard extends NetworkEvent implements Serializable{ + + 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/NetworkEvents/DrawLowerTribeCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerTribeCard.java new file mode 100644 index 0000000..0884279 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerTribeCard.java @@ -0,0 +1,28 @@ +package it.polimi.ingsw.gc14.Network.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class DrawLowerTribeCard extends NetworkEvent implements Serializable{ + 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/NetworkEvents/DrawUpperBuildingCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawUpperBuildingCard.java new file mode 100644 index 0000000..d77d759 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawUpperBuildingCard.java @@ -0,0 +1,28 @@ +package it.polimi.ingsw.gc14.Network.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class DrawUpperBuildingCard extends NetworkEvent implements Serializable{ + 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/NetworkEvents/DrawUpperTribeCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawUpperTribeCard.java new file mode 100644 index 0000000..92cc9c0 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawUpperTribeCard.java @@ -0,0 +1,28 @@ +package it.polimi.ingsw.gc14.Network.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class DrawUpperTribeCard extends NetworkEvent implements Serializable{ + 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/NetworkEvents/PickOptionalBuildingCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalBuildingCard.java new file mode 100644 index 0000000..1b3b89c --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalBuildingCard.java @@ -0,0 +1,28 @@ +package it.polimi.ingsw.gc14.Network.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class PickOptionalBuildingCard extends NetworkEvent implements Serializable{ + 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/NetworkEvents/PickOptionalTribeCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalTribeCard.java new file mode 100644 index 0000000..886db9f --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalTribeCard.java @@ -0,0 +1,28 @@ +package it.polimi.ingsw.gc14.Network.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class PickOptionalTribeCard extends NetworkEvent implements Serializable{ + 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/NetworkEvents/SlotChoice.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SlotChoice.java new file mode 100644 index 0000000..035dfdf --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SlotChoice.java @@ -0,0 +1,28 @@ +package it.polimi.ingsw.gc14.Network.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.TCP.EventType; +import it.polimi.ingsw.gc14.Network.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +public class SlotChoice extends NetworkEvent implements Serializable { + 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(); + } +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/IClientCallback.java b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/IClientCallback.java index 6b840e7..d70ddcc 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/IClientCallback.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/IClientCallback.java @@ -1,7 +1,7 @@ package it.polimi.ingsw.gc14.Network.RMI.Client; import it.polimi.ingsw.gc14.Model.Game; -import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; +import it.polimi.ingsw.gc14.Network.NetworkEvent; import java.rmi.*; diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/IGameServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/IGameServer.java index a8beffd..e966683 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/IGameServer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/IGameServer.java @@ -1,20 +1,13 @@ package it.polimi.ingsw.gc14.Network.RMI.Server; import it.polimi.ingsw.gc14.Network.RMI.Client.IClientCallback; -import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; +import it.polimi.ingsw.gc14.Network.NetworkEvent; import java.rmi.*; public interface IGameServer extends Remote { - // Connessione - String joinGame(String username, IClientCallback callback) throws RemoteException; - // Azioni di gioco — specchio dei tuoi metodi GameController - boolean drawUpperTribeCard(String playerUsername, int pos) throws RemoteException; - boolean drawLowerTribeCard(String playerUsername, int pos) throws RemoteException; - boolean drawUpperBuildingCard(String playerUsername, int pos) throws RemoteException; - boolean drawLowerBuildingCard(String playerUsername, int pos) throws RemoteException; - boolean pickOptionalTribeCard(String playerUsername, int pos) throws RemoteException; - boolean pickOptionalBuildingCard(String playerUsername, int pos) throws RemoteException; - boolean slotChoice(String playerUsername, int pos) throws RemoteException; + String joinGame(String username, IClientCallback callback) throws RemoteException; + boolean doEvent(NetworkEvent event) throws RemoteException; + } diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIGameController.java b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIGameController.java index 3ad851e..b32bc2f 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIGameController.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIGameController.java @@ -2,7 +2,8 @@ package it.polimi.ingsw.gc14.Network.RMI.Server; import it.polimi.ingsw.gc14.Controller.GameController; import it.polimi.ingsw.gc14.Network.RMI.Client.IClientCallback; -import it.polimi.ingsw.gc14.Network.TCP.NetworkEvent; +import it.polimi.ingsw.gc14.Network.NetworkEvent; +import it.polimi.ingsw.gc14.Network.NetworkEvents.DrawUpperBuildingCard; import java.rmi.*; import java.util.concurrent.ConcurrentHashMap; @@ -10,7 +11,7 @@ import java.util.*; public class RMIGameController implements IGameServer { - private final GameController controller; // delega tutto qui + private final GameController controller; private final Map clients = new ConcurrentHashMap<>(); public RMIGameController(GameController controller) { @@ -27,19 +28,17 @@ public class RMIGameController implements IGameServer { @Override - public boolean drawUpperTribeCard(String username, int pos) throws RemoteException { - boolean result = controller.drawUpperTribeCard(username, pos); + public void doEvent(NetworkEvent event) throws RemoteException { + boolean result = event.apply(controller); if (!result) { - notifyError(username, "Mossa non valida"); + notifyError("","Mossa non valida"); } else { - notifyAll(new NetworkEvent(Action.ActionType.DRAW_UPPER_TRIBE, username, pos)); + notifyAll(new DrawUpperBuildingCard(username, pos)); } return result; } - - - private void notifyAll(Action action) throws RemoteException { + private void notifyAll(NetworkEvent action) throws RemoteException { for (IClientCallback cb : clients.values()) { cb.onAction(action); } @@ -48,4 +47,5 @@ public class RMIGameController implements IGameServer { private void notifyError(String username, String message) throws RemoteException { IClientCallback cb = clients.get(username); if (cb != null) cb.onError(message); - } \ No newline at end of file + } +} \ No newline at end of file