#pragma once #include #include #include #include #define MAX_MENU_COUNT 1024 class Menu { public: Menu(); struct MenuOption_t { std::string name; bool open; }; struct MenuItem_t { void (*drawHandler)(void* ctx); void* ctx; ModuleManager::Instance* inst; }; void registerEntry(std::string name, void (*drawHandler)(void* ctx), void* ctx = NULL, ModuleManager::Instance* inst = NULL); void removeEntry(std::string name); bool draw(bool updateStates); std::vector order; bool locked = false; private: bool isInOrderList(std::string name); bool menuClicked = false; std::string clickedMenuName = ""; std::string draggedMenuName = ""; int insertBefore = -1; std::string insertBeforeName = ""; int draggedId = 0; MenuOption_t draggedOpt; std::map items; float headerTops[MAX_MENU_COUNT]; int optionIDs[MAX_MENU_COUNT]; };