-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMovement.h
69 lines (53 loc) · 1.29 KB
/
Movement.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef MOVEMENT_H
#define MOVEMENT_H
#include <QVector>
#include <unordered_map>
#include <QString>
namespace Chess{
enum MovementFlagsEnum
{
NO_FLAG = 0,
NORMALMOVE_FLAG = 1,
KINGSIDECASTLING_FLAG = 2,
QUEENSIDECASTLING_FLAG = 4,
CHECK_FLAG = 8,
POWERMOVE_FLAG = 16,
CAPTURE_FLAG = 32
};
Q_DECLARE_FLAGS( MovementFlags, MovementFlagsEnum )
Q_DECLARE_OPERATORS_FOR_FLAGS( MovementFlags )
namespace ChessComponents {
namespace PlayField {
class Board;
//class ChessPiece;
}
namespace ChessPieces {
class ChessPiece;
}
}
namespace GameLogic {
namespace Movements {
using namespace Chess::ChessComponents::PlayField;
using namespace Chess::ChessComponents::ChessPieces;
using namespace std;
class Movement
{
public:
Movement( Board* const board = 0, MovementFlags flags = NORMALMOVE_FLAG );
virtual ~Movement();
virtual bool doMove() = 0;
virtual bool undoMove() = 0;
virtual QString toChessNotation() = 0;
void setFlags( const MovementFlags& flags );
MovementFlags flags() const;
void setCapturedPiece( ChessPiece* chessPiece );
ChessPiece* capturedPiece() const;
protected:
Board* m_board;
Chess::MovementFlags m_flags;
ChessPiece* m_capturedPiece;
};
}
}
}
#endif // MOVEMENT_H