package com.christophdietze.jack.shared.board; public class MoveLegality { public static MoveLegality LEGAL_MOVE = new MoveLegality(true, null); public static MoveLegality BASIC_ILLEGAL_MOVE = newIllegalMove(null); public static MoveLegality IT_IS_WHITES_TURN = newIllegalMove("It is the white player's turn."); public static MoveLegality IT_IS_BLACKS_TURN = newIllegalMove("It is the black player's turn."); public static MoveLegality CANNOT_CAPTURE_OWN_PIECES = newIllegalMove("Cannot capture own pieces."); public static MoveLegality valueOf(boolean isLegal) { return isLegal ? LEGAL_MOVE : BASIC_ILLEGAL_MOVE; } private boolean isLegal; private String message; private MoveLegality(boolean isLegal, String message) { this.isLegal = isLegal; this.message = message; } private static MoveLegality newIllegalMove(String message) { return new MoveLegality(false, message); } public boolean isLegal() { return isLegal; } public void setLegal(boolean isLegal) { this.isLegal = isLegal; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public boolean hasMessage() { return message != null; } }