#pragma once #include #include #include "stats.hpp" #include #include "gui/overlay_ui.hpp" #include "gui/debug_ui.hpp" #include "raycaster.hpp" #include namespace gui { class MainUI { public: int $compass_dir = 0; bool $needs_render = true; bool $mind_reading = false; sf::Clock $clock; sf::RenderWindow& $window; OverlayUI $overlay_ui; std::shared_ptr $rayview; MainUI(sf::RenderWindow& window); void mouse(int x, int y, guecs::Modifiers mods); void debug(); void render_debug(); void plan_rotate(int dir, float amount); std::optional play_rotate(); std::optional play_move(); Point plan_move(int dir, bool strafe); void abort_plan(); void update_level(); void init(); void render(); void dirty(); lel::Cell overlay_cell(const std::string& name); void dead_entity(DinkyECS::Entity entity); void toggle_mind_reading(); void render_mind_reading(); }; }