11#include < Geode/Geode.hpp>
22#include " HoldButtonManager.hpp"
33
4- HoldButtonManager* HoldButtonManager::instance = nullptr ;
4+ // HoldButtonManager* HoldButtonManager::instance = nullptr;
55
66
7- void HoldButtonManager::registerWithNode (CCNode* node ,CircleBaseSize size) { // final goal is to make user pass in a basedButtonSprite
7+ HoldButtonManager* HoldButtonManager::get () {
8+ static HoldButtonManager* instance = nullptr ;
9+ if (!instance){
10+ instance = new HoldButtonManager ();
11+ // log::debug("this should only happen once");
12+ // log::debug("afterafterafter{}", instance->m_animate->retainCount());
13+ }
14+ log::debug (" afterafterafter{}" , instance->m_animate ->retainCount ());
15+ return instance;
16+ }
17+
18+ void HoldButtonManager::registerWithNode (CCNode* node) { // final goal is to make user pass in a basedButtonSprite
819 auto button = static_cast <MyCCMenuItemSpriteExtra*>(node);
920 if (!button){
1021 log::error (" failed to cast {}" , node->getID ());
@@ -13,7 +24,7 @@ void HoldButtonManager::registerWithNode(CCNode* node ,CircleBaseSize size) { //
1324 auto gif = CCAnimatedSprite::createWithSpriteFrame (
1425 CCSpriteFrameCache::get ()->spriteFrameByName (" HoldLoadingA.png" _spr)
1526 );
16- auto selectSprite = CircleButtonSprite::create (gif, CircleBaseColor::Green, size );
27+ auto selectSprite = CircleButtonSprite::create (gif, CircleBaseColor::Green, CircleBaseSize::Medium );
1728
1829 button->setSelectedImage (selectSprite);
1930 button->m_fields ->m_originalCallback = button->m_pfnSelector ;
@@ -25,38 +36,26 @@ void HoldButtonManager::registerWithNode(CCNode* node ,CircleBaseSize size) { //
2536 button->m_fields ->m_activateCallback = std::bind (&HoldButtonManager::btnActivate, this , std::placeholders::_1);
2637}
2738
28- void HoldButtonManager::registerBtn (std::string_view id, CCNode* menu, CircleBaseSize size ){
39+ void HoldButtonManager::registerBtn (std::string_view id, CCNode* menu){
2940 auto node = menu->getChildByIDRecursive (id);
3041 if (!node) {
3142 // log::debug("failed to find {}", id);
3243 return ;
3344 }
34- /* auto button = static_cast<MyCCMenuItemSpriteExtra*>(node); // I feel like this should break but it doesn't somehow
35- if(!button){
36- log::error("failed to cast {}", id);
37- return;
38- }*/
3945 log::debug (" Making {} a hold button" , id);
40- registerWithNode (node, size );
46+ registerWithNode (node);
4147}
4248
4349
4450void HoldButtonManager::btnUnselect (CCObject* sender) {
4551 auto button = static_cast <CCMenuItemSpriteExtra*>(sender);
4652 CircleButtonSprite* sprite = typeinfo_cast<CircleButtonSprite*>(button->getSelectedImage ());
4753 if (sprite) {
48- // log::debug("{}", m_animate->retainCount());
49- // auto animate = m_animate;
50- // CC_SAFE_RETAIN(animate);
51-
5254 auto animSprite = static_cast <CCAnimatedSprite*>(sprite->getTopNode ());
5355 if (animSprite) {
5456 log::debug (" unselected" );
5557 animSprite->stopAction (m_animate);
56-
57- // animSprite->runAction(m_animate);
5858 }
59- // CC_SAFE_RELEASE(animate);
6059 }
6160}
6261
@@ -79,8 +78,6 @@ void HoldButtonManager::btnSelect(CCObject* sender){
7978
8079 CircleButtonSprite* sprite = typeinfo_cast<CircleButtonSprite*>(button->getSelectedImage ());
8180 if (sprite) {
82- log::debug (" {}" , m_animate->retainCount ());
83-
8481 auto animSprite = static_cast <CCAnimatedSprite*>(sprite->getTopNode ());
8582 if (animSprite) {
8683 animSprite->stopAllActions ();
@@ -89,8 +86,8 @@ void HoldButtonManager::btnSelect(CCObject* sender){
8986 }
9087}
9188
92- // https://www.merriam-webster.com/thesaurus/instantiate
93- void HoldButtonManager::embodyAnimate (){
89+
90+ void HoldButtonManager::loadAnimate (){
9491 auto frames = CCArray::create ();
9592
9693 for (int i = ' A' ; i<=' T' ; i++) {
@@ -106,7 +103,6 @@ void HoldButtonManager::embodyAnimate(){
106103 // m_fields->m_animation->addSpriteFrame(CCSpriteFrameCache::get()->spriteFrameByName(ahhh));
107104 }
108105 auto animation = CCAnimation::createWithSpriteFrames (frames, 0.025 );
109- // animation->retain(); //FOR TESTING THIS CAUSES A LEAK
110106 m_animate = CCAnimate::create (animation);
111107
112108 CC_SAFE_RETAIN (m_animate);
0 commit comments