Skip to content

Commit ee87ed6

Browse files
committed
1.0.3
1 parent 2c82102 commit ee87ed6

3 files changed

Lines changed: 51 additions & 14 deletions

File tree

changelog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# 1.0.3
2+
3+
* Fix bug in garage layer
4+
* Fix possible incompat
5+
16
# 1.0.2
27

38
* Fix bug

mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"bugfix"
1919
],
2020
"name": "Clickable Dots",
21-
"version": "v1.0.2",
21+
"version": "v1.0.3",
2222
"developer": "Zilko",
2323
"description": "Lets you click these page dots",
2424
"settings": {

src/main.cpp

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ using namespace geode::prelude;
55
class $modify(ProBoomScrollLayer, BoomScrollLayer) {
66

77
struct Fields {
8+
std::vector<CCMenuItemSpriteExtra*> m_buttonsArray;
89
std::unordered_map<CCSprite*, CCMenuItemSpriteExtra*> m_buttons;
910

1011
int m_currentPage = 0;
12+
13+
bool m_check = false;
14+
bool m_disable = false;
1115
};
1216

1317
void onDot(CCObject* sender) {
@@ -25,10 +29,21 @@ class $modify(ProBoomScrollLayer, BoomScrollLayer) {
2529
}
2630

2731
void updateButtons() {
28-
if (Mod::get()->getSettingValue<bool>("disable")) return;
32+
auto f = m_fields.self();
33+
34+
if (Mod::get()->getSettingValue<bool>("disable") || f->m_disable) return;
35+
if (getParent() && !f->m_check) {
36+
f->m_check = true;
37+
38+
if (typeinfo_cast<ListButtonBar*>(getParent()))
39+
f->m_disable = true;
40+
}
2941

3042
CCArrayExt<CCSprite*> dots = CCArrayExt<CCSprite*>(m_dots);
3143

44+
if (static_cast<int>(dots.size()) != static_cast<int>(f->m_buttonsArray.size()))
45+
addButtons();
46+
3247
if (dots.size() <= 0) return;
3348

3449
if (dots[0]->getPosition().x < 0 && Mod::get()->getSettingValue<bool>("fix-position")) {
@@ -42,8 +57,6 @@ class $modify(ProBoomScrollLayer, BoomScrollLayer) {
4257
dots[i]->setPositionX(startX + i * spacing);
4358
}
4459

45-
auto f = m_fields.self();
46-
4760
int page = 0;
4861

4962
for (CCSprite* dot : dots) {
@@ -54,6 +67,11 @@ class $modify(ProBoomScrollLayer, BoomScrollLayer) {
5467
CCMenuItemSpriteExtra* btn = f->m_buttons.at(dot);
5568
CCSprite* spr = static_cast<CCSprite*>(btn->getNormalImage());
5669

70+
if (f->m_disable) {
71+
btn->setVisible(false);
72+
continue;
73+
}
74+
5775
btn->setPosition(dot->getPosition());
5876
spr->setScale(dot->getScale());
5977
spr->setColor(dot->getColor());
@@ -65,6 +83,29 @@ class $modify(ProBoomScrollLayer, BoomScrollLayer) {
6583
}
6684
}
6785

86+
void addButtons() {
87+
auto f = m_fields.self();
88+
CCNode* menu = getChildByID("buttons-menu"_spr);
89+
90+
for (CCMenuItemSpriteExtra* btn : f->m_buttonsArray)
91+
btn->removeFromParentAndCleanup(true);
92+
93+
f->m_buttonsArray.clear();
94+
f->m_buttons.clear();
95+
96+
int i = 0;
97+
98+
for (CCSprite* dot : CCArrayExt<CCSprite*>(m_dots)) {
99+
CCMenuItemSpriteExtra* btn = CCMenuItemSpriteExtra::create(CCSprite::create("smallDot.png"), this, menu_selector(ProBoomScrollLayer::onDot));
100+
btn->setTag(i++);
101+
102+
menu->addChild(btn);
103+
104+
f->m_buttons[dot] = btn;
105+
f->m_buttonsArray.push_back(btn);
106+
}
107+
}
108+
68109
void updateDots(float dt) {
69110
BoomScrollLayer::updateDots(dt);
70111

@@ -84,16 +125,7 @@ class $modify(ProBoomScrollLayer, BoomScrollLayer) {
84125

85126
addChild(menu);
86127

87-
int i = 0;
88-
89-
for (CCSprite* dot : CCArrayExt<CCSprite*>(m_dots)) {
90-
CCMenuItemSpriteExtra* btn = CCMenuItemSpriteExtra::create(CCSprite::create("smallDot.png"), this, menu_selector(ProBoomScrollLayer::onDot));
91-
btn->setTag(i++);
92-
93-
menu->addChild(btn);
94-
95-
f->m_buttons[dot] = btn;
96-
}
128+
addButtons();
97129

98130
return true;
99131
}

0 commit comments

Comments
 (0)