#pragma once #include namespace cocos2d::extension { class CCScale9Sprite; } namespace geode { class GEODE_DLL IconButtonSprite : public cocos2d::CCSprite, public cocos2d::CCLabelProtocol { protected: cocos2d::extension::CCScale9Sprite* m_bg = nullptr; cocos2d::CCLabelBMFont* m_label = nullptr; cocos2d::CCNode* m_icon = nullptr; bool init( char const* bg, bool bgIsFrame, cocos2d::CCNode* icon, char const* text, char const* font ); void updateLayout(); IconButtonSprite() = default; IconButtonSprite(IconButtonSprite&&) = delete; IconButtonSprite& operator=(IconButtonSprite&&) = delete; public: static IconButtonSprite* create( char const* bg, cocos2d::CCNode* icon, char const* text, char const* font ); static IconButtonSprite* createWithSpriteFrameName( char const* bg, cocos2d::CCNode* icon, char const* text, char const* font ); void setBG(char const* bg, bool isFrame); void setIcon(cocos2d::CCNode* icon); cocos2d::CCNode* getIcon() const; void setString(char const* label) override; char const* getString() override; void setColor(cocos2d::ccColor3B const& color) override; void setOpacity(GLubyte opacity) override; }; }