added new notifications for client-view communication
This commit is contained in:
		@@ -1,5 +1,7 @@
 | 
			
		||||
package pp.mdga.notification;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.game.BonusCard;
 | 
			
		||||
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -8,12 +10,14 @@
 | 
			
		||||
public class AcquireCardNotification extends Notification{
 | 
			
		||||
 | 
			
		||||
    private UUID cardId;
 | 
			
		||||
    private BonusCard bonusCard;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor.
 | 
			
		||||
     * @param cardId The id of the card that was acquired.
 | 
			
		||||
     */
 | 
			
		||||
    public AcquireCardNotification(UUID cardId) {
 | 
			
		||||
    public AcquireCardNotification(BonusCard bonusCard, UUID cardId) {
 | 
			
		||||
        this.bonusCard = bonusCard;
 | 
			
		||||
        this.cardId = cardId;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -24,4 +28,8 @@ public AcquireCardNotification(UUID cardId) {
 | 
			
		||||
    public UUID getCardId() {
 | 
			
		||||
        return cardId;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public BonusCard getBonusCard() {
 | 
			
		||||
        return bonusCard;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,37 +2,76 @@
 | 
			
		||||
 | 
			
		||||
import pp.mdga.game.Color;
 | 
			
		||||
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Notification that a piece has been moved.
 | 
			
		||||
 */
 | 
			
		||||
public class MovePieceNotification extends Notification {
 | 
			
		||||
 | 
			
		||||
    private Color color;
 | 
			
		||||
    private int nodeIndex;
 | 
			
		||||
    /**
 | 
			
		||||
     * The unique identifier of the piece being moved.
 | 
			
		||||
     */
 | 
			
		||||
    private final UUID piece;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor.
 | 
			
		||||
     * @param color the color of the piece that has been moved.
 | 
			
		||||
     * @param nodeIndex the index of the node the piece has been moved to.
 | 
			
		||||
     * The index of the node from which the piece started moving.
 | 
			
		||||
     * Ignored if {@code moveStart} is {@code true}.
 | 
			
		||||
     */
 | 
			
		||||
    MovePieceNotification(Color color, int nodeIndex) {
 | 
			
		||||
        this.color = color;
 | 
			
		||||
        this.nodeIndex = nodeIndex;
 | 
			
		||||
    private final int startIndex;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The index of the node to which the piece is moving.
 | 
			
		||||
     * If {@code moveStart} is {@code true}, this index represents the start node.
 | 
			
		||||
     */
 | 
			
		||||
    private final int moveIndex;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Flag indicating that the piece ({@code uuid}) is moving from waiting area to the startNode.
 | 
			
		||||
     */
 | 
			
		||||
    private final boolean moveStart;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructs a notification for a piece start movement.
 | 
			
		||||
     *
 | 
			
		||||
     * @param piece      the unique identifier of the piece
 | 
			
		||||
     * @param moveIndex  the destination node index
 | 
			
		||||
     * @param moveStart  whether to ignore {@code startIndex} and use {@code moveIndex} as the start node
 | 
			
		||||
     */
 | 
			
		||||
    public MovePieceNotification(UUID piece, int moveIndex, boolean moveStart) {
 | 
			
		||||
        this.piece = piece;
 | 
			
		||||
        this.startIndex = 0;
 | 
			
		||||
        this.moveIndex = moveIndex;
 | 
			
		||||
        this.moveStart = moveStart;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the color of the piece that has been moved.
 | 
			
		||||
     * @return the color of the piece that has been moved.
 | 
			
		||||
     * Constructs a notification for a piece infield move with {@code moveStart} set to {@code false}.
 | 
			
		||||
     *
 | 
			
		||||
     * @param piece      the unique identifier of the piece
 | 
			
		||||
     * @param startIndex the starting node index
 | 
			
		||||
     * @param moveIndex  the destination node index
 | 
			
		||||
     */
 | 
			
		||||
    public Color getColor() {
 | 
			
		||||
        return color;
 | 
			
		||||
    public MovePieceNotification(UUID piece, int startIndex, int moveIndex) {
 | 
			
		||||
        this.piece = piece;
 | 
			
		||||
        this.startIndex = startIndex;
 | 
			
		||||
        this.moveIndex = moveIndex;
 | 
			
		||||
        this.moveStart = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the index of the node the piece has been moved to.
 | 
			
		||||
     * @return the index of the node the piece has been moved to.
 | 
			
		||||
     */
 | 
			
		||||
    public int getNodeIndex() {
 | 
			
		||||
        return nodeIndex;
 | 
			
		||||
    public int getMoveIndex() {
 | 
			
		||||
        return moveIndex;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getStartIndex() {
 | 
			
		||||
        return startIndex;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public UUID getPiece() {
 | 
			
		||||
        return piece;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isMoveStart() {
 | 
			
		||||
        return moveStart;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,64 +0,0 @@
 | 
			
		||||
package pp.mdga.notification;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.game.Color;
 | 
			
		||||
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
public class MoveThrowPieceNotification extends Notification{
 | 
			
		||||
 | 
			
		||||
    private UUID pieceId1;
 | 
			
		||||
    private UUID pieceId2;
 | 
			
		||||
    private int nodeIndex;
 | 
			
		||||
    private Color colorPiece2;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This constructor is used to create a new MoveThrowPieceNotification
 | 
			
		||||
     *
 | 
			
		||||
     * @param pieceId1 the pieceId1
 | 
			
		||||
     * @param pieceId2 the pieceId2
 | 
			
		||||
     * @param nodeIndex the nodeIndex
 | 
			
		||||
     * @param colorPiece2 the color
 | 
			
		||||
     */
 | 
			
		||||
    public MoveThrowPieceNotification(UUID pieceId1, UUID pieceId2, int nodeIndex, Color colorPiece2) {
 | 
			
		||||
        this.pieceId1 = pieceId1;
 | 
			
		||||
        this.pieceId2 = pieceId2;
 | 
			
		||||
        this.nodeIndex = nodeIndex;
 | 
			
		||||
        this.colorPiece2 = colorPiece2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This method returns the pieceId1
 | 
			
		||||
     *
 | 
			
		||||
     * @return the pieceId1
 | 
			
		||||
     */
 | 
			
		||||
    public UUID getPieceId1() {
 | 
			
		||||
        return pieceId1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This method returns the pieceId2
 | 
			
		||||
     *
 | 
			
		||||
     * @return the pieceId2
 | 
			
		||||
     */
 | 
			
		||||
    public UUID getPieceId2() {
 | 
			
		||||
        return pieceId2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This method returns the nodeIndex
 | 
			
		||||
     *
 | 
			
		||||
     * @return the nodeIndex
 | 
			
		||||
     */
 | 
			
		||||
    public int getNodeIndex() {
 | 
			
		||||
        return nodeIndex;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This method returns the color
 | 
			
		||||
     *
 | 
			
		||||
     * @return the color
 | 
			
		||||
     */
 | 
			
		||||
    public Color getColor() {
 | 
			
		||||
        return colorPiece2;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,8 +1,4 @@
 | 
			
		||||
package pp.mdga.notification;
 | 
			
		||||
 | 
			
		||||
public abstract class Notification {
 | 
			
		||||
 | 
			
		||||
    public void accept(){
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,37 +0,0 @@
 | 
			
		||||
package pp.mdga.notification;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.game.Color;
 | 
			
		||||
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Notification that a piece is in the game
 | 
			
		||||
 */
 | 
			
		||||
public class PieceInGameNotification extends Notification{
 | 
			
		||||
    private Color color;
 | 
			
		||||
    private UUID id;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor
 | 
			
		||||
     * @param color the color of the piece
 | 
			
		||||
     * @param id the id of the piece
 | 
			
		||||
     */
 | 
			
		||||
    PieceInGameNotification(Color color, UUID id) {
 | 
			
		||||
        this.color = color;
 | 
			
		||||
        this.id = id;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return the color of the piece
 | 
			
		||||
     */
 | 
			
		||||
    public Color getColor() {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return the id of the piece
 | 
			
		||||
     */
 | 
			
		||||
    public UUID getId() {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -2,6 +2,9 @@
 | 
			
		||||
 | 
			
		||||
import pp.mdga.game.Color;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Notification that a player is in the game.
 | 
			
		||||
 */
 | 
			
		||||
@@ -9,15 +12,17 @@ public class PlayerInGameNotification extends Notification {
 | 
			
		||||
 | 
			
		||||
    private Color color;
 | 
			
		||||
    private String name;
 | 
			
		||||
    private List<UUID> piecesList;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor.
 | 
			
		||||
     * @param color the color of the player that is in the game.
 | 
			
		||||
     * @param name the name of the player that is in the game.
 | 
			
		||||
     */
 | 
			
		||||
    PlayerInGameNotification(Color color, String name) {
 | 
			
		||||
    public PlayerInGameNotification(Color color,  List<UUID> piecesList, String name) {
 | 
			
		||||
        this.color = color;
 | 
			
		||||
        this.name = name;
 | 
			
		||||
        this.piecesList = piecesList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -35,4 +40,8 @@ public Color getColor() {
 | 
			
		||||
    public String getName() {
 | 
			
		||||
        return name;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<UUID> getPiecesList() {
 | 
			
		||||
        return piecesList;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,66 @@
 | 
			
		||||
package pp.mdga.notification;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Notification for selecting pieces and their possible moves.
 | 
			
		||||
 */
 | 
			
		||||
public class SelectableMoveNotification extends Notification{
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * List of UUIDs representing the pieces that can be moved based on the dice roll.
 | 
			
		||||
     */
 | 
			
		||||
    private final List<UUID> pieces;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * List of integers representing the target nodes the pieces can move to.
 | 
			
		||||
     */
 | 
			
		||||
    private final List<Integer> moveIndexe;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * List of booleans indicating whether the corresponding target nodes are in the home area.
 | 
			
		||||
     * {@code true} if the target node is in the home area, {@code false} if in the infield.
 | 
			
		||||
     */
 | 
			
		||||
    private final List<Boolean> homeMoves;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructs a notification for selectable piece moves.
 | 
			
		||||
     *
 | 
			
		||||
     * @param pieces     the list of pieces that can be moved
 | 
			
		||||
     * @param moveIndexe the list of target nodes for the moves
 | 
			
		||||
     * @param homeMoves  the list indicating if the target nodes are in the home area
 | 
			
		||||
     */
 | 
			
		||||
    public SelectableMoveNotification(List<UUID> pieces, List<Integer> moveIndexe, List<Boolean> homeMoves) {
 | 
			
		||||
        this.pieces = pieces;
 | 
			
		||||
        this.moveIndexe = moveIndexe;
 | 
			
		||||
        this.homeMoves = homeMoves;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the list of pieces that can be moved.
 | 
			
		||||
     *
 | 
			
		||||
     * @return a list of UUIDs representing the movable pieces
 | 
			
		||||
     */
 | 
			
		||||
    public List<UUID> getPieces() {
 | 
			
		||||
        return pieces;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the list of target nodes for the moves.
 | 
			
		||||
     *
 | 
			
		||||
     * @return a list of integers representing the target nodes
 | 
			
		||||
     */
 | 
			
		||||
    public List<Integer> getMoveIndexe() {
 | 
			
		||||
        return moveIndexe;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the list indicating whether the target nodes are in the home area.
 | 
			
		||||
     *
 | 
			
		||||
     * @return a list of booleans, {@code true} if the target node is in the home area, {@code false} otherwise
 | 
			
		||||
     */
 | 
			
		||||
    public List<Boolean> getHomeMoves() {
 | 
			
		||||
        return homeMoves;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
package pp.mdga.notification;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Notification to inform the client about the selectable pieces.
 | 
			
		||||
 */
 | 
			
		||||
public class SelectablePiecesNotification extends Notification{
 | 
			
		||||
 | 
			
		||||
    private List<UUID> selectablePieces;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param selectablePieces
 | 
			
		||||
     */
 | 
			
		||||
    SelectablePiecesNotification(List<UUID> selectablePieces){
 | 
			
		||||
        this.selectablePieces = selectablePieces;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return List<UUID>
 | 
			
		||||
     */
 | 
			
		||||
    public List<UUID> getSelectablePieces(){
 | 
			
		||||
        return selectablePieces;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,49 @@
 | 
			
		||||
package pp.mdga.notification;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Notification for selecting pieces for swapcard.
 | 
			
		||||
 */
 | 
			
		||||
public class SelectableSwapNotification extends Notification{
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * List of UUIDs representing the player's own pieces available for selection.
 | 
			
		||||
     */
 | 
			
		||||
    private final List<UUID> ownPieces;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * List of UUIDs representing the opponent's pieces available for selection.
 | 
			
		||||
     */
 | 
			
		||||
    private final List<UUID> enemyPieces;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructs a notification for selecting pieces for swapcard.
 | 
			
		||||
     *
 | 
			
		||||
     * @param ownPieces   the list of the player's own pieces
 | 
			
		||||
     * @param enemyPieces the list of the opponent's pieces
 | 
			
		||||
     */
 | 
			
		||||
    public SelectableSwapNotification(List<UUID> ownPieces, List<UUID> enemyPieces) {
 | 
			
		||||
        this.ownPieces = ownPieces;
 | 
			
		||||
        this.enemyPieces = enemyPieces;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the list of the player's own pieces available for selection.
 | 
			
		||||
     *
 | 
			
		||||
     * @return a list of UUIDs representing the player's own pieces
 | 
			
		||||
     */
 | 
			
		||||
    public List<UUID> getOwnPieces() {
 | 
			
		||||
        return ownPieces;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the list of the opponent's pieces available for selection.
 | 
			
		||||
     *
 | 
			
		||||
     * @return a list of UUIDs representing the opponent's pieces
 | 
			
		||||
     */
 | 
			
		||||
    public List<UUID> getEnemyPieces() {
 | 
			
		||||
        return enemyPieces;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -15,7 +15,7 @@ public class SwapPieceNotification extends Notification {
 | 
			
		||||
     * @param firstPiece the UUID of the first piece that has been swapped.
 | 
			
		||||
     * @param secondPiece the UUID of the second piece that has been swapped.
 | 
			
		||||
     */
 | 
			
		||||
    SwapPieceNotification(UUID firstPiece, UUID secondPiece) {
 | 
			
		||||
    public SwapPieceNotification(UUID firstPiece, UUID secondPiece) {
 | 
			
		||||
        assert(!firstPiece.equals(secondPiece));
 | 
			
		||||
        this.firstPiece = firstPiece;
 | 
			
		||||
        this.secondPiece = secondPiece;
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,26 @@
 | 
			
		||||
package pp.mdga.notification;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.game.Color;
 | 
			
		||||
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
public class ThrowPieceNotification extends Notification{
 | 
			
		||||
 | 
			
		||||
    private UUID pieceId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * This constructor is used to create a new ThrowPieceNotification
 | 
			
		||||
     *
 | 
			
		||||
     * @param pieceId1 the pieceId1
 | 
			
		||||
     * @param pieceId2 the pieceId2
 | 
			
		||||
     * @param nodeIndex the nodeIndex
 | 
			
		||||
     * @param colorPiece2 the color
 | 
			
		||||
     */
 | 
			
		||||
    public ThrowPieceNotification(UUID pieceId) {
 | 
			
		||||
        this.pieceId = pieceId;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public UUID getPieceId() {
 | 
			
		||||
        return pieceId;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user