#pragma once #include "../model/board/board.hpp" #include "view.hpp" #include <SFML/Graphics.hpp> const int TILE_SIZE = 80; const int BOARD_SIZE = 8; const int WINDOW_SIZE = TILE_SIZE * BOARD_SIZE; class GUI : public View { public: GUI(); void show() override; Piece ask_about_promotion(); void update_board(const Board&, int8_t, std::vector<int8_t>) override; void notify_checkmate(Colour) override; void notify_stalemate(Colour) override; private: sf::RenderWindow window; sf::Texture textures[6][2]; sf::Sprite pieces[64]; sf::Font font; sf::Color colours[2] = {sf::Color(0xB88762FF), sf::Color(0xEDD6B0FF)}; sf::Color alt_colours[2] = {sf::Color(0xDCC34BFF), sf::Color(0xF6EB72FF)}; int show_popup( const std::string& message, const std::vector<std::string>& options ); void load_textures(); void handle_events(); void handle_click(int, int); void draw_board(int, std::vector<int8_t>); void draw_pieces(const Board&); void draw_annotation(int, int); };