#pragma once #include "components.hpp" #include "events.hpp" #include <guecs/ui.hpp> #include "textures.hpp" #include "levelmanager.hpp" namespace guecs { Clickable make_action(GameLevel& target, Events::GUI event); Clickable make_action(GameLevel& target, Events::GUI event, std::any data); struct GrabSource { DinkyECS::Entity world_entity; std::function<void()> commit; std::shared_ptr<sf::Sprite> sprite = nullptr; DinkyECS::Entity grab(); void setSprite(guecs::UI& gui, guecs::Entity gui_id); void move(sf::Vector2f pos); }; struct DropTarget { std::function<bool(DinkyECS::Entity world_entity)> commit; }; }