package rules; import java.io.Serializable; import models.Game; import models.Piece; public class ObjectivePiece implements Serializable { public enum ObjectivePieceTypes { CLASSIC, NO_OBJECTIVE, CUSTOM_OBJECTIVE; } /** * */ private static final long serialVersionUID = -1220279533086251233L; public ObjectivePiece(ObjectivePieceTypes type, String objectivePieceName) { mObjectivePieceType = type; mObjectivePieceName = objectivePieceName; } public ObjectivePiece(ObjectivePieceTypes type) { this(type, Messages.getString("king")); //$NON-NLS-1$ } public ObjectivePiece() { this(ObjectivePieceTypes.NO_OBJECTIVE, null); } public ObjectivePieceTypes getObjectivePieceType() { return mObjectivePieceType; } public Piece getObjectivePiece(boolean isBlack) { switch (mObjectivePieceType) { case CLASSIC: return classicObjectivePiece(isBlack); case CUSTOM_OBJECTIVE: return customObjectivePiece(isBlack); case NO_OBJECTIVE: default: return null; } } public void setGame(Game game) { mGame = game; } public String getObjectivePieceName() { return mObjectivePieceName; } private Piece classicObjectivePiece(boolean isBlack) { if (isBlack) { for (Piece piece : mGame.getBlackTeam()) { if (piece.getName().equals(Messages.getString("king"))) //$NON-NLS-1$ return piece; } } else { for (Piece piece : mGame.getWhiteTeam()) { if (piece.getName().equals(Messages.getString("king"))) //$NON-NLS-1$ return piece; } } return null; } private Piece customObjectivePiece(boolean isBlack) { if (isBlack) { for (Piece piece : mGame.getBlackTeam()) { if (piece.getName().equals(mObjectivePieceName)) return piece; } } else { for (Piece piece : mGame.getWhiteTeam()) { if (piece.getName().equals(mObjectivePieceName)) return piece; } } return null; } private Game mGame; private String mObjectivePieceName; private ObjectivePieceTypes mObjectivePieceType; }