@@ -10,6 +10,7 @@ class $modify(MyCCMenuItemSpriteExtra, CCMenuItemSpriteExtra) {
1010public:
1111 struct Fields {
1212 SEL_MenuHandler m_selectCallback = nullptr ;
13+ SEL_MenuHandler m_originalCallback = nullptr ;
1314 };
1415
1516 void selected () {
@@ -21,19 +22,10 @@ class $modify(MyCCMenuItemSpriteExtra, CCMenuItemSpriteExtra) {
2122
2223 void activate () {
2324 log::debug (" {}" ,rect ().size );
24- // log::debug("{}",m_fSizeMult);
2525 CCMenuItemSpriteExtra::activate ();
2626 }
2727};
2828
29- /*
30- Things in deleteBtn we need to access:
31- gif sprite
32- timer
33- original callback
34- */
35- // wtf are even c++ structs
36- // are they literally just objects but we have to be compatible with c code somehow and public default
3729struct BtnParameters : public CCObject {
3830 SEL_MenuHandler m_originalCallback;
3931 utils::Timer<std::chrono::high_resolution_clock> m_timer;
@@ -48,8 +40,7 @@ struct BtnParameters: public CCObject {
4840class $modify(MyEditLevelLayer, EditLevelLayer) {
4941 struct Fields {
5042 CCArray* m_frames;
51- CCAnimation* m_animation;
52- // CCAnimate* m_animate;
43+ utils::Timer<std::chrono::high_resolution_clock>* m_timer = new utils::Timer();
5344 };
5445
5546 bool init (GJGameLevel* p1){
@@ -61,12 +52,10 @@ class $modify(MyEditLevelLayer, EditLevelLayer) {
6152 return true ;
6253 }
6354
64-
65-
6655 auto frames = CCArray::create ();
6756 frames->retain ();
6857
69- for (int i = ' A' ; i<=' T' ; i++) { // the most terrible code ever
58+ for (int i = ' A' ; i<=' T' ; i++) {
7059 auto frameName = fmt::format (" HoldLoading{}.png" _spr, static_cast <char >(i));
7160 log::debug (" {}" ,frameName);
7261
@@ -78,18 +67,15 @@ class $modify(MyEditLevelLayer, EditLevelLayer) {
7867 // m_fields->m_animation->addSpriteFrame(CCSpriteFrameCache::get()->spriteFrameByName(ahhh));
7968 }
8069 auto animation = CCAnimation::createWithSpriteFrames (frames, 0 .1f );
81-
82- // m_fields->m_animate = CCAnimate::create(m_fields->m_animation);
83- m_fields->m_animation = animation;
8470 m_fields->m_frames =frames;
8571
86- // auto fs =animation->getDuration();
8772
8873
8974 MyEditLevelLayer::registerBtn (" help-button" , menu);
9075 MyEditLevelLayer::registerBtn (" delete-button" , menu);
9176 // MyEditLevelLayer::registerBtn("edit-button", ffff, CircleBaseSize::Large);
9277 MyEditLevelLayer::registerBtn (" play-button" , ffff, CircleBaseSize::Large);
78+ MyEditLevelLayer::registerBtn (" edit-button" , ffff, CircleBaseSize::Large);
9379
9480 return true ;
9581 }
@@ -108,31 +94,29 @@ class $modify(MyEditLevelLayer, EditLevelLayer) {
10894 }
10995 button->setSelectedImage (selectSprite);
11096 button->setUserObject (new BtnParameters (button->m_pfnSelector ));
111-
97+ button-> m_fields -> m_originalCallback = button-> m_pfnSelector ;
11298 button->m_pfnSelector = menu_selector (MyEditLevelLayer::btnActivate);
11399 (button->m_fields )->m_selectCallback = menu_selector (MyEditLevelLayer::btnSelect);
114100 }
115101
116102 void btnActivate (CCObject* sender) {
117- auto button = static_cast <CCMenuItemSpriteExtra *>(sender);
103+ auto button = static_cast <MyCCMenuItemSpriteExtra *>(sender);
118104 auto params = typeinfo_cast<BtnParameters*>(button->getUserObject ());
119- if (params && params ->m_timer . elapsed () > 500 ) {
120- ((button->m_pListener )->*(params ->m_originalCallback ))(this );
105+ if (m_fields-> m_timer && m_fields ->m_timer -> elapsed () > 500 ) {
106+ ((button->m_pListener )->*(button-> m_fields ->m_originalCallback ))(this );
121107 }
122108 }
123109
124110 void btnSelect (CCObject* sender){
125111 auto button = static_cast <CCMenuItemSpriteExtra*>(sender);
126- auto params = typeinfo_cast<BtnParameters*>(button->getUserObject ());
127- if (params){
128- params->m_timer .reset ();;
112+ if (m_fields->m_timer ){
113+ m_fields->m_timer ->reset ();
129114 }
130115
131116 CircleButtonSprite* sprite = typeinfo_cast<CircleButtonSprite*>(button->getSelectedImage ());
132117 if (sprite) {
133118 auto animSprite = static_cast <CCAnimatedSprite*>(sprite->getTopNode ());
134119 if (animSprite) {
135-
136120 animSprite->stopAllActions ();
137121 animSprite->runAction (CCAnimate::create (CCAnimation::createWithSpriteFrames (m_fields->m_frames , 0 .025f )));
138122 }
0 commit comments