42 lines
1.0 KiB
C++
42 lines
1.0 KiB
C++
#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);
|
|
};
|