/*
 * =====================================================================================
 *
 *       Filename:  AbstractChessPiece.h
 *
 *    Description:  Representation of a chess piece
 *
 *        Version:  1.0
 *        Created:  21/02/2011 07:41:33
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  John Ryland (jryland), jryland@xiaofrog.com
 *        Company:  InvertedLogic
 *
 * =====================================================================================
 */

#ifndef __ABSTRACT_CHESS_PIECE_H__
#define __ABSTRACT_CHESS_PIECE_H__


enum ChessPieceType
{
    Pawn,
    Bishop,
    Knight,
    Rook,
    Queen,
    King
};


enum ChessPieceColor
{
    White,
    Black
};


struct ChessBoardPosition
{
    unsigned int rank : 3;
    unsigned int file : 3;
};


class AbstractChessPiece
{
public:
    AbstractChessPiece(ChessPieceType type, ChessPieceColor color, int rank, int file);
    ~AbstractChessPiece();
    ChessPieceType type;
    ChessPieceColor color;
    ChessBoardPosition position;
};


#endif // __ABSTRACT_CHESS_PIECE_H__


