/*
 * =====================================================================================
 *
 *       Filename:  AbstractChessGame.h
 *
 *    Description:  
 *
 *        Version:  1.0
 *        Created:  22/02/2011 09:26:12
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  John Ryland (jryland), jryland@xiaofrog.com
 *        Company:  InvertedLogic
 *
 * =====================================================================================
 */

#ifndef __ABSTRACT_CHESS_GAME_H__
#define __ABSTRACT_CHESS_GAME_H__


#include <AbstractChessBoard.h>
#include <AbstractChessMove.h>


class AbstractChessGameData;


class AbstractChessGame
{
public:
    AbstractChessGame();
    ~AbstractChessGame();

    AbstractChessBoard *board();
    QList<AbstractChessMove*> moveHistory();

    bool whitesMove();
    
    bool blackBeenInCheck();
    bool blackKingMoved();
    bool blackCanCastle();
    
    bool whiteBeenInCheck();
    bool whiteKingMoved();
    bool whiteCanCastle();
private:
    AbstractChessGameData *d;
};


#endif // __ABSTRACT_CHESS_GAME_H__

