11#include < Geode/Geode.hpp>
2- #include " SelectCallback.hpp"
3-
2+ #include " HoldButtonManager.hpp"
43
54using namespace geode ::prelude;
65
7- #include < Geode/modify/CCMenuItemSpriteExtra.hpp>
8- class $modify(MyCCMenuItemSpriteExtra, CCMenuItemSpriteExtra) {
9- public:
10- struct Fields {
11- SEL_MenuHandler m_selectCallback = nullptr ;
12- SEL_MenuHandler m_originalCallback = nullptr ;
13- };
14-
15- void selected () {
16- if (m_fields->m_selectCallback ){
17- (m_pListener->*(m_fields->m_selectCallback ))(this );
18- }
19- CCMenuItemSpriteExtra::selected ();
20- }
21-
22- void activate () {
23- log::debug (" {}" ,rect ().size );
24- CCMenuItemSpriteExtra::activate ();
25- }
6+ #include < Geode/modify/CCScene.hpp>
7+ class $modify(MyCCScene, CCScene){
8+ // bool init(){
9+ // if(!CCScene::init()) return false;
10+ // //log::debug("{}",this->getChildren()->count());
11+ // auto btnManager = HoldButtonManager::get();
12+ // btnManager->registerBtn("help-button", this);
13+ // btnManager->registerBtn("delete-button", this);
14+ // //MyEditLevelLayer::registerBtn("edit-button", ffff, CircleBaseSize::Large);
15+ // btnManager->registerBtn("play-button", this, CircleBaseSize::Large);
16+ // btnManager->registerBtn("edit-button", this, CircleBaseSize::Large);
17+ // return true;
18+ // }
19+ /* CCScene* create(){
20+ auto ret = CCScene::create();
21+
22+ auto btnManager = HoldButtonManager::get();
23+ btnManager->registerBtn("help-button", this);
24+ btnManager->registerBtn("delete-button", this);
25+ //MyEditLevelLayer::registerBtn("edit-button", ffff, CircleBaseSize::Large);
26+ btnManager->registerBtn("play-button", this, CircleBaseSize::Large);
27+ btnManager->registerBtn("edit-button", this, CircleBaseSize::Large);
28+ return ret;
29+ }*/
2630};
2731
28- struct BtnParameters : public CCObject {
29- SEL_MenuHandler m_originalCallback;
30- utils::Timer<std::chrono::high_resolution_clock> m_timer;
31- BtnParameters (SEL_MenuHandler callback) : m_originalCallback(callback){
32- m_timer = utils::Timer ();
33- this ->autorelease ();
32+ #include < Geode/modify/CCLayer.hpp>
33+ class $modify(MyCCLayer, CCLayer) {
34+ void onEnterTransitionDidFinish () {
35+ auto parent = typeinfo_cast<CCScene*>(getParent ());
36+ if (!parent){
37+ return ;
38+ }
39+ if (this ->getID () == " " ){
40+ return ;
41+ }
42+ log::debug (" This is from the {} with {} children" , this ->getID (), this ->getChildrenCount ());
43+ // auto node = typeinfo_cast<CCTransitionFade
44+ auto btnManager = HoldButtonManager::get ();
45+ btnManager->registerBtn (" help-button" , this );
46+ btnManager->registerBtn (" delete-button" , this );
47+ // MyEditLevelLayer::registerBtn("edit-button", ffff, CircleBaseSize::Large);
48+ btnManager->registerBtn (" play-button" , this , CircleBaseSize::Large);
49+ btnManager->registerBtn (" edit-button" , this , CircleBaseSize::Large);
50+ log::debug (" this should fail" ); // but hopefully not crash
51+ btnManager->registerBtn (" pause-button" , this );
3452 }
53+ /* bool init(){
54+ if(!CCLayer::init()) return false;
55+ log::debug("yah");
56+ return true;
57+ }*/
3558};
3659
37-
38- #include < Geode/modify/EditLevelLayer.hpp>
60+ /* #include <Geode/modify/EditLevelLayer.hpp>
3961class $modify(MyEditLevelLayer, EditLevelLayer) {
40- struct Fields {
41- CCArray* m_frames;
42- utils::Timer<std::chrono::high_resolution_clock>* m_timer = new utils::Timer();
43- };
4462
4563 bool init(GJGameLevel* p1){
4664 if (!EditLevelLayer::init(p1)) return false;
65+
4766 auto menu = static_cast<CCMenu*>(getChildByID("level-actions-menu"));
4867 auto ffff = static_cast<CCMenu*>(getChildByID("level-edit-menu"));
49- if (!menu) {
50- log::error (" failed to find level-actions-menu" );
51- return true ;
52- }
53-
54- auto frames = CCArray::create ();
55- frames->retain ();
56-
57- for (int i = ' A' ; i<=' T' ; i++) {
58- auto frameName = fmt::format (" HoldLoading{}.png" _spr, static_cast <char >(i));
59- log::debug (" {}" ,frameName);
60-
61- auto frame = CCSpriteFrameCache::get ()->spriteFrameByName (frameName.c_str ());
62- if (!frame) {
63- log::warn (" Failed to get the frame {}" , frameName);
64- }
65- frames->addObject (frame);
66- // m_fields->m_animation->addSpriteFrame(CCSpriteFrameCache::get()->spriteFrameByName(ahhh));
67- }
68- auto animation = CCAnimation::createWithSpriteFrames (frames, 0 .1f );
69- m_fields->m_frames =frames;
70-
7168
7269
73- MyEditLevelLayer::registerBtn (" help-button" , menu);
74- MyEditLevelLayer::registerBtn (" delete-button" , menu);
70+ auto btnManager = HoldButtonManager::get();
71+ btnManager->registerBtn("help-button", this);
72+ btnManager->registerBtn("delete-button", this);
7573 //MyEditLevelLayer::registerBtn("edit-button", ffff, CircleBaseSize::Large);
76- MyEditLevelLayer:: registerBtn (" play-button" , ffff , CircleBaseSize::Large);
77- MyEditLevelLayer:: registerBtn (" edit-button" , ffff , CircleBaseSize::Large);
74+ btnManager-> registerBtn("play-button", this , CircleBaseSize::Large);
75+ btnManager-> registerBtn("edit-button", this , CircleBaseSize::Large);
7876
7977 return true;
8078 }
81-
82- void registerBtn (std::string_view id,CCMenu* menu) {
83- registerBtn (id, menu, CircleBaseSize::Medium);
84- }
85-
86- void registerBtn (std::string_view id, CCMenu* menu, CircleBaseSize size){
87- auto gif = CCAnimatedSprite::createWithSpriteFrame (static_cast <CCSpriteFrame*>(m_fields->m_frames ->objectAtIndex (5 )));
88- auto selectSprite = CircleButtonSprite::create (gif, CircleBaseColor::Green, size);
89- auto button = static_cast <MyCCMenuItemSpriteExtra*>(menu->getChildByID (id));
90- if (!button){
91- log::error (" failed to find delete-button" );
92- return ;
93- }
94- button->setSelectedImage (selectSprite);
95- button->setUserObject (new BtnParameters (button->m_pfnSelector ));
96- button->m_fields ->m_originalCallback = button->m_pfnSelector ;
97- button->m_pfnSelector = menu_selector (MyEditLevelLayer::btnActivate);
98- (button->m_fields )->m_selectCallback = menu_selector (MyEditLevelLayer::btnSelect);
99- }
100-
101- void btnActivate (CCObject* sender) {
102- auto button = static_cast <MyCCMenuItemSpriteExtra*>(sender);
103- auto params = typeinfo_cast<BtnParameters*>(button->getUserObject ());
104- if (m_fields->m_timer && m_fields->m_timer ->elapsed () > 500 ) {
105- ((button->m_pListener )->*(button->m_fields ->m_originalCallback ))(this );
106- }
107- }
108-
109- void btnSelect (CCObject* sender){
110- auto button = static_cast <CCMenuItemSpriteExtra*>(sender);
111- if (m_fields->m_timer ){
112- m_fields->m_timer ->reset ();
113- }
114-
115- CircleButtonSprite* sprite = typeinfo_cast<CircleButtonSprite*>(button->getSelectedImage ());
116- if (sprite) {
117- auto animSprite = static_cast <CCAnimatedSprite*>(sprite->getTopNode ());
118- if (animSprite) {
119- animSprite->stopAllActions ();
120- animSprite->runAction (CCAnimate::create (CCAnimation::createWithSpriteFrames (m_fields->m_frames , 0 .025f )));
121- }
122- }
123- }
124- };
79+ };*/
0 commit comments