From 505820d34367cd8d7ec98e6d76cd72bdb2f2844e Mon Sep 17 00:00:00 2001 From: rubenpirreram Date: Fri, 1 May 2026 16:34:54 +0200 Subject: [PATCH] Add:No Optional Card --- .../polimi/ingsw/gc14/ClientLauncherTUI.java | 29 +++++++++++++------ .../gc14/Controller/ClientController.java | 10 +++++++ .../ingsw/gc14/Controller/GameController.java | 12 ++++++++ .../polimi/ingsw/gc14/Network/EventType.java | 3 +- .../gc14/Network/NetworkEvents/AddPlayer.java | 4 --- .../NetworkEvents/DrawLowerBuildingCard.java | 4 --- .../NetworkEvents/DrawLowerTribeCard.java | 4 --- .../NetworkEvents/DrawUpperBuildingCard.java | 4 --- .../NetworkEvents/DrawUpperTribeCard.java | 5 +--- .../Network/NetworkEvents/NoOptionalCard.java | 22 ++++++++++++++ .../PickOptionalBuildingCard.java | 5 ---- .../NetworkEvents/PickOptionalTribeCard.java | 4 --- .../Network/NetworkEvents/SlotChoice.java | 4 --- .../ingsw/gc14/View/TUI/AsciiTable.java | 1 - 14 files changed, 67 insertions(+), 44 deletions(-) create mode 100644 src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/NoOptionalCard.java diff --git a/src/main/java/it/polimi/ingsw/gc14/ClientLauncherTUI.java b/src/main/java/it/polimi/ingsw/gc14/ClientLauncherTUI.java index 5e02464..aa30aaf 100644 --- a/src/main/java/it/polimi/ingsw/gc14/ClientLauncherTUI.java +++ b/src/main/java/it/polimi/ingsw/gc14/ClientLauncherTUI.java @@ -68,16 +68,27 @@ public class ClientLauncherTUI { private void getInput(Scanner scanner, ClientController controller, String username) { - int action = scanner.nextInt(); - int pos = scanner.nextInt(); - + String action = scanner.next(); + int pos=-1; + if(!action.equals("8")) { + try + { + pos = scanner.nextInt(); + } + catch(Exception e) + { + System.out.println("ERROR: Invalid input(expected number)"); + } + } switch(action) { - case 1 -> controller.drawLowerBuildingCard(username, pos); - case 2 -> controller.drawLowerTribeCard(username, pos); - case 3 -> controller.drawUpperBuildingCard(username, pos); - case 4 -> controller.drawUpperTribeCard(username, pos); - case 5 -> controller.pickOptionalBuildingCard(username, pos); - case 6 -> controller.slotChoice(username, pos); + case "1" -> controller.slotChoice(username, pos); + case "2" -> controller.drawUpperBuildingCard(username, pos); + case "3" -> controller.drawUpperTribeCard(username, pos); + case "4" -> controller.drawLowerBuildingCard(username, pos); + case "5" -> controller.drawLowerTribeCard(username, pos); + case "6" -> controller.pickOptionalTribeCard(username, pos); + case "7" -> controller.pickOptionalBuildingCard(username, pos); + case "8" -> controller.noOptionalCard(username); } return; diff --git a/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java b/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java index 63da09f..1b96cd4 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java +++ b/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java @@ -104,6 +104,16 @@ public class ClientController { client.doEvent(new PickOptionalBuildingCard(playerUsername,pos)); } + /** + * Refuse to pick an optional building card for the specified player. + * @param playerUsername the username of the player performing the action. + * @return {@code true} if the action succeeds, {@code false} if the player does not exist + * or if the pick operation fails. + */ + public void noOptionalCard(String playerUsername) { + client.doEvent(new NoOptionalCard(playerUsername)); + } + /** * Attempts to perform the slot choice action for the specified player at the specified position. * diff --git a/src/main/java/it/polimi/ingsw/gc14/Controller/GameController.java b/src/main/java/it/polimi/ingsw/gc14/Controller/GameController.java index ca65067..dd6b120 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Controller/GameController.java +++ b/src/main/java/it/polimi/ingsw/gc14/Controller/GameController.java @@ -147,6 +147,18 @@ public class GameController { return false; return model.PickOptionalBuildingCard(model.getPlayerByUsername(playerUsername), pos); } + /** + * Refuse to pick an optional building card for the specified player. + * @param playerUsername the username of the player performing the action. + * @return {@code true} if the action succeeds, {@code false} if the player does not exist + * or if the pick operation fails. + */ + public boolean noOptionalCard(String playerUsername) { + Player player= model.getPlayerByUsername(playerUsername); + if(player==null) + return false; + return model.NoOptionalCard(model.getPlayerByUsername(playerUsername)); + } /** * Attempts to perform the slot choice action for the specified player at the specified position. diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/EventType.java b/src/main/java/it/polimi/ingsw/gc14/Network/EventType.java index aae15bf..0f8f03c 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/EventType.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/EventType.java @@ -8,5 +8,6 @@ public enum EventType { DRAW_UPPER_BUILD, DRAW_LOWER_BUILD, PICK_OPTIONAL_TRIBE, - PICK_OPTIONAL_BUILD + PICK_OPTIONAL_BUILD, + NO_OPTIONAL_CARD } 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 index 54b633a..14acd88 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/AddPlayer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/AddPlayer.java @@ -29,8 +29,4 @@ public class AddPlayer extends NetworkEvent implements Serializable { { 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 index a160629..91b67af 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerBuildingCard.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerBuildingCard.java @@ -24,8 +24,4 @@ public class DrawLowerBuildingCard extends NetworkEvent implements Serializable return gameController.drawLowerBuildingCard(username, pos); } - //TODO javadoc - 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 index f0109c8..0dda4d1 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerTribeCard.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawLowerTribeCard.java @@ -23,8 +23,4 @@ public class DrawLowerTribeCard extends NetworkEvent implements Serializable{ return gameController.drawLowerTribeCard(username, pos); } - //TODO javadoc - 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 index 56be872..077bc74 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawUpperBuildingCard.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawUpperBuildingCard.java @@ -24,8 +24,4 @@ public class DrawUpperBuildingCard extends NetworkEvent implements Serializable return gameController.drawUpperBuildingCard(username, pos); } - //TODO javadoc - 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 index 4cdbc7e..8fcb004 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawUpperTribeCard.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/DrawUpperTribeCard.java @@ -24,8 +24,5 @@ public class DrawUpperTribeCard extends NetworkEvent implements Serializable{ return gameController.drawUpperTribeCard(username, pos); } - //TODO javadoc - public String apply(IView gameController){ - return gameController.toString(); - } + } diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/NoOptionalCard.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/NoOptionalCard.java new file mode 100644 index 0000000..9791962 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/NoOptionalCard.java @@ -0,0 +1,22 @@ +package it.polimi.ingsw.gc14.Network.NetworkEvents; + +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Network.EventType; +import it.polimi.ingsw.gc14.Network.NetworkEvent; +import it.polimi.ingsw.gc14.View.IView; + +import java.io.Serializable; + +//TODO javadoc +public class NoOptionalCard extends NetworkEvent implements Serializable{ + //TODO javadoc + public NoOptionalCard(String username){ + super(username, EventType.NO_OPTIONAL_CARD, false); + } + + //TODO javadoc + @Override + public boolean apply(GameController gameController){ + return gameController.noOptionalCard(username); + } +} 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 index 1996398..1704082 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalBuildingCard.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalBuildingCard.java @@ -23,9 +23,4 @@ public class PickOptionalBuildingCard extends NetworkEvent implements Serializa public boolean apply(GameController gameController){ return gameController.pickOptionalBuildingCard(username, pos); } - - //TODO javadoc - 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 index 0ad9def..0262b7f 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalTribeCard.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalTribeCard.java @@ -25,8 +25,4 @@ public class PickOptionalTribeCard extends NetworkEvent implements Serializable return gameController.pickOptionalTribeCard(username, pos); } - //TODO javadoc - 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 index e22e491..189e3ab 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SlotChoice.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SlotChoice.java @@ -24,8 +24,4 @@ public class SlotChoice extends NetworkEvent implements Serializable { return gameController.slotChoice(username, pos); } - //TODO javadoc - public String apply(IView gameController) { - return gameController.toString(); - } } diff --git a/src/main/java/it/polimi/ingsw/gc14/View/TUI/AsciiTable.java b/src/main/java/it/polimi/ingsw/gc14/View/TUI/AsciiTable.java index 74cf535..26ccb31 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/TUI/AsciiTable.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/TUI/AsciiTable.java @@ -29,7 +29,6 @@ public class AsciiTable { //TODO javadoc public void addHeader(String... cells) { rows.add(0, Arrays.asList(cells)); separators.add(0); } - public void addSeparator() { separators.add(rows.size()-1); } //TODO javadoc public void addSeparator() { separators.add(rows.size()-1); }