#ifndef PIE_MENU_HPP #define PIE_MENU_HPP #include "ui.hpp" #include "tween.hpp" #include #include #include using namespace Emergent; class PieMenu { public: PieMenu(Tweener* tweener); void resize(); void addOption(Texture2D* backgroundTexture, Texture2D* iconTexture, std::function selectedCallback, std::function deselectedCallback); void select(std::size_t index); void deselect(std::size_t index); const UIContainer* getContainer() const; UIContainer* getContainer(); void mouseMoved(int x, int y); void mouseButtonPressed(int button, int x, int y); void mouseButtonReleased(int button, int x, int y); void setScale(float scale); private: void highlight(std::size_t index); void unhighlight(std::size_t index); Tweener* tweener; Tween* scaleUpTween; Tween* scaleDownTween; float scale; UIContainer fullscreenContainer; UIContainer croppedContainer; UIContainer scalingContainer; std::vector options; std::vector icons; std::vector> selectedCallbacks; std::vector> deselectedCallbacks; std::size_t selectionIndex; bool dragging; Vector2 dragStart; std::size_t highlightedIndex; }; inline const UIContainer* PieMenu::getContainer() const { return &fullscreenContainer; } inline UIContainer* PieMenu::getContainer() { return &fullscreenContainer; } #endif // PIE_MENU_HPP