@@ -2127,17 +2127,21 @@ class CCNodeContainer : cocos2d::CCNode {
21272127
21282128[[link(android)]]
21292129class CCPartAnimSprite : cocos2d::CCSprite {
2130- // virtual ~CCPartAnimSprite();
2131- CCPartAnimSprite() {
2130+ CCPartAnimSprite() = ios 0x83808 {
21322131 m_spritePartIDs = nullptr;
21332132 m_spriteFrame = nullptr;
21342133 m_hasChanged = false;
21352134 m_spriteParts = nullptr;
21362135 }
2136+ ~CCPartAnimSprite() = win inline, m1 0x2f50a0, imac 0x362190, ios 0x836e0 {
2137+ CC_SAFE_RELEASE(m_spritePartIDs);
2138+ CC_SAFE_RELEASE(m_spriteFrame);
2139+ CC_SAFE_RELEASE(m_spriteParts);
2140+ }
21372141
2138- static CCPartAnimSprite* createWithAnimDesc(char const*, cocos2d::CCTexture2D*, bool) = win inline {
2142+ static CCPartAnimSprite* createWithAnimDesc(char const* definition , cocos2d::CCTexture2D* texture , bool useTexture ) = win inline, m1 0x2f346c, imac 0x360430, ios 0x8255c {
21392143 auto ret = new CCPartAnimSprite();
2140- if (ret->initWithAnimDesc(p0, p1, p2 )) {
2144+ if (ret->initWithAnimDesc(definition, texture, useTexture )) {
21412145 ret->autorelease();
21422146 return ret;
21432147 }
@@ -2154,17 +2158,73 @@ class CCPartAnimSprite : cocos2d::CCSprite {
21542158 virtual bool isFrameDisplayed(cocos2d::CCSpriteFrame*) = win 0x46330, imac 0x3619b0, m1 0x2f4814, ios 0x831c0;
21552159 virtual cocos2d::CCSpriteFrame* displayFrame() = win 0x46350, m1 0x2f482c, imac 0x3619d0, ios 0x831d8;
21562160
2157- void changeTextureOfID(char const*, char const*);
2158- int countParts();
2159- void dirtify();
2160- cocos2d::CCSprite* getSpriteForKey(char const*);
2161- bool initWithAnimDesc(char const*, cocos2d::CCTexture2D*, bool) = win 0x45910;
2162- void setColor(cocos2d::ccColor3B) = win 0x467c0;
2163- void setFlipX(bool);
2164- void setFlipY(bool);
2165- void transformSprite(SpriteDescription*);
2166- void tweenSpriteTo(SpriteDescription*, float);
2167- void tweenToFrame(cocos2d::CCSpriteFrame*, float) = win 0x46360;
2161+ void changeTextureOfID(char const* key, char const* frame) = win inline, m1 0x02f431c, imac 0x3614b0, ios inline {
2162+ if (auto spritePart = static_cast<CCSpritePart*>(m_spritePartIDs->objectForKey(key))) {
2163+ if (frame) spritePart->updateDisplayFrame(frame);
2164+ else spritePart->resetTextureRect();
2165+ }
2166+ }
2167+ int countParts() = win inline, m1 0x2f4fb8, imac 0x3620c0, ios inline {
2168+ return this->getChildren()->count();
2169+ }
2170+ void dirtify() = win inline, m1 0x2f4fd4, imac 0x3620e0, ios inline {
2171+ CCObject* obj;
2172+ CCARRAY_FOREACH(this->getChildren(), obj) {
2173+ static_cast<cocos2d::CCSprite*>(obj)->setDirty(true);
2174+ }
2175+ }
2176+ CCSpritePart* getSpriteForKey(char const* key) = win inline, m1 0x2f45c8, imac 0x361750, ios 0x83028 {
2177+ return static_cast<CCSpritePart*>(m_spritePartIDs->objectForKey(key));
2178+ }
2179+ bool initWithAnimDesc(char const* definition, cocos2d::CCTexture2D* texture, bool useTexture) = win 0x45910, m1 0x2f3558, imac 0x360510, ios 0x825e8;
2180+ void setColor(cocos2d::ccColor3B color) = win 0x467c0, m1 0x2f4d18, imac 0x361e60, ios 0x8351c;
2181+ void setFlipX(bool flipX) = win inline, m1 0x2f4a48, imac 0x361bf0, ios 0x83370 {
2182+ auto currentFlipX = this->isFlipX();
2183+ if (currentFlipX != flipX) this->setScaleX(currentFlipX ? 0.f : 1.f);
2184+ CCSprite::setFlipX(flipX);
2185+ m_hasChanged = true;
2186+ }
2187+ void setFlipY(bool flipY) = win inline, m1 0x2f4aa0, imac 0x361c40, ios inline {
2188+ this->setScaleY(this->isFlipY() ? 0.f : 1.f);
2189+ CCSprite::setFlipY(flipY);
2190+ m_hasChanged = true;
2191+ }
2192+ void transformSprite(SpriteDescription* description) = win inline, m1 0x2f3ee0, imac 0x361050, ios 0x82c44 {
2193+ auto spritePart = static_cast<CCSpritePart*>(m_spriteParts->objectAtIndex(description->m_tag));
2194+ spritePart->stopAllActions();
2195+ spritePart->setPosition(description->m_position);
2196+ auto scaleX = description->m_scale.x;
2197+ if (description->m_flipped.x) scaleX = -scaleX;
2198+ auto scaleY = description->m_scale.y;
2199+ if (description->m_flipped.y) scaleY = -scaleY;
2200+ spritePart->setScaleX(scaleX);
2201+ spritePart->setScaleY(scaleY);
2202+ spritePart->setRotation(description->m_rotation);
2203+ if (description->m_usesCustomTag) {
2204+ spritePart->setDisplayFrame(description->m_texture);
2205+ spritePart->frameChanged(description->m_texture->getFrameName());
2206+ }
2207+ }
2208+ void tweenSpriteTo(SpriteDescription* description, float duration) = win inline, m1 0x2f4178, imac 0x361300, ios 0x82e84 {
2209+ auto spritePart = static_cast<CCSpritePart*>(m_spriteParts->objectAtIndex(description->m_tag));
2210+ spritePart->stopAllActions();
2211+ auto scaleX = description->m_scale.x;
2212+ if (description->m_flipped.x) scaleX = -scaleX;
2213+ auto scaleY = description->m_scale.y;
2214+ if (description->m_flipped.y) scaleY = -scaleY;
2215+ spritePart->runAction(cocos2d::CCMoveTo::create(duration, description->m_position));
2216+ spritePart->runAction(cocos2d::CCScaleTo::create(duration, scaleX, scaleY));
2217+ spritePart->runAction(cocos2d::CCRotateTo::create(duration, description->m_rotation));
2218+ if (description->m_usesCustomTag) {
2219+ spritePart->setDisplayFrame(description->m_texture);
2220+ spritePart->frameChanged(description->m_texture->getFrameName());
2221+ }
2222+ auto zValue = description->m_zValue;
2223+ if (spritePart->getZOrder() != zValue) {
2224+ this->reorderChild(spritePart, zValue);
2225+ }
2226+ }
2227+ void tweenToFrame(cocos2d::CCSpriteFrame* frame, float duration) = win 0x46360, m1 0x2f4834, imac 0x3619e0, ios 0x831e0;
21682228
21692229 cocos2d::CCDictionary* m_spritePartIDs;
21702230 cocos2d::CCSpriteFrame* m_spriteFrame;
@@ -2309,19 +2369,52 @@ class CCSpriteGrayscale : CCSpriteWithHue {
23092369[[link(android)]]
23102370class CCSpritePart : CCSpritePlus {
23112371 // virtual ~CCSpritePart();
2372+ CCSpritePart() = win 0x45820 {
2373+ m_isBeingUsed = false;
2374+ m_delegate = nullptr;
2375+ }
23122376
2313- static CCSpritePart* create(cocos2d::CCTexture2D*);
2377+ static CCSpritePart* create(cocos2d::CCTexture2D* texture) = win inline, m1 0x2f3e2c, imac 0x360fa0, ios 0x82b9c {
2378+ auto ret = new CCSpritePart();
2379+ if (ret->initWithTexture(texture)) {
2380+ ret->autorelease();
2381+ return ret;
2382+ }
2383+ delete ret;
2384+ return nullptr;
2385+ }
23142386
23152387 virtual void setVisible(bool) = win 0x46a30, imac 0x362320, m1 0x2f51d8, ios 0x8375c;
23162388
2317- static CCSpritePart* createWithSpriteFrameName(char const*);
2318- void frameChanged(gd::string) = win 0x46980;
2319- TodoReturn getBeingUsed();
2320- TodoReturn hideInactive();
2321- TodoReturn markAsNotBeingUsed();
2322- TodoReturn resetTextureRect();
2323- void setBeingUsed(bool);
2324- TodoReturn updateDisplayFrame(gd::string);
2389+ static CCSpritePart* createWithSpriteFrameName(char const* frame) = win inline, m1 0x2f3cbc, imac 0x360e20, ios 0x82aa4 {
2390+ auto ret = new CCSpritePart();
2391+ if (ret->initWithSpriteFrameName(frame)) {
2392+ ret->autorelease();
2393+ return ret;
2394+ }
2395+ delete ret;
2396+ return nullptr;
2397+ }
2398+ void frameChanged(gd::string frame) = win 0x46980, m1 0x2f4060, imac 0x3611d0, ios 0x82dc4;
2399+ bool getBeingUsed() = win inline, m1 0x2f51d0, imac 0x362310, ios inline {
2400+ return m_isBeingUsed;
2401+ }
2402+ void hideInactive() = win inline, m1 0x2f47f8, imac 0x361990, ios inline {
2403+ if (!m_isBeingUsed) this->setVisible(false);
2404+ }
2405+ void markAsNotBeingUsed() = win inline, m1 0x2f47f0, imac 0x361980, ios inline {
2406+ m_isBeingUsed = false;
2407+ }
2408+ void resetTextureRect() = win inline, m1 0x2f44f0, imac 0x361680, ios inline {
2409+ this->setTextureRect({ 0.f, 0.f, 0.f, 0.f });
2410+ }
2411+ void setBeingUsed(bool beingUsed) = win inline, m1 0x2f4170, imac 0x3612f0, ios inline {
2412+ m_isBeingUsed = beingUsed;
2413+ }
2414+ void updateDisplayFrame(gd::string frame) = win inline, m1 0x2f4504, imac 0x3616a0, ios inline {
2415+ this->frameChanged(frame);
2416+ this->setDisplayFrame(cocos2d::CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(frame.c_str()));
2417+ }
23252418
23262419 bool m_isBeingUsed;
23272420 gd::string m_spriteFrameName;
0 commit comments