Merge pull request #60 from rubenpirreram/FIX_NO_OPTIONAL_CARD

Add:No Optional Card
This commit is contained in:
rubenpirreram
2026-05-01 16:38:04 +02:00
committed by GitHub
14 changed files with 67 additions and 44 deletions
@@ -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;
@@ -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.
*
@@ -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.
@@ -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
}
@@ -29,8 +29,4 @@ public class AddPlayer extends NetworkEvent implements Serializable {
{
return gameController.addPlayer(username);
}
public String apply(IView gameController)
{
return gameController.toString();
}
}
@@ -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();
}
}
@@ -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();
}
}
@@ -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();
}
}
@@ -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();
}
}
@@ -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);
}
}
@@ -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();
}
}
@@ -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();
}
}
@@ -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();
}
}
@@ -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); }