#pragma once #include "levelmanager.hpp" #include "constants.hpp" #include #include "textures.hpp" #include #include "gui/ritual_ui.hpp" #include "gui/guecstra.hpp" namespace gui { class StatusUI { public: guecs::UI $gui; std::unordered_map $slots; GameLevel $level; ritual::UI $ritual_ui; DinkyECS::Entity $selected_entity; StatusUI(GameLevel level); void select_ritual(); void update_level(GameLevel &level); bool mouse(float x, float y, bool hover); void init(); void render(sf::RenderWindow &window); void update(); bool place_slot(DinkyECS::Entity gui_id); guecs::GrabSource& get_grab_source(DinkyECS::Entity entity); bool has_grab_source(DinkyECS::Entity gui_id); std::optional begin_grab(DinkyECS::Entity slot); void commit_grab(DinkyECS::Entity slot_id); guecs::DropTarget& get_drop_target(DinkyECS::Entity gui_id); void begin_drop(DinkyECS::Entity entity); bool commit_drop(DinkyECS::Entity entity); }; }