-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtiles.cpp
More file actions
98 lines (81 loc) · 2.54 KB
/
tiles.cpp
File metadata and controls
98 lines (81 loc) · 2.54 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include "boardsettings.h"
#include "tiles.h"
#include "pieces.h"
Tile::Tile() {}
Tile::Tile(int r, int c, int m) : row(r), column(c), me(m) {
base_color = (row % 2 == column % 2) ? 0 : 1;
color = (base_color == 0) ? TILE_BLACK : TILE_WHITE;
rect.setSize(sf::Vector2f(TILESIZE, TILESIZE));
rect.setPosition(sf::Vector2f(TILESIZE * column, TILESIZE * ((me == 1) ? row : 7 - row)));
rect.setFillColor(color);
}
void Tile::select() {
selected = true;
color = (base_color == 0) ? TILE_BLACK_SELECT : TILE_WHITE_SELECT;
rect.setFillColor(color);
}
void Tile::deselect() {
selected = false;
if (recentHighlight) {
highlightRecent();
}
else if (checked) {
highlightCheck();
}
else {
color = (base_color == 0) ? TILE_BLACK : TILE_WHITE;
}
rect.setFillColor(color);
}
void Tile::highlightMove() {
color = (base_color == 0) ? TILE_BLACK_MOVEABLE : TILE_WHITE_MOVEABLE;
rect.setFillColor(color);
}
void Tile::unhighlightMove() {
if (recentHighlight) {
highlightRecent();
}
else if (checked) {
highlightCheck();
}
else {
color = (base_color == 0) ? TILE_BLACK : TILE_WHITE;
}
rect.setFillColor(color);
}
void Tile::highlightRecent() {
recentHighlight = true;
color = (base_color == 0) ? TILE_BLACK_RECENT : TILE_WHITE_RECENT;
rect.setFillColor(color);
}
void Tile::unhighlightRecent() {
recentHighlight = false;
color = (base_color == 0) ? TILE_BLACK : TILE_WHITE;
rect.setFillColor(color);
}
void Tile::highlightCheck() {
checked = true;
color = (base_color == 0) ? TILE_BLACK_CHECK : TILE_WHITE_CHECK;
rect.setFillColor(color);
}
void Tile::unhighlightCheck() {
checked = false;
color = (base_color == 0) ? TILE_BLACK : TILE_WHITE;
rect.setFillColor(color);
}
void Tile::highlightCheckmate() {
color = TILE_CHECKMATE;
rect.setFillColor(color);
}
PromotionTile::PromotionTile(int r, int c, Tile* b) {
row = r;
column = c;
base_tile = b;
me = base_tile->me;
base_color = (row % 2 == column % 2) ? 0 : 1;
color = (base_color == 0) ? TILE_BLACK_MOVEABLE : TILE_WHITE_MOVEABLE;
rect.setSize(sf::Vector2f(TILESIZE / 2, TILESIZE / 2));
rect.setPosition(sf::Vector2f((base_tile->column * TILESIZE) + (TILESIZE / 2) * column, (((me == 1) ? base_tile->row : 7 - base_tile->row) * TILESIZE) + (TILESIZE / 2) * row));
rect.setFillColor(color);
promotion_tile = true;
}