now showing target squares of legal moves

This commit is contained in:
Karma Riuk 2025-02-06 19:11:30 +01:00
parent d08a5cca39
commit d8557d02df
2 changed files with 29 additions and 16 deletions

View File

@ -1,5 +1,7 @@
#include "gui.hpp"
#include "../model/utils/utils.hpp"
#include <SFML/Graphics/Color.hpp>
#include <SFML/System/Vector2.hpp>
@ -75,25 +77,37 @@ void GUI::draw_annotation(int file, int rank) {
}
}
void GUI::draw_board(int selected_square, std::vector<Move> legal_moves) {
// sf::Color alt_colours[2] = {
// sf::Color(0xF6EB72),
// sf::Color(0xDCC34B)
// }; // when selected
// sf::Color circle_colours[2] = {
// sf::Color(0xCCB897),
// sf::Color(0x9E7454)
// }; // legal moves
void GUI::draw_board(int selected_square, std::vector<Move> moves) {
sf::RectangleShape square(sf::Vector2f(TILE_SIZE, TILE_SIZE));
for (int rank = 0; rank < 8; ++rank) {
for (int file = 0; file < 8; ++file) {
int8_t index = Coords{file, rank}.to_index();
square.setPosition(file * TILE_SIZE, (7 - rank) * TILE_SIZE);
square.setFillColor(
(file + rank) % 2 == 0 ? colours[0] : colours[1]
);
if (index == selected_square)
square.setFillColor(
(file + rank) % 2 == 0 ? alt_colours[0] : alt_colours[1]
);
else
square.setFillColor(
(file + rank) % 2 == 0 ? colours[0] : colours[1]
);
window.draw(square);
draw_annotation(file, rank);
std::vector<int8_t> targets = to_target_square(moves);
if (std::find(targets.begin(), targets.end(), index)
!= targets.end()) {
float r = .15 * TILE_SIZE;
sf::CircleShape circle{r};
sf::Color c(0x00000055);
circle.setFillColor(c);
circle.setOrigin(r, r);
circle.setPosition(
(file + .5) * TILE_SIZE,
(7 - rank + .5) * TILE_SIZE
);
window.draw(circle);
}
}
}
}

View File

@ -24,9 +24,8 @@ class GUI : public View {
sf::Texture textures[6][2];
sf::Sprite pieces[64];
sf::Font font;
sf::Color colours[2] = {
sf::Color(0xB88762FF), sf::Color(0xEDD6B0FF)
}; // Light and dark squares
sf::Color colours[2] = {sf::Color(0xB88762FF), sf::Color(0xEDD6B0FF)};
sf::Color alt_colours[2] = {sf::Color(0xDCC34BFF), sf::Color(0xF6EB72FF)};
void load_textures();
void handle_events();