diff --git a/src/main/java/it/polimi/ingsw/gc14/ClientLauncherTUI.java b/src/main/java/it/polimi/ingsw/gc14/ClientLauncherTUI.java index f9e17b7..abdefc3 100644 --- a/src/main/java/it/polimi/ingsw/gc14/ClientLauncherTUI.java +++ b/src/main/java/it/polimi/ingsw/gc14/ClientLauncherTUI.java @@ -38,7 +38,6 @@ public class ClientLauncherTUI { */ public void main() throws InterruptedException { view = new TUI(null); - admissibleChar.add("0"); admissibleChar.add("1"); admissibleChar.add("2"); admissibleChar.add("3"); @@ -46,8 +45,6 @@ public class ClientLauncherTUI { admissibleChar.add("5"); admissibleChar.add("6"); admissibleChar.add("7"); - admissibleChar.add("8"); - admissibleChar.add("9"); admissibleChar.add("A"); admissibleChar.add("B"); admissibleChar.add("C"); @@ -138,7 +135,7 @@ public class ClientLauncherTUI { if(admissibleChar.contains(action)) { - if (!action.equals("7") && !action.equals("8")&& !action.equals("A") && !action.equals("B") && !action.equals("C")&&!action.equals("a") && !action.equals("b") && !action.equals("c")) { + if (!action.equals("6") && !action.equals("A") && !action.equals("B") && !action.equals("C")&&!action.equals("a") && !action.equals("b") && !action.equals("c")) { try { System.out.println("Insert the required position:"); pos = scanner.nextInt(); @@ -148,16 +145,13 @@ public class ClientLauncherTUI { } } switch (action) { - case "0" -> controller.slotChoice(username, pos); - case "1" -> controller.drawUpperTribeCard(username, pos); - case "2" -> controller.drawUpperBuildingCard(username, pos); - case "3" -> controller.drawLowerTribeCard(username, pos); - case "4" -> controller.drawLowerBuildingCard(username, pos); - case "5" -> controller.pickOptionalTribeCard(username, pos); - case "6" -> controller.pickOptionalBuildingCard(username, pos); - case "7" -> controller.noOptionalCard(username); - case "8" -> controller.skipTurn(username); - case "9" -> controller.totemChoice(username,pos); + case "1" -> controller.slotChoice(username, pos); + case "2" -> controller.drawUpperTribeCard(username, pos); + case "3" -> controller.drawUpperBuildingCard(username, pos); + case "4" -> controller.drawLowerTribeCard(username, pos); + case "5" -> controller.drawLowerBuildingCard(username, pos); + case "6" -> controller.skipTurn(username); + case "7" -> controller.totemChoice(username,pos); case "A", "a" -> view.fullRender(); case "B", "b" -> view.renderBoard(); case "C", "c" -> view.renderPlayer(); 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 3d3b26b..70cc100 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java +++ b/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java @@ -157,52 +157,6 @@ public class ClientController { } - - - /** - * Used to draw a tribe card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - * @param pos the index of the card to draw - */ - public void pickOptionalTribeCard(String playerUsername,int pos) { - if(!Objects.equals(playerUsername,miniModel.currentState.getCurrentPlayer().getUserName())) - view.showError("It's not your turn!"); - else { - client.pickOptionalTribeCard(playerUsername,pos); - } - } - - - /** - * Used to draw a building card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - * @param pos the index of the card to draw - */ - public void pickOptionalBuildingCard(String playerUsername,int pos) { - if(!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName())) - view.showError("It's not your turn!"); - else { - client.pickOptionalBuildingCard(playerUsername,pos); - } - } - - - /** - * Used to skip the action of drawing a card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - */ - public void noOptionalCard(String playerUsername) { - if(!Objects.equals(playerUsername, miniModel.currentState.getCurrentPlayer().getUserName())) - view.showError("It's not your turn!"); - else { - client.noOptionalCard(playerUsername); - } - } - - /** * Used to perform the slot choice action for the specified player at the specified position. * @param playerUsername the name of the player performing the action 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 84cd82d..0a5ade5 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Controller/GameController.java +++ b/src/main/java/it/polimi/ingsw/gc14/Controller/GameController.java @@ -142,54 +142,14 @@ public class GameController { * @return {@code true} if the skip action is valid and successfully performed; * {@code false} if the player does not exist or the action is not valid. */ - public boolean SkipNoDrawable(String playerUsername) { + public boolean SkipTurn(String playerUsername) { Player player= model.getPlayerByUsername(playerUsername); if(player==null) return false; - return model.SkipNoDrawable(model.getPlayerByUsername(playerUsername)); + return model.SkipTurn(model.getPlayerByUsername(playerUsername)); } - /** - * Attempts to pick an optional tribe card for the specified player from the specified position. - * - * @param playerUsername the username of the player performing the action. - * @param pos the position of the optional tribe card to pick. - * @return {@code true} if the action succeeds, {@code false} if the player does not exist - * or if the pick operation fails. - */ - public boolean pickOptionalTribeCard(String playerUsername,int pos) { - Player player= model.getPlayerByUsername(playerUsername); - if(player==null) - return false; - return model.PickOptionalTribeCardByIndex(model.getPlayerByUsername(playerUsername), pos); - } - /** - * Attempts to pick an optional building card for the specified player from the specified position. - * - * @param playerUsername the username of the player performing the action. - * @param pos the position of the optional building card to pick. - * @return {@code true} if the action succeeds, {@code false} if the player does not exist - * or if the pick operation fails. - */ - public boolean pickOptionalBuildingCard(String playerUsername,int pos) { - Player player= model.getPlayerByUsername(playerUsername); - if(player==null) - 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/Model/Game.java b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java index e74f2ff..d8e35f1 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java @@ -411,11 +411,12 @@ public class Game implements Serializable { * @param player the player performing the draw. * @param cardIndex the index of the upper tribe card to draw. * @return {@code true} if the draw succeeds, {@code false} otherwise. + * TODO */ public boolean DrawUpperTribeCardByIndex(Player player,int cardIndex) { if( cardIndex<0 || cardIndex >=board.upperListTribe.size()) return false; - if(currentState.getGameStage()!= GameStages.RES_ACTIONS) + if(currentState.getGameStage()!= GameStages.RES_ACTIONS && currentState.getGameStage()!=GameStages.OPT_CARD_E) { return false; } @@ -423,7 +424,7 @@ public class Game implements Serializable { { return false; } - if(currentState.getNUpper() <1) + if(currentState.getNUpper() <1 && currentState.getGameStage()==GameStages.RES_ACTIONS) return false; TribeCard tribeCard = board.upperListTribe.get(cardIndex); if(tribeCard.IsEventCard()) @@ -432,9 +433,17 @@ public class Game implements Serializable { Character tempCard = (Character) tribeCard; tempCard.insert(player); board.removeUpperTribeCard(tempCard); - currentState.UpperDrawn(); - if((currentState.getNLower() ==0 ||( !hasDrawableDown() && getLowerListBuilding().isEmpty())) && ((currentState.getNUpper() ==0)||(!hasDrawableUp() && getUpperListBuilding().isEmpty()))) + if(currentState.getGameStage()==GameStages.RES_ACTIONS) + { + currentState.UpperDrawn(); + if((currentState.getNLower() ==0 ||( !hasDrawableDown() && getLowerListBuilding().isEmpty())) && ((currentState.getNUpper() ==0)||(!hasDrawableUp() && getUpperListBuilding().isEmpty()))) + nextPlayerSetup(); + } + else + { nextPlayerSetup(); + } + return true; } @@ -447,8 +456,8 @@ public class Game implements Serializable { * @param player the player skipping the turn . * @return {@code true} if the skip succeeds, {@code false} otherwise. */ - public boolean SkipNoDrawable(Player player) { - if(currentState.getGameStage()!= GameStages.RES_ACTIONS) + public boolean SkipTurn(Player player) { + if(currentState.getGameStage()!= GameStages.RES_ACTIONS && !currentState.getGameStage().equals(GameStages.OPT_CARD_E)) { return false; } @@ -456,15 +465,21 @@ public class Game implements Serializable { { return false; } - if(hasDrawableDown() && currentState.getNLower()>0 ) - return false; - if(hasDrawableUp() && currentState.getNUpper()>0) - return false; - while(currentState.getNLower()>0) - currentState.LowerDrawn(); - while(currentState.getNUpper()>0) - currentState.UpperDrawn(); - nextPlayerSetup(); + if(currentState.getGameStage()==GameStages.RES_ACTIONS) + { + if(hasDrawableDown() && currentState.getNLower()>0 ) + return false; + if(hasDrawableUp() && currentState.getNUpper()>0) + return false; + while(currentState.getNLower()>0) + currentState.LowerDrawn(); + while(currentState.getNUpper()>0) + currentState.UpperDrawn(); + nextPlayerSetup(); + } + else { + nextPlayerSetup(); + } return true; } @@ -525,7 +540,7 @@ public class Game implements Serializable { public boolean DrawUpperBuildingCardByIndex(Player player,int cardIndex) { if( cardIndex<0 || cardIndex >=board.upperListBuilding.size()) return false; - if(currentState.getGameStage()!= GameStages.RES_ACTIONS) + if(currentState.getGameStage()!= GameStages.RES_ACTIONS && currentState.getGameStage()!=GameStages.OPT_CARD_E) { return false; } @@ -534,18 +549,23 @@ public class Game implements Serializable { return false; } BuildingCard buildingCard = board.upperListBuilding.get(cardIndex); - if(currentState.getNUpper() <1) + if(currentState.getNUpper() <1 && currentState.getGameStage()==GameStages.RES_ACTIONS) return false; - if(buildingCard.buy(player)) + if(!buildingCard.buy(player)) + { + return false; + } + board.removeUpperBuildingCard(buildingCard); + if(currentState.getGameStage().equals(GameStages.RES_ACTIONS)) { currentState.UpperDrawn(); - board.removeUpperBuildingCard(buildingCard); + if((currentState.getNLower() ==0 ||( !hasDrawableDown() && getLowerListBuilding().isEmpty())) && ((currentState.getNUpper() ==0)||(!hasDrawableUp() && getUpperListBuilding().isEmpty()))) + nextPlayerSetup(); } else - return false; - if((currentState.getNLower() ==0 ||( !hasDrawableDown() && getLowerListBuilding().isEmpty())) && ((currentState.getNUpper() ==0)||(!hasDrawableUp() && getUpperListBuilding().isEmpty()))) + { nextPlayerSetup(); - + } return true; } @@ -594,98 +614,6 @@ public class Game implements Serializable { //region Optional Card Methods - - /** - * Attempts to pick the upper optional tribe card at the specified index for the specified player. - * The operation succeeds only if the current game stage is {@code OPTIONAL_CARD_EFFECT}, - * the specified player is the current player, the index is valid, - * and the selected tribe card is not an event card. - * If successful, the card is inserted into the player's collection, - * removed from the board, the player is removed from the optional card queue, - * and the next player setup is triggered. - * - * @param player the player performing the optional tribe card pick. - * @param cardIndex the index of the upper optional tribe card to pick. - * @return {@code true} if the operation succeeds, {@code false} otherwise. - */ - public boolean PickOptionalTribeCardByIndex(Player player,int cardIndex) { - if(currentState.getGameStage() != GameStages.OPT_CARD_E){ - return false; - } - if(!player.equals(currentState.getCurrentPlayer())){ - return false; - } - - if( cardIndex<0 || cardIndex >=board.upperListTribe.size()) - return false; - TribeCard tribeCard = board.upperListTribe.get(cardIndex); - - if(tribeCard.IsEventCard()) - return false; - - Character tempCard = (Character) tribeCard; - tempCard.insert(player); - board.removeUpperTribeCard(tempCard); - OptionalCardQueue.removeIf(x->x.equals(player)); - nextPlayerSetup(); - return true; - } - - /** - * Attempts to pick the upper optional building card at the specified index for the specified player. - * The operation succeeds only if the current game stage is {@code OPTIONAL_CARD_EFFECT}, - * the specified player is the current player, the index is valid, - * and the selected building card can be bought by the player. - * If successful, the card is removed from the board, the next player setup is triggered, - * and the player is removed from the optional card queue. - * - * @param player the player performing the optional building card pick. - * @param cardIndex the index of the upper optional building card to pick. - * @return {@code true} if the operation succeeds, {@code false} otherwise. - */ - public boolean PickOptionalBuildingCard(Player player, int cardIndex) { - if(currentState.getGameStage() != GameStages.OPT_CARD_E){ - return false; - } - if(!player.equals(currentState.getCurrentPlayer())){ - return false; - } - if( cardIndex<0 || cardIndex >=board.upperListBuilding.size()) - return false; - BuildingCard buildingCard = board.upperListBuilding.get(cardIndex); - if(buildingCard.buy(player)) { - board.removeUpperBuildingCard(buildingCard); - } - else { - return false; - } - OptionalCardQueue.removeIf(x->x.equals(player)); - nextPlayerSetup(); - return true; - } - - - /** - * Skips the optional card choice for the specified player. - * The operation succeeds only if the current game stage is {@code OPTIONAL_CARD_EFFECT} - * and the specified player is the current player. - * If successful, the player is removed from the optional card queue - * and the next player setup is triggered. - * - * @param player the player skipping the optional card choice. - * @return {@code true} if the operation succeeds, {@code false} otherwise. - */ - public boolean NoOptionalCard(Player player) { - if(currentState.getGameStage() != GameStages.OPT_CARD_E){ - return false; - } - if(!player.equals(currentState.getCurrentPlayer())){ - return false; - } - OptionalCardQueue.removeIf(x->x.equals(player)); - nextPlayerSetup(); - return true; - } //endregion //endregion @@ -763,7 +691,7 @@ public class Game implements Serializable { for (Map.Entry entry : slotMap.entrySet()) { if (entry.getValue() != null) { - if(disconnetedPlayers.containsKey(entry.getValue())&&disconnetedPlayers.get(currentState.getCurrentPlayer())) + if(disconnetedPlayers.containsKey(entry.getValue())&&disconnetedPlayers.get(entry.getValue())) { orderLogicCard.push(entry.getValue()); entry.setValue(null); diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/ClientPlayer.java b/src/main/java/it/polimi/ingsw/gc14/Network/ClientPlayer.java deleted file mode 100644 index 29d816d..0000000 --- a/src/main/java/it/polimi/ingsw/gc14/Network/ClientPlayer.java +++ /dev/null @@ -1,15 +0,0 @@ -package it.polimi.ingsw.gc14.Network; -//TODO -public class ClientPlayer { - private String username; - - public String getUsername() { - return username; - } - public boolean connected; - - public ClientPlayer(String username,boolean connected) { - this.username = username; - this.connected = connected; - } -} 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 72d4394..a1f8fe4 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/EventType.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/EventType.java @@ -12,12 +12,9 @@ public enum EventType { DRAW_LOWER_TRIBE, DRAW_UPPER_BUILD, DRAW_LOWER_BUILD, - PICK_OPTIONAL_TRIBE, - PICK_OPTIONAL_BUILD, - SKIP_NO_DRAWABLE, + SKIP_TURN, DISCONNECTED_PLAYER, RECONNECT_PLAYER, NEXT_ROUND, - ENDED_GAME, - NO_OPTIONAL_CARD + ENDED_GAME } diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/IClient.java b/src/main/java/it/polimi/ingsw/gc14/Network/IClient.java index 6534082..c633910 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/IClient.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/IClient.java @@ -18,15 +18,7 @@ public interface IClient { public void drawLowerBuildingCard(String playerUsername,int pos) ; public void skipTurn(String playerUsername); - - - - public void pickOptionalTribeCard(String playerUsername,int pos) ; - - public void pickOptionalBuildingCard(String playerUsername,int pos) ; - - - public void noOptionalCard(String playerUsername) ; + public void slotChoice(String playerUsername,int pos) ; public void totemChoice(String playerUsername,String totem) ; 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 deleted file mode 100644 index 985a9e4..0000000 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/NoOptionalCard.java +++ /dev/null @@ -1,45 +0,0 @@ -package it.polimi.ingsw.gc14.Network.NetworkEvents; - -import it.polimi.ingsw.gc14.Controller.GameController; -import it.polimi.ingsw.gc14.Model.MiniModel; -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; - -/** - * NetworkEvent to avoid drawing a card from the upper list (see the effect of Building 12) - */ -public class NoOptionalCard extends NetworkEvent implements Serializable{ - - /** - * Class constructor. - * Initialized all the attributes. - * @param username the name of the player requesting the event - */ - public NoOptionalCard(String username){ - super(username, EventType.NO_OPTIONAL_CARD, false); - } - - /** - * @param gameController the Game Controller on which to apply the event - * @return true if the player could draw the card, false otherwise - */ - @Override - public boolean apply(GameController gameController){ - return gameController.noOptionalCard(username); - } - //TODO - @Override - public boolean apply(MiniModel miniModel){ - if(isError) - return false; - miniModel.setPlayer(player); - miniModel.setOrderLogicCard(orderLogicCard); - miniModel.setCurrentState(currentState); - miniModel.setSlotPlayerMap(slotPlayerMap); - return true; - - } -} 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 deleted file mode 100644 index ebe5933..0000000 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalBuildingCard.java +++ /dev/null @@ -1,52 +0,0 @@ -package it.polimi.ingsw.gc14.Network.NetworkEvents; - -import it.polimi.ingsw.gc14.Controller.GameController; -import it.polimi.ingsw.gc14.Model.MiniModel; -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; - -/** - * NetworkEvent to draw a building card from the upper list (see the effect of Building 12) - */ -public class PickOptionalBuildingCard extends NetworkEvent implements Serializable{ - - /** Index of the card to draw */ - private int pos; - - /** - * Class constructor. - * Initialized all the attributes. - * @param username the name of the player requesting the event - * @param pos the index of the card to draw - */ - public PickOptionalBuildingCard(String username, int pos){ - super(username, EventType.PICK_OPTIONAL_BUILD, false); - this.pos = pos; - } - - /** - * @param gameController the Game Controller on which to apply the event - * @return true if the player could draw the card, false otherwise - */ - @Override - public boolean apply(GameController gameController){ - return gameController.pickOptionalBuildingCard(username, pos); - } - //TODO - @Override - public boolean apply(MiniModel miniModel){ - if(isError) - return false; - - miniModel.board.removeUpperBuildingCard(miniModel.board.upperListBuilding.get(pos)); - miniModel.setPlayer(player); - miniModel.setOrderLogicCard(orderLogicCard); - miniModel.setCurrentState(currentState); - miniModel.setSlotPlayerMap(slotPlayerMap); - return true; - - } -} 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 deleted file mode 100644 index bd4d10f..0000000 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/PickOptionalTribeCard.java +++ /dev/null @@ -1,54 +0,0 @@ -package it.polimi.ingsw.gc14.Network.NetworkEvents; - -import it.polimi.ingsw.gc14.Controller.GameController; -import it.polimi.ingsw.gc14.Model.MiniModel; -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; - -/** - * NetworkEvent to draw a tribe card from the upper list (see the effect of Building 12) - */ -public class PickOptionalTribeCard extends NetworkEvent implements Serializable{ - - /** Index of the card to draw */ - private int pos; - - /** - * Class constructor. - * Initialized all the attributes. - * @param username the name of the player requesting the event - * @param pos the index of the card to draw - */ - public PickOptionalTribeCard(String username, int pos){ - super(username, EventType.PICK_OPTIONAL_TRIBE, false); - this.pos = pos; - } - - /** - * @param gameController the Game Controller on which to apply the event - * @return true if the player could draw the card, false otherwise - */ - @Override - public boolean apply(GameController gameController){ - return gameController.pickOptionalTribeCard(username, pos); - } - - //TODO - @Override - public boolean apply(MiniModel miniModel){ - if(isError) - return false; - - miniModel.board.removeUpperTribeCard(miniModel.board.upperListTribe.get(pos)); - miniModel.setPlayer(player); - miniModel.setOrderLogicCard(orderLogicCard); - miniModel.setCurrentState(currentState); - miniModel.setSlotPlayerMap(slotPlayerMap); - return true; - - } - -} diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SkipNoDrawable.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SkipTurn.java similarity index 82% rename from src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SkipNoDrawable.java rename to src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SkipTurn.java index cd13f3b..0eecf0b 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SkipNoDrawable.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/SkipTurn.java @@ -10,15 +10,15 @@ import java.io.Serializable; /** * NetworkEvent to avoid drawing a card from the lower card list */ -public class SkipNoDrawable extends NetworkEvent implements Serializable{ +public class SkipTurn extends NetworkEvent implements Serializable{ /** * Class constructor. * Initializes all the attributes. * @param username the name of the player requesting the event */ - public SkipNoDrawable(String username){ - super(username, EventType.SKIP_NO_DRAWABLE, false); + public SkipTurn(String username){ + super(username, EventType.SKIP_TURN, false); } /** @@ -27,7 +27,7 @@ public class SkipNoDrawable extends NetworkEvent implements Serializable{ */ @Override public boolean apply(GameController gameController){ - return gameController.SkipNoDrawable(username); + return gameController.SkipTurn(username); } //TODO diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/RMIClient.java b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/RMIClient.java index 73fd073..313e605 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/RMIClient.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Client/RMIClient.java @@ -205,57 +205,11 @@ public class RMIClient implements IClient { System.out.println("Error during remote skip turn"); } } + - /** - * Used to draw a tribe card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - * @param pos the index of the card to draw - */ - public void pickOptionalTribeCard(String playerUsername,int pos) { - try{ - stub.pickOptionalTribeCard(playerUsername,pos); - } - catch (RemoteException e){ - System.out.println("Error during remote pick optional tribe card"); - } - } - - - /** - * Used to draw a building card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - * @param pos the index of the card to draw - */ - public void pickOptionalBuildingCard(String playerUsername,int pos) { - try{ - stub.pickOptionalBuildingCard(playerUsername,pos); - } - catch (RemoteException e){ - System.out.println("Error during remote pick optional building card"); - } - } - - - /** - * Used to skip the action of drawing a card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - */ - public void noOptionalCard(String playerUsername) { - try{ - stub.noOptionalCard(playerUsername); - } - catch (RemoteException e){ - System.out.println("Error during remote no pick optional card"); - } - } - - /** * Used to perform the slot choice action for the specified player at the specified position. * @param playerUsername the name of the player performing the action diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Common/IGameServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Common/IGameServer.java index af931e6..64177ab 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Common/IGameServer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Common/IGameServer.java @@ -18,9 +18,6 @@ public interface IGameServer extends Remote { void drawUpperBuildingCard(String playerUsername, int pos) throws RemoteException; void drawLowerBuildingCard(String playerUsername, int pos) throws RemoteException; void skipTurn(String playerUsername) throws RemoteException; - void pickOptionalTribeCard(String playerUsername, int pos) throws RemoteException; - void pickOptionalBuildingCard(String playerUsername, int pos) throws RemoteException; - void noOptionalCard(String playerUsername) throws RemoteException; void slotChoice(String playerUsername, int pos) throws RemoteException; void totemChoice(String playerUsername, String totems) throws RemoteException; /** diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java index 0e7c2cf..1f8110b 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java @@ -3,7 +3,6 @@ package it.polimi.ingsw.gc14.Network.RMI.Server; import it.polimi.ingsw.gc14.Controller.GameController; import it.polimi.ingsw.gc14.LimitedMap; import it.polimi.ingsw.gc14.Model.Game; -import it.polimi.ingsw.gc14.Model.GamePackage.CurrentState; import it.polimi.ingsw.gc14.Model.MiniModel; import it.polimi.ingsw.gc14.Network.NetworkEvent; import it.polimi.ingsw.gc14.Network.NetworkEvents.*; @@ -250,43 +249,11 @@ public class RMIServer extends UnicastRemoteObject implements IGameServer { * @param playerUsername the name of the player performing the action */ public void skipTurn(String playerUsername) { - actionQueue.offer(new SkipNoDrawable(playerUsername)); + actionQueue.offer(new SkipTurn(playerUsername)); } - /** - * Used to draw a tribe card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - * @param pos the index of the card to draw - */ - public void pickOptionalTribeCard(String playerUsername,int pos) { - actionQueue.offer(new PickOptionalTribeCard(playerUsername,pos)); - } - - - /** - * Used to draw a building card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - * @param pos the index of the card to draw - */ - public void pickOptionalBuildingCard(String playerUsername,int pos) { - actionQueue.offer(new PickOptionalBuildingCard(playerUsername,pos)); - } - - - /** - * Used to skip the action of drawing a card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - */ - public void noOptionalCard(String playerUsername) { - actionQueue.offer(new NoOptionalCard(playerUsername)); - } - - /** * Used to perform the slot choice action for the specified player at the specified position. * @param playerUsername the name of the player performing the action diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Client/TCPClient.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Client/TCPClient.java index 0499fb5..8ce4d76 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Client/TCPClient.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Client/TCPClient.java @@ -235,39 +235,7 @@ public class TCPClient implements IClient { * @param playerUsername the name of the player performing the action */ public void skipTurn(String playerUsername) { - doEvent(new SkipNoDrawable(playerUsername)); - } - - - /** - * Used to draw a tribe card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - * @param pos the index of the card to draw - */ - public void pickOptionalTribeCard(String playerUsername,int pos) { - doEvent(new PickOptionalTribeCard(playerUsername,pos)); - } - - - /** - * Used to draw a building card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - * @param pos the index of the card to draw - */ - public void pickOptionalBuildingCard(String playerUsername,int pos) { - doEvent(new PickOptionalBuildingCard(playerUsername,pos)); - } - - - /** - * Used to skip the action of drawing a card from the upper list. - * Available only if the player owns the building 12. - * @param playerUsername the name of the player performing the action - */ - public void noOptionalCard(String playerUsername) { - doEvent(new NoOptionalCard(playerUsername)); + doEvent(new SkipTurn(playerUsername)); } 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 84253ab..d06db96 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 @@ -4,8 +4,6 @@ import it.polimi.ingsw.gc14.Controller.GameController; import it.polimi.ingsw.gc14.LimitedMap; import it.polimi.ingsw.gc14.Model.Game; import it.polimi.ingsw.gc14.Model.MiniModel; -import it.polimi.ingsw.gc14.Model.Player; -import it.polimi.ingsw.gc14.Network.ClientPlayer; import it.polimi.ingsw.gc14.Network.EventType; import it.polimi.ingsw.gc14.Network.NetworkEvent; import it.polimi.ingsw.gc14.Network.NetworkEvents.AddPlayer; diff --git a/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java b/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java index b463966..6914e40 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java @@ -194,7 +194,7 @@ public class TUI implements IView { lines.add(i+"."+model.availableTotems.get(i)); } table.addRow(lines); - System.out.println(model.currentState+"\nTOTEMS AVAILABLE:\n"+table.build()+"\nPress 9 and then write the position"); + System.out.println(model.currentState+"\nTOTEMS AVAILABLE:\n"+table.build()+"\nPress 7 and then write the position"); } /** @@ -248,15 +248,12 @@ public class TUI implements IView { private String printMenuOptions() { var table = new AsciiTable(BorderStyle.ROUNDED, 2); table.addHeader("Menu Options", "Render Options"); - table.addRow(List.of("0-SlotChoice(pos)", "A-Full Render")); - table.addRow(List.of("1-DrawUpperTribe(pos)", "B-Board Render")); - table.addRow(List.of("2-DrawUpperBuilding(pos)", "C-Players Render")); - table.addRow(List.of("3-DrawLowerTribe(pos)", "")); - table.addRow(List.of("4-DrawLowerBuilding(pos)", "")); - table.addRow(List.of("5-PickOptionalTribe(pos)", "")); - table.addRow(List.of("6-PickOptionalBuilding(pos)", "")); - table.addRow(List.of("7-NoOptional", "")); - table.addRow(List.of("8-SkipTurn", "")); + table.addRow(List.of("1-SlotChoice(pos)", "A-Full Render")); + table.addRow(List.of("2-DrawUpperTribe(pos)", "B-Board Render")); + table.addRow(List.of("3-DrawUpperBuilding(pos)", "C-Players Render")); + table.addRow(List.of("4-DrawLowerTribe(pos)", "")); + table.addRow(List.of("5-DrawLowerBuilding(pos)", "")); + table.addRow(List.of("6-SkipTurn", "")); return table.build(); } diff --git a/src/test/java/it/polimi/ingsw/gc14/Controller/GameControllerTest.java b/src/test/java/it/polimi/ingsw/gc14/Controller/GameControllerTest.java index 321669b..399c7b6 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Controller/GameControllerTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Controller/GameControllerTest.java @@ -149,7 +149,7 @@ class GameControllerTest { if (game.getCurrentState().getNUpper() == 0 || game.getUpperListTribeCards().stream().allMatch(TribeCard::IsEventCard)) { - assertTrue(controller.SkipNoDrawable(username)); + assertTrue(controller.SkipTurn(username)); return; } } @@ -172,7 +172,7 @@ class GameControllerTest { if (game.getCurrentState().getNLower() == 0 || game.getLowerListTribeCards().stream().allMatch(TribeCard::IsEventCard)) { - assertTrue(controller.SkipNoDrawable(username)); + assertTrue(controller.SkipTurn(username)); return; } } @@ -289,10 +289,10 @@ class GameControllerTest { assertFalse(controller.drawLowerTribeCard("ghost", 0)); assertFalse(controller.drawUpperBuildingCard("ghost", 0)); assertFalse(controller.drawLowerBuildingCard("ghost", 0)); - assertFalse(controller.SkipNoDrawable("ghost")); - assertFalse(controller.pickOptionalTribeCard("ghost", 0)); - assertFalse(controller.pickOptionalBuildingCard("ghost", 0)); - assertFalse(controller.noOptionalCard("ghost")); + assertFalse(controller.SkipTurn("ghost")); + assertFalse(controller.drawUpperTribeCard("ghost", 0)); + assertFalse(controller.drawUpperBuildingCard("ghost", 0)); + assertFalse(controller.SkipTurn("ghost")); assertFalse(controller.TotemChoice("ghost", Totems.values()[0].name())); assertFalse(controller.DisconnectedPlayer("ghost")); assertFalse(controller.ReconnectPlayer("ghost")); @@ -505,8 +505,8 @@ class GameControllerTest { String cur = game.getCurrentState().getCurrentPlayer().getUserName(); - assertFalse(controller.pickOptionalTribeCard(cur, 0)); - assertFalse(controller.pickOptionalBuildingCard(cur, 0)); + assertFalse(controller.drawUpperTribeCard(cur, 0)); + assertFalse(controller.drawUpperBuildingCard(cur, 0)); } @Test @@ -530,7 +530,7 @@ class GameControllerTest { int charactersBefore = optionalPlayer.getTotCharacters(); - assertTrue(controller.pickOptionalTribeCard(optionalPlayer.getUserName(), index)); + assertTrue(controller.drawUpperTribeCard(optionalPlayer.getUserName(), index)); assertEquals(charactersBefore + 1, optionalPlayer.getTotCharacters()); } @@ -558,7 +558,7 @@ class GameControllerTest { int foodBefore = optionalPlayer.getFoodValue(); int buildingsBefore = optionalPlayer.buildingCards.size(); - assertTrue(controller.pickOptionalBuildingCard(optionalPlayer.getUserName(), 0)); + assertTrue(controller.drawUpperBuildingCard(optionalPlayer.getUserName(), 0)); assertTrue(optionalPlayer.getFoodValue() <= foodBefore); assertEquals(buildingsBefore + 1, optionalPlayer.buildingCards.size()); @@ -625,7 +625,7 @@ class GameControllerTest { assertTrue(optionalPlayer.buildingCards.stream() .anyMatch(building -> building.getEffectId() == 12)); - assertTrue(controller.noOptionalCard(optionalPlayer.getUserName())); + assertTrue(controller.SkipTurn(optionalPlayer.getUserName())); } @Test @@ -666,11 +666,11 @@ class GameControllerTest { String username = optionalPlayer.getUserName(); - assertFalse(controller.pickOptionalTribeCard(username, -1)); - assertFalse(controller.pickOptionalTribeCard(username, 999)); + assertFalse(controller.drawUpperTribeCard(username, -1)); + assertFalse(controller.drawUpperTribeCard(username, 999)); - assertFalse(controller.pickOptionalBuildingCard(username, -1)); - assertFalse(controller.pickOptionalBuildingCard(username, 999)); + assertFalse(controller.drawUpperBuildingCard(username, -1)); + assertFalse(controller.drawUpperBuildingCard(username, 999)); } @Test @@ -693,9 +693,9 @@ class GameControllerTest { assertNotNull(wrongPlayer); - assertFalse(controller.pickOptionalTribeCard(wrongPlayer.getUserName(), 0)); - assertFalse(controller.pickOptionalBuildingCard(wrongPlayer.getUserName(), 0)); - assertFalse(controller.noOptionalCard(wrongPlayer.getUserName())); + assertFalse(controller.drawUpperTribeCard(wrongPlayer.getUserName(), 0)); + assertFalse(controller.drawUpperBuildingCard(wrongPlayer.getUserName(), 0)); + assertFalse(controller.SkipTurn(wrongPlayer.getUserName())); } @Test @@ -714,7 +714,7 @@ class GameControllerTest { assertFalse(game.getLowerListTribeCards().isEmpty()); assertTrue(firstNonEventIndexOrMinusOne(game.getLowerListTribeCards()) != -1); - assertFalse(controller.SkipNoDrawable(current.getUserName())); + assertFalse(controller.SkipTurn(current.getUserName())); } @Test @@ -733,7 +733,7 @@ class GameControllerTest { assertFalse(game.getUpperListTribeCards().isEmpty()); assertTrue(firstNonEventIndexOrMinusOne(game.getUpperListTribeCards()) != -1); - assertFalse(controller.SkipNoDrawable(current.getUserName())); + assertFalse(controller.SkipTurn(current.getUserName())); } diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java index d7ae28d..ede480e 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java @@ -119,7 +119,7 @@ class GameTest { if(game.getCurrentState().getNUpper() == 0 || game.getUpperListTribeCards().stream().allMatch(TribeCard::IsEventCard)) { - assertTrue(game.SkipNoDrawable(current)); + assertTrue(game.SkipTurn(current)); return; } @@ -140,7 +140,7 @@ class GameTest { if(game.getCurrentState().getNLower() == 0 || game.getLowerListTribeCards().stream().allMatch(TribeCard::IsEventCard)) { - assertTrue(game.SkipNoDrawable(current)); + assertTrue(game.SkipTurn(current)); return; } } @@ -177,7 +177,7 @@ class GameTest { Player current = game.getCurrentState().getCurrentPlayer(); assertNotNull(current); - assertTrue(game.NoOptionalCard(current)); + assertTrue(game.SkipTurn(current)); } } @@ -578,7 +578,7 @@ class GameTest { int charactersBefore = current.getTotCharacters(); - assertTrue(game.PickOptionalTribeCardByIndex(current, index)); + assertTrue(game.DrawUpperTribeCardByIndex(current, index)); assertEquals(charactersBefore + 1, current.getTotCharacters()); } @@ -616,7 +616,7 @@ class GameTest { int upperBuildingsBefore = game.getUpperListBuilding().size(); int foodBefore = current.getFoodValue(); - assertTrue(game.PickOptionalBuildingCard(current, 0)); + assertTrue(game.DrawUpperBuildingCardByIndex(current, 0)); assertEquals(buildingsBefore + 1, current.buildingCards.size()); assertEquals(upperBuildingsBefore - 1, game.getUpperListBuilding().size()); @@ -651,7 +651,7 @@ class GameTest { Player current = game.getCurrentState().getCurrentPlayer(); assertNotNull(current); - assertTrue(game.NoOptionalCard(current)); + assertTrue(game.SkipTurn(current)); assertEquals(GameStages.OPT_CARD_E, game.getCurrentState().getGameStage()); assertNotEquals(current, game.getCurrentState().getCurrentPlayer()); @@ -785,9 +785,9 @@ class GameTest { Player current = game.getCurrentState().getCurrentPlayer(); assertNotNull(current); - assertFalse(game.PickOptionalTribeCardByIndex(current, 0)); - assertFalse(game.PickOptionalBuildingCard(current, 0)); - assertFalse(game.NoOptionalCard(current)); + assertFalse(game.DrawUpperTribeCardByIndex(current, 0)); + assertFalse(game.DrawUpperBuildingCardByIndex(current, 0)); + assertFalse(game.SkipTurn(current)); } @Test @@ -806,15 +806,15 @@ class GameTest { Player wrongPlayer = current.equals(players.get(0)) ? players.get(1) : players.get(0); - assertFalse(game.PickOptionalTribeCardByIndex(wrongPlayer, 0)); - assertFalse(game.PickOptionalBuildingCard(wrongPlayer, 0)); - assertFalse(game.NoOptionalCard(wrongPlayer)); + assertFalse(game.DrawUpperTribeCardByIndex(wrongPlayer, 0)); + assertFalse(game.DrawUpperBuildingCardByIndex(wrongPlayer, 0)); + assertFalse(game.SkipTurn(wrongPlayer)); - assertFalse(game.PickOptionalTribeCardByIndex(current, -1)); - assertFalse(game.PickOptionalTribeCardByIndex(current, 999)); + assertFalse(game.DrawUpperTribeCardByIndex(current, -1)); + assertFalse(game.DrawUpperTribeCardByIndex(current, 999)); - assertFalse(game.PickOptionalBuildingCard(current, -1)); - assertFalse(game.PickOptionalBuildingCard(current, 999)); + assertFalse(game.DrawUpperBuildingCardByIndex(current, -1)); + assertFalse(game.DrawUpperBuildingCardByIndex(current, 999)); } @@ -949,7 +949,7 @@ class GameTest { Player current = game.getCurrentState().getCurrentPlayer(); assertNotNull(current); - assertTrue(game.NoOptionalCard(current)); + assertTrue(game.SkipTurn(current)); assertEquals(GameStages.SLOT_CHOICE, game.getCurrentState().getGameStage()); assertEquals(roundBefore + 1, game.getCurrentState().getRound()); @@ -1009,7 +1009,7 @@ class GameTest { "There must be at least one upper building card to test that the player cannot buy it." ); - assertFalse(game.PickOptionalBuildingCard(current, 0)); + assertFalse(game.DrawUpperBuildingCardByIndex(current, 0)); } @Test @@ -1228,7 +1228,7 @@ class GameTest { .findFirst() .orElseThrow(); - assertFalse(game.SkipNoDrawable(wrongPlayer)); + assertFalse(game.SkipTurn(wrongPlayer)); } @Test @@ -1255,7 +1255,7 @@ class GameTest { "The test requires at least one drawable tribe card." ); - assertFalse(game.SkipNoDrawable(current)); + assertFalse(game.SkipTurn(current)); } @Test @@ -1282,7 +1282,7 @@ class GameTest { int charactersBefore = current.getTotCharacters(); int upperSizeBefore = game.getUpperListTribeCards().size(); - assertFalse(game.PickOptionalTribeCardByIndex(current, eventIndex)); + assertFalse(game.DrawUpperTribeCardByIndex(current, eventIndex)); assertEquals(GameStages.OPT_CARD_E, game.getCurrentState().getGameStage()); assertEquals(current, game.getCurrentState().getCurrentPlayer()); @@ -1352,7 +1352,7 @@ class GameTest { assertEquals(GameStages.SLOT_CHOICE, game.getCurrentState().getGameStage()); - assertFalse(game.SkipNoDrawable(current)); + assertFalse(game.SkipTurn(current)); } @Test