#pragma once #include "types.hpp" #include #include #include #include #include #include namespace dchat { class ContextMenuItem; using MenuItemClickCallbackFunc = std::function; class ContextMenuItem { public: ContextMenuItem(const std::string &text, MenuItemClickCallbackFunc clickCallbackFunc); sf::Text text; MenuItemClickCallbackFunc clickCallbackFunc; }; class ContextMenu { public: ContextMenu(); void addItem(const ContextMenuItem &item); void setPosition(const sf::Vector2f &position); void setVisible(bool visible); ContextMenuItem& getItemByIndex(usize index); void processEvent(const sf::Event &event); void draw(sf::RenderWindow &window); private: std::vector menuItems; sf::Vector2f position; int focusedItem; int pressedItem; bool visible; }; }