/**
 * interface Definitions
 *
 * Contains constants used by multiple classes (like values of pieces)
 *
 * @author: Jonatan Pettersson
 * Created:	2006-12-14
 * Last update: 2006-12-14
 */

public interface Definitions
{
	// Constants for type of move
	public static final int ORDINARY_MOVE = 0;
	public static final int SHORT_CASTLE = 1;
	public static final int LONG_CASTLE = 2;
	public static final int EN_PASSANT = 3;
	public static final int PROMOTION_QUEEN = 4;
	public static final int PROMOTION_ROOK = 5;
	public static final int PROMOTION_BISHOP = 6;
	public static final int PROMOTION_KNIGHT = 7;
	// END special moves constans

	// Evaluation constants
	public static final int QUEEN_VALUE = 900;
	public static final int ROOK_VALUE = 500;
	public static final int BISHOP_VALUE = 300;
	public static final int KNIGHT_VALUE = 300;
	public static final int PAWN_VALUE = 100;
	public static final int MATE_VALUE = 100000;
	public static final int DRAW_VALUE = 0;
	// END evaluation constants

	// Side to move
	public static final int WHITE_TO_MOVE = 1;
	public static final int BLACK_TO_MOVE = -1;
	// END side to move

	// Constants for pieces
	public static final int W_KING = 1;
	public static final int W_QUEEN = 2;
	public static final int W_ROOK = 3;
	public static final int W_BISHOP = 4;
	public static final int W_KNIGHT = 5;
	public static final int W_PAWN = 6;

	public static final int B_KING = -1;
	public static final int B_QUEEN = -2;
	public static final int B_ROOK = -3;
	public static final int B_BISHOP = -4;
	public static final int B_KNIGHT = -5;
	public static final int B_PAWN = -6;

	public static final int EMPTY_SQUARE = 0;
	// END piece constants

	// Constants for castling availability
	public static final int CASTLE_NONE = 0;
	public static final int CASTLE_SHORT = 1;
	public static final int CASTLE_LONG = 2;
	public static final int CASTLE_BOTH = 3;
	// END Castling availability constans
	
}
