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

#ifndef __ABSTRACT_CHESS_MOVE_H__
#define __ABSTRACT_CHESS_MOVE_H__


#include <QString>
#include <AbstractChessBoard.h>


class AbstractChessMove
{
public:
    AbstractChessMove(AbstractChessBoard *board, ChessBoardPosition before, ChessBoardPosition after, ChessPieceType promotionType = Pawn);
    AbstractChessMove(AbstractChessBoard *board, QString notation);

    QString notation();
    ChessBoardPosition before();
    ChessBoardPosition after();
    ChessPieceType moved();
    ChessPieceType captured();
    bool took;
    bool castled;    
};


#endif // __ABSTRACT_CHESS_MOVE_H__


