|
|
- #ifndef PIE_MENU_HPP
- #define PIE_MENU_HPP
-
- #include "ui.hpp"
- #include "tween.hpp"
- #include <functional>
- #include <vector>
-
- #include <emergent/emergent.hpp>
- using namespace Emergent;
-
- class PieMenu
- {
- public:
- PieMenu(Tweener* tweener);
-
- void resize();
-
- void addOption(Texture* backgroundTexture, Texture* iconTexture, std::function<void()> selectedCallback, std::function<void()> 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<float>* scaleUpTween;
- Tween<float>* scaleDownTween;
- float scale;
-
- UIContainer fullscreenContainer;
- UIContainer croppedContainer;
- UIContainer scalingContainer;
- std::vector<UIImage*> options;
- std::vector<UIImage*> icons;
- std::vector<std::function<void()>> selectedCallbacks;
- std::vector<std::function<void()>> 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
|