Hello guys.
Whenever I develop games using Cocos2D-X, I end up with XxxScene.cpp files with 1000+ lines of code.
I try to break up the codes in multiple files by creating Node subclasses like HudNode, GameNode etc. These Nodes act like containers as I add components like buttons, sprites, labels etc as children to them. Finally I add the Node subclasses to the Scene and use methods and callbacks to communicate.
Example:
HomeWidgetsNodeDelegate.h
class HomeWidgetsNodeDelegate {
public:
void onHomeWidgetsNodeFinishEntranceAnimation(HomeWidgetsNode* sender) = 0;
void onHomeWidgetsNodeFinishExitAnimation(HomeWidgetsNode* sender) = 0;
void onHomeWidgetsNodeClickPlay(HomeWidgetsNode* sender) = 0;
}
HomeWidgetsNode.h
class HomeWidgetsNode : public cocos2d::Node {
public:
HomeWidgetsNodeDelegate* delegate;
void animateEntrance();
void animateExit();
private:
cocos2d::ui::Button* _playButton;
cocos2d::ui::Text* _bestScoreText;
void createPlayButton();
void createBestScoreText();
void onClickPlay(cocos2d::Ref* sender);
}
HomeScene.h
class HomeScene : public cocos2d::Scene, public HomeWidgetsNodeDelegate {
private:
HomeWidgetsNode* _widgetsNode;
void createWidgetsNode() {
_widgetsNode = HomeWidgetsNode::createWithSize(getContentSize());
addChild(_widgetsNode);
_widgetsNode->delegate = this;
}
}
I am concerned about the performance drop of this approach, as I need to create the extra container Nodes. Is there any better approach to break up the massive Scene.cpp files? Any other helpful tricks to improve code quality?
Thanks in advance.