#pragma once #include #include #include #include #include #include "point.hpp" #include using ftxui::Canvas, ftxui::Screen; constexpr int VIDEO_X = 1600; constexpr int VIDEO_Y = 900; constexpr int MIN_FONT_SIZE = 20; constexpr int MAX_FONT_SIZE = 140; constexpr int GAME_MAP_X = 90; constexpr int GAME_MAP_Y = 90; constexpr int GAME_MAP_POS = 600; constexpr int UI_FONT_SIZE=30; constexpr int BASE_MAP_FONT_SIZE=90; enum class Value { BLACK=0, DARK_DARK, DARK_MID, DARK_LIGHT, MID, LIGHT_DARK, LIGHT_MID, LIGHT_LIGHT, WHITE, TRANSPARENT }; struct SFMLRender { sf::RenderWindow $window; int $map_font_size; float $line_spacing; std::unordered_map $sprites; sf::Font $font; sf::Texture $font_texture; sf::Glyph $base_glyph; Canvas& $canvas; Screen& $map_screen; Screen& $screen; sf::Text $ui_text; std::wstring_convert> $converter; SFMLRender(Canvas &canvas, Screen &map_screen, Screen &screen); // disable copy SFMLRender(SFMLRender &other) = delete; sf::Color color(int val); sf::Color color(Value val); sf::Sprite &get_text_sprite(wchar_t tile); bool resize_map(int new_size); void draw_screen(bool clear=true, float map_off_x=0.0f, float map_off_y=0.0f); bool poll_event(sf::Event &event) { return $window.pollEvent(event); } void close() { return $window.close(); } bool is_open() { return $window.isOpen(); } int font_size() { return $map_font_size; } };