52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
#ifndef GAME_SCREEN_HPP
|
|
#define GAME_SCREEN_HPP
|
|
|
|
#include "board_widget.hpp"
|
|
#include "data.hpp"
|
|
#include "fading_caption.hpp"
|
|
#include "menu.hpp"
|
|
|
|
#include <unordered_map>
|
|
|
|
struct SDL_Renderer;
|
|
|
|
namespace game::ui
|
|
{
|
|
class GameScreen final : public bwidgets::Widget
|
|
{
|
|
bwidgets::Font* _font_big {nullptr};
|
|
std::string _font_file;
|
|
bwidgets::Font* _font_medium {nullptr};
|
|
Menu _menu;
|
|
|
|
void _load_font(int);
|
|
|
|
void _handle_geometry_change(const SDL_Rect&) noexcept override;
|
|
void _handle_renderer_change(bwidgets::Renderer*) override;
|
|
void _handle_rendering() override;
|
|
|
|
public:
|
|
BoardWidget board;
|
|
bwidgets::Caption caption_none;
|
|
FadingCaption caption_notification;
|
|
bwidgets::Caption caption_p1;
|
|
bwidgets::Caption caption_p2;
|
|
data::Player cur_player {data::Player::P1};
|
|
|
|
GameScreen();
|
|
~GameScreen() override;
|
|
|
|
auto font(const std::string&) -> GameScreen*;
|
|
|
|
auto handle_event(const SDL_Event&) -> GameScreen* override;
|
|
[[nodiscard]] auto size() const noexcept -> bwidgets::Size override;
|
|
|
|
[[nodiscard]] inline auto settings_event() const
|
|
{
|
|
return _menu.settings_event;
|
|
}
|
|
};
|
|
}
|
|
|
|
#endif
|