|
1 | 1 | #include "EditButtonBar.hpp" |
2 | 2 | #include "EditorUI.hpp" |
| 3 | +#include <Geode/ui/Button.hpp> |
3 | 4 |
|
4 | 5 | EditButtonBar* ETEditButtonBar::create(cocos2d::CCArray* objects, cocos2d::CCPoint position, int tab, bool hasCreateItems, int columns, int rows) { |
5 | 6 | auto ret = EditButtonBar::create(objects, position, tab, hasCreateItems, columns, rows); |
@@ -33,6 +34,11 @@ void ETEditButtonBar::setupChanges(int c, int r) { |
33 | 34 | m_scrollLayer->setPosition(getContentSize() / 2); |
34 | 35 | m_scrollLayer->unscheduleUpdate(); |
35 | 36 | m_scrollLayer->unschedule(schedule_selector(BoomScrollLayer::updateDots)); |
| 37 | + |
| 38 | + auto clickableDotsMenu = m_scrollLayer->getChildByID("zilko.clickable_dots/buttons-menu"); |
| 39 | + if (clickableDotsMenu) { |
| 40 | + clickableDotsMenu->setVisible(false); |
| 41 | + } |
36 | 42 |
|
37 | 43 | for (auto page : m_scrollLayer->m_pages->asExt<ButtonPage>()) { |
38 | 44 | page->setContentSize(getContentSize()); |
@@ -81,18 +87,32 @@ void ETEditButtonBar::setupChanges(int c, int r) { |
81 | 87 |
|
82 | 88 | auto count = m_pagesArray ? m_pagesArray->count() : 1; |
83 | 89 |
|
84 | | - fields->m_dots = CCSpriteBatchNode::create("smallDot.png", count); |
| 90 | + fields->m_dots = CCNode::create(); |
85 | 91 | fields->m_dots->setAnchorPoint({0.5f, 0.f}); |
86 | 92 | fields->m_dots->setContentSize({getContentWidth(), 5.f}); |
87 | | - fields->m_dots->setPositionX(getContentWidth() / 2); |
| 93 | + fields->m_dots->setPosition({getContentWidth() / 2, 0}); |
88 | 94 | fields->m_dots->setID("dots"_spr); |
89 | 95 |
|
90 | 96 | addChild(fields->m_dots); |
91 | 97 |
|
92 | 98 | for (int i = 0; i < count; i++) { |
93 | 99 | auto spr = CCSprite::create("smallDot.png"); |
94 | 100 | spr->setScale(0.5f); |
95 | | - fields->m_dots->addChild(spr); |
| 101 | + |
| 102 | + if (clickableDotsMenu) { |
| 103 | + auto btn = geode::Button::createWithNode(spr, [this] (auto sender) { |
| 104 | + goToPage(sender->getTag()); |
| 105 | + }); |
| 106 | + btn->setCascadeColorEnabled(true); |
| 107 | + btn->setCascadeOpacityEnabled(true); |
| 108 | + btn->setTag(i); |
| 109 | + btn->setZOrder(i); |
| 110 | + |
| 111 | + fields->m_dots->addChild(btn); |
| 112 | + } |
| 113 | + else { |
| 114 | + fields->m_dots->addChild(spr); |
| 115 | + } |
96 | 116 | } |
97 | 117 |
|
98 | 118 | if (spacerLeft && spacerRight) { |
@@ -122,7 +142,7 @@ void ETEditButtonBar::updatePage() { |
122 | 142 | auto fields = m_fields.self(); |
123 | 143 | if (!fields->m_dots) return; |
124 | 144 |
|
125 | | - auto arr = fields->m_dots->getChildrenExt<CCSprite>(); |
| 145 | + auto arr = fields->m_dots->getChildrenExt<CCNodeRGBA>(); |
126 | 146 |
|
127 | 147 | if (arr.empty()) return; |
128 | 148 |
|
|
0 commit comments