Skip to content

Commit d80ce39

Browse files
committed
Moved Adding a button to a seperate function
1 parent ef0b585 commit d80ce39

File tree

1 file changed

+39
-26
lines changed

1 file changed

+39
-26
lines changed

src/main.cpp

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ class $modify(MyCCMenuItemSpriteExtra, CCMenuItemSpriteExtra) {
1818
}
1919
CCMenuItemSpriteExtra::selected();
2020
}
21+
22+
void activate() {
23+
log::debug("{}",rect().size);
24+
//log::debug("{}",m_fSizeMult);
25+
CCMenuItemSpriteExtra::activate();
26+
}
2127
};
2228

2329
/*
@@ -49,20 +55,17 @@ class $modify(MyEditLevelLayer, EditLevelLayer) {
4955
bool init(GJGameLevel* p1){
5056
if (!EditLevelLayer::init(p1)) return false;
5157
auto menu = static_cast<CCMenu*>(getChildByID("level-actions-menu"));
58+
auto ffff = static_cast<CCMenu*>(getChildByID("level-edit-menu"));
5259
if(!menu) {
5360
log::error("failed to find level-actions-menu");
5461
return true;
5562
}
56-
auto deleteBtn = static_cast<MyCCMenuItemSpriteExtra*>(menu->getChildByID("delete-button"));
57-
if(!deleteBtn){
58-
log::error("failed to find delete-button");
59-
return true;
60-
}
63+
6164

6265

6366
auto frames = CCArray::create();
6467
frames->retain();
65-
//
68+
6669
for(int i = 'A'; i<='T'; i++) { // the most terrible code ever
6770
auto frameName = fmt::format("HoldLoading{}.png"_spr, static_cast<char>(i));
6871
log::debug("{}",frameName);
@@ -72,50 +75,60 @@ class $modify(MyEditLevelLayer, EditLevelLayer) {
7275
log::warn("Failed to get the frame {}", frameName);
7376
}
7477
frames->addObject(frame);
75-
7678
//m_fields->m_animation->addSpriteFrame(CCSpriteFrameCache::get()->spriteFrameByName(ahhh));
7779
}
78-
7980
auto animation = CCAnimation::createWithSpriteFrames(frames, 0.1f);
8081

8182
//m_fields->m_animate = CCAnimate::create(m_fields->m_animation);
8283
m_fields->m_animation = animation;
8384
m_fields->m_frames=frames;
84-
auto gif = CCAnimatedSprite::createWithSpriteFrame(static_cast<CCSpriteFrame*>(frames->objectAtIndex(5)));
85-
auto fs =animation->getDuration();
86-
85+
86+
//auto fs =animation->getDuration();
8787

88-
auto selectSprite = CircleButtonSprite::create(gif, CircleBaseColor::Green, CircleBaseSize::Medium);
89-
//selectSprite->setTopRelativeScale(0.9);
9088

89+
MyEditLevelLayer::registerBtn("help-button", menu);
90+
MyEditLevelLayer::registerBtn("delete-button", menu);
91+
//MyEditLevelLayer::registerBtn("edit-button", ffff, CircleBaseSize::Large);
92+
MyEditLevelLayer::registerBtn("play-button", ffff, CircleBaseSize::Large);
93+
94+
return true;
95+
}
9196

97+
void registerBtn(std::string_view id,CCMenu* menu) {
98+
registerBtn(id, menu, CircleBaseSize::Medium);
99+
}
92100

93-
deleteBtn->setSelectedImage(selectSprite);
94-
//m_fields->m_deleteCallback = deleteBtn->m_pfnSelector;
95-
deleteBtn->setUserObject(new BtnParameters(deleteBtn->m_pfnSelector));
101+
void registerBtn(std::string_view id, CCMenu* menu, CircleBaseSize size){
102+
auto gif = CCAnimatedSprite::createWithSpriteFrame(static_cast<CCSpriteFrame*>(m_fields->m_frames->objectAtIndex(5)));
103+
auto selectSprite = CircleButtonSprite::create(gif, CircleBaseColor::Green, size);
104+
auto button = static_cast<MyCCMenuItemSpriteExtra*>(menu->getChildByID(id));
105+
if(!button){
106+
log::error("failed to find delete-button");
107+
return;
108+
}
109+
button->setSelectedImage(selectSprite);
110+
button->setUserObject(new BtnParameters(button->m_pfnSelector));
96111

97-
98-
deleteBtn->m_pfnSelector = menu_selector(MyEditLevelLayer::btnActivate);
99-
(deleteBtn->m_fields)->m_selectCallback = menu_selector(MyEditLevelLayer::btnSelect);
100-
return true;
112+
button->m_pfnSelector = menu_selector(MyEditLevelLayer::btnActivate);
113+
(button->m_fields)->m_selectCallback = menu_selector(MyEditLevelLayer::btnSelect);
101114
}
102115

103116
void btnActivate(CCObject* sender) {
104-
auto deleteBtn = static_cast<CCMenuItemSpriteExtra*>(sender);
105-
auto params = typeinfo_cast<BtnParameters*>(deleteBtn->getUserObject());
117+
auto button = static_cast<CCMenuItemSpriteExtra*>(sender);
118+
auto params = typeinfo_cast<BtnParameters*>(button->getUserObject());
106119
if(params && params->m_timer.elapsed() > 500) {
107-
((deleteBtn->m_pListener)->*(params->m_originalCallback))(this);
120+
((button->m_pListener)->*(params->m_originalCallback))(this);
108121
}
109122
}
110123

111124
void btnSelect(CCObject* sender){
112-
auto deleteBtn = static_cast<CCMenuItemSpriteExtra*>(sender);
113-
auto params = typeinfo_cast<BtnParameters*>(deleteBtn->getUserObject());
125+
auto button = static_cast<CCMenuItemSpriteExtra*>(sender);
126+
auto params = typeinfo_cast<BtnParameters*>(button->getUserObject());
114127
if(params){
115128
params->m_timer.reset();;
116129
}
117130

118-
CircleButtonSprite* sprite = typeinfo_cast<CircleButtonSprite*>(deleteBtn->getSelectedImage());
131+
CircleButtonSprite* sprite = typeinfo_cast<CircleButtonSprite*>(button->getSelectedImage());
119132
if(sprite) {
120133
auto animSprite = static_cast<CCAnimatedSprite*>(sprite->getTopNode());
121134
if (animSprite) {

0 commit comments

Comments
 (0)