Coverage Summary for Class: Move (it.polimi.ingsw.Server.Controller)
Class |
Class, %
|
Method, %
|
Line, %
|
Move |
100%
(1/1)
|
100%
(5/5)
|
71,4%
(20/28)
|
package it.polimi.ingsw.Server.Controller;
import com.google.gson.annotations.Expose;
import it.polimi.ingsw.Server.Model.Board;
import it.polimi.ingsw.Server.Model.ObjectCard;
import it.polimi.ingsw.Server.Model.Shelf;
import java.util.List;
/**
* Move declaration, composed of list of coordinates and Shelf column
*/
public class Move {
@Expose
private int column;
@Expose
private List<ObjectCard> orderedCards = null;
@Expose
private List<Integer> x;
@Expose
private List<Integer> y;
@Expose(serialize = false, deserialize = false)
private Board board;
@Expose(serialize = false, deserialize = false)
private Shelf shelf;
/**
* Game's Move implementation
*
* @param column Library's column
* @param x List of Move coordinates (x)
* @param y List of Move coordinates (y)
* @param board Game's Board
* @param shelf Player's Shelf
*/
public Move(int column, List<Integer> x, List<Integer> y, Board board, Shelf shelf) {
this.column = column;
this.x = x;
this.y = y;
this.board = board;
this.shelf = shelf;
this.orderedCards = null;
}
/**
* Sets Move's Board and Shelf
*
* @param board Game's Board
* @param shelf Player's Shelf
*/
public void setBoardAndShelf(Board board, Shelf shelf) {
this.board = board;
this.shelf = shelf;
}
/**
* Takes card from Board
*
* @return action validity
*/
public boolean take() {
try {
if (orderedCards != null) {
if (board.valid(orderedCards))
board.takeFromBoard(orderedCards);
else return false;
} else {
if (board.validFromCoordinate(x, y))
orderedCards = board.takeFromBoardFromCoordinate(x, y);
else return false;
}
return true;
} catch (Exception ignored) {
return false;
}
}
/**
* Restores taken cards on the Board (when Move was Invalid)
*
* @throws Exception related to Model management
*/
public void restoreTaken() throws Exception {
board.restoreLastTaken();
}
/**
* Places taken cards in the Player's Library
*
* @return action validity
*/
public boolean place() {
try {
if (shelf.emptySpacesInColumn(column) >= orderedCards.size()) {
for (ObjectCard oc : orderedCards)
shelf.placeCard(oc, column);
return true;
} else return false;
} catch (Exception ignored) {
return false;
}
}
}