From b3be58074bc1414d83159c568f8de8df639bc059 Mon Sep 17 00:00:00 2001 From: Justin Pridgen Date: Thu, 28 Nov 2024 01:53:54 -0500 Subject: [PATCH 01/17] Runtime fallback and other things --- .github/workflows/build.yml | 6 +-- mod.json | 2 +- src/Fallback.cpp | 80 +++++++++++++++++++++++++++---------- 3 files changed, 63 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e2e381b..dda9503 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,13 +30,13 @@ jobs: runs-on: ${{ matrix.config.os }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build the mod uses: geode-sdk/build-geode-mod@main with: combine: true - sdk: nightly + # sdk: nightly target: ${{ matrix.config.target }} package: @@ -48,7 +48,7 @@ jobs: - uses: geode-sdk/build-geode-mod/combine@main id: build - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: Build Output path: ${{ steps.build.outputs.build-output }} diff --git a/mod.json b/mod.json index 00b4aa9..924102d 100644 --- a/mod.json +++ b/mod.json @@ -1,5 +1,5 @@ { - "geode": "4.0.0-beta.1", + "geode": "4.0.1", "version": "v1.6.6", "gd": { "win": "2.2074", diff --git a/src/Fallback.cpp b/src/Fallback.cpp index b532583..13f2eae 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -10,15 +10,63 @@ static void assignFallbackObj(CCNode* node) { node->setUserObject("fallback"_spr, CCBool::create(true)); } +static CCTexture2D* generateFallback() { + auto scaleFactor = CCDirector::get()->getContentScaleFactor(); + int width = 32 * scaleFactor; + auto halfWidth = width / 2; + uint8_t* data = new uint8_t[width * width * 4]; + for (int y = 0; y < width / 2; y++) { + for (int x = 0; x < width / 2; x++) { + auto i = (y * width + x) * 4; + data[i] = 0xFF; + data[i + 1] = 0x00; + data[i + 2] = 0xDC; + data[i + 3] = 0xFF; + } + for (int x = width / 2; x < width; x++) { + auto i = (y * width + x) * 4; + data[i] = 0x00; + data[i + 1] = 0x00; + data[i + 2] = 0x00; + data[i + 3] = 0xFF; + } + } + for (int y = width / 2; y < width; y++) { + for (int x = 0; x < width / 2; x++) { + auto i = (y * width + x) * 4; + data[i] = 0x00; + data[i + 1] = 0x00; + data[i + 2] = 0x00; + data[i + 3] = 0xFF; + } + for (int x = width / 2; x < width; x++) { + auto i = (y * width + x) * 4; + data[i] = 0xFF; + data[i + 1] = 0x00; + data[i + 2] = 0xDC; + data[i + 3] = 0xFF; + } + } + + auto texture = new CCTexture2D(); + texture->initWithData(data, kCCTexture2DPixelFormat_RGBA8888, width, width, ccp(width, width)); + texture->autorelease(); + return texture; + delete[] data; +} + class $modify(CCSprite) { static CCSprite* create(const char* name) { auto* sprite = CCSprite::create(name); if (sprite == nullptr) { - sprite = CCSprite::create("fallback.png"_spr); - // in dire cases, since no one is stupid enough to delete this texture - if (sprite == nullptr) { - sprite = CCSprite::create("bigFont.png"); + auto textureCache = CCTextureCache::get(); + auto fallbackTexture = static_cast(textureCache->m_pTextures->objectForKey("fallback"_spr)); + if (!fallbackTexture) { + fallbackTexture = generateFallback(); + textureCache->m_pTextures->setObject(fallbackTexture, "fallback"_spr); } + + sprite = CCSprite::createWithTexture(fallbackTexture); assignFallbackObj(sprite); } return sprite; @@ -30,21 +78,17 @@ class $modify(CCSprite) { // we check for tag instead of the frame name because this is significantly better for performance bool needFallback = !spriteFrame || spriteFrame->getTag() == FALLBACK_TAG; - if (!needFallback) { - return CCSprite::createWithSpriteFrame(spriteFrame); - } - - CCSprite* sprite = CCSprite::create("fallback.png"_spr); - if (sprite == nullptr) { - sprite = CCSprite::create("bigFont.png"); + CCSprite* sprite = CCSprite::createWithSpriteFrame(spriteFrame); + if (needFallback) { + assignFallbackObj(sprite); } - assignFallbackObj(sprite); return sprite; } bool initWithSpriteFrame(CCSpriteFrame* frame) { if (frame == nullptr) { - bool result = CCSprite::initWithFile("fallback.png"_spr); + bool result = CCSprite::initWithSpriteFrame(CCSpriteFrame::createWithTexture( + generateFallback(), {ccp(0, 0), ccp(32, 32)})); if (result) { assignFallbackObj(this); } @@ -82,18 +126,12 @@ class $modify(CCSpriteFrameCache) { } } - // check if the fallback was already added - auto fallbackFrame = CCSpriteFrameCache::spriteFrameByName("fallback.png"_spr); - if (fallbackFrame) { - return fallbackFrame; - } - // create the fallback frame and add to cache - fallbackFrame = CCSpriteFrame::create("fallback.png"_spr, {ccp(0, 0), ccp(128, 128)}); + auto fallbackFrame = CCSpriteFrame::createWithTexture(generateFallback(), {ccp(0, 0), ccp(32, 32)}); if (fallbackFrame) { fallbackFrame->setTag(FALLBACK_TAG); - this->addSpriteFrame(fallbackFrame, "fallback.png"_spr); + this->addSpriteFrame(fallbackFrame, name); } return fallbackFrame; From fde661806bfce71243063972af1db34ffbce30ce Mon Sep 17 00:00:00 2001 From: Justin Pridgen Date: Thu, 28 Nov 2024 01:57:12 -0500 Subject: [PATCH 02/17] delete fallback.png --- resources/fallback.png | Bin 1257 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 resources/fallback.png diff --git a/resources/fallback.png b/resources/fallback.png deleted file mode 100644 index d5212129874bfffe65955d7962e07c4b07eb34f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1257 zcmV=P)004&%004{)008-u004yL004V}008TC002L<001Ibb!%Rn000C6 zX+uL$Nkc;*P;zf(X>4Tx07%D;Rb6NtRTMs(xw{b(=Rs;yQ%MK^8cJFwsc1rNbpNv1 zHg1+pHrgPR$?V;oX(lt{{G@3qJ`_O^!KmPq;Qw2}Cn0L9?TamDA5Pw}ZEeGQxC?7uV zm<&IIc$lR`5xkdxrn?L!F~+h*p{O@wNzPP zxhPsjRn=%D+Iu@L#5r zDj|LXpks$SUrr+4gLt%Rjg@^n9g5og4o>*>DINvgl~roQQO z6yQsy=ABWDjoh}}QrYLnAEtUauo)kftZXj86_|-hK*4}HoMq5q0|Y2R4pR6w!9qI&kKk5d z#~?jKB>V9>KqkmRGE7E5AkUKL$SBF6bc7set}RAlWbxc;+Ibm0Qja%-ybGvzK*ISK zWEfz#&c$-C+waRyTSry-@|(9Wo;tfD-bySvb)V$r$M%osM9>z0zRszu_N&mH&rpjMq7(URbTG)bu0t)wZh#3 zoE`}I;!olq;;Q(e_=)%%_YU_tcaHml`;z+}1nxX{f%}I0mivtRDpI5NXQx?nZy$|a zFioqB;`!uL{7(K+KEvk)b0b@=efhjdon!Z7 zoz*t~p)#^mIPNiR@0{syVhbl&N&3hj$!|H;!|bd#ZRa-CqxBwWBAdu0k{~4ZBt{a0 zi9-xGn2Ft}8^Ia7mP3~u)`-)FdBRd_iX#k(;?qJBuQDp+b$Q=_AZeQ5scgZbHnkRM zWgoD6(r@8+O5Xh!+kQEeInM(e{FC*)P&VrVoUs9Vo(yIE*c%^wA7JGv*|ipfJ0TYP z0l=>AAM(GtQ`oPr)$4b#Z*{&6u<=&C{`W`q`o_m-e;wew_7DFhcngG3e{28%00vM@ zR7L*)+yDRoEg=*l00009a7bBm000ic000ic0Tn1pfB*mhKS@MERA}Dq&Or?T00_je zvw(lINZ?5zoq%SUsv!UX000000000000030fdh*G000000000000000Hi4u8Ba09a TfQ#?V00000NkvXXu0mjfFe^d0 From ef34f6f2fc6cc1e4a4e580dbab9eef26d9fc611c Mon Sep 17 00:00:00 2001 From: Justin Pridgen Date: Thu, 28 Nov 2024 01:57:56 -0500 Subject: [PATCH 03/17] build... --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dda9503..aadc431 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: push: branches: - - "main" + - "fallback" jobs: build: From 00c945b16805628ff0f3eada792dcf091fdd24a1 Mon Sep 17 00:00:00 2001 From: Justin Pridgen Date: Thu, 28 Nov 2024 02:02:48 -0500 Subject: [PATCH 04/17] revert --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aadc431..dda9503 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: push: branches: - - "fallback" + - "main" jobs: build: From 523ce5677ea5233e5ff454bcf2273854a0d1b850 Mon Sep 17 00:00:00 2001 From: Justin Pridgen Date: Wed, 4 Dec 2024 21:49:19 -0500 Subject: [PATCH 05/17] some more code changes --- src/Fallback.cpp | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/Fallback.cpp b/src/Fallback.cpp index 13f2eae..119f7e8 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -11,9 +11,7 @@ static void assignFallbackObj(CCNode* node) { } static CCTexture2D* generateFallback() { - auto scaleFactor = CCDirector::get()->getContentScaleFactor(); - int width = 32 * scaleFactor; - auto halfWidth = width / 2; + int width = 32 * CCDirector::get()->getContentScaleFactor(); uint8_t* data = new uint8_t[width * width * 4]; for (int y = 0; y < width / 2; y++) { for (int x = 0; x < width / 2; x++) { @@ -51,8 +49,8 @@ static CCTexture2D* generateFallback() { auto texture = new CCTexture2D(); texture->initWithData(data, kCCTexture2DPixelFormat_RGBA8888, width, width, ccp(width, width)); texture->autorelease(); - return texture; delete[] data; + return texture; } class $modify(CCSprite) { @@ -60,10 +58,10 @@ class $modify(CCSprite) { auto* sprite = CCSprite::create(name); if (sprite == nullptr) { auto textureCache = CCTextureCache::get(); - auto fallbackTexture = static_cast(textureCache->m_pTextures->objectForKey("fallback"_spr)); + auto fallbackTexture = static_cast(textureCache->m_pTextures->objectForKey("fallback.png"_spr)); if (!fallbackTexture) { fallbackTexture = generateFallback(); - textureCache->m_pTextures->setObject(fallbackTexture, "fallback"_spr); + textureCache->m_pTextures->setObject(fallbackTexture, "fallback.png"_spr); } sprite = CCSprite::createWithTexture(fallbackTexture); @@ -87,8 +85,7 @@ class $modify(CCSprite) { bool initWithSpriteFrame(CCSpriteFrame* frame) { if (frame == nullptr) { - bool result = CCSprite::initWithSpriteFrame(CCSpriteFrame::createWithTexture( - generateFallback(), {ccp(0, 0), ccp(32, 32)})); + bool result = CCSprite::initWithSpriteFrame(CCSpriteFrameCache::get()->spriteFrameByName("fallback.png"_spr)); if (result) { assignFallbackObj(this); } @@ -128,11 +125,8 @@ class $modify(CCSpriteFrameCache) { // create the fallback frame and add to cache auto fallbackFrame = CCSpriteFrame::createWithTexture(generateFallback(), {ccp(0, 0), ccp(32, 32)}); - - if (fallbackFrame) { - fallbackFrame->setTag(FALLBACK_TAG); - this->addSpriteFrame(fallbackFrame, name); - } + fallbackFrame->setTag(FALLBACK_TAG); + this->addSpriteFrame(fallbackFrame, name); return fallbackFrame; } From 5125b6002f2316beae76d1758b0d3de00ac95aa6 Mon Sep 17 00:00:00 2001 From: Justin <52604018+hiimjustin000@users.noreply.github.com> Date: Fri, 6 Dec 2024 17:23:34 -0500 Subject: [PATCH 06/17] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d3ca02b..772bbb9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: push: branches: - - "main" + - "**" jobs: build: From 81af3ce79c4ca6cedea82fb1723128f9097cfa94 Mon Sep 17 00:00:00 2001 From: Justin <52604018+hiimjustin000@users.noreply.github.com> Date: Fri, 6 Dec 2024 17:23:43 -0500 Subject: [PATCH 07/17] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 772bbb9..d3ca02b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: push: branches: - - "**" + - "main" jobs: build: From a52e6c672930f25bc7627d567bbc237adafb1c4d Mon Sep 17 00:00:00 2001 From: Jasmine <52604018+hiimjustin000@users.noreply.github.com> Date: Thu, 2 Jan 2025 15:58:27 -0500 Subject: [PATCH 08/17] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d3ca02b..772bbb9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: push: branches: - - "main" + - "**" jobs: build: From 852031b1d10ca5218a73a31606464ee3204ba5c6 Mon Sep 17 00:00:00 2001 From: Jasmine <52604018+hiimjustin000@users.noreply.github.com> Date: Thu, 2 Jan 2025 15:58:35 -0500 Subject: [PATCH 09/17] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 772bbb9..d3ca02b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: push: branches: - - "**" + - "main" jobs: build: From 97add0dc08c71fb494e9e0935990468ed1d37442 Mon Sep 17 00:00:00 2001 From: Jasmine <52604018+hiimjasmine00@users.noreply.github.com> Date: Sat, 3 May 2025 11:09:05 -0400 Subject: [PATCH 10/17] No runtime fallback I guess --- resources/fallback.png | Bin 0 -> 1257 bytes src/Fallback.cpp | 50 +++++++++++------------------------------ 2 files changed, 13 insertions(+), 37 deletions(-) create mode 100644 resources/fallback.png diff --git a/resources/fallback.png b/resources/fallback.png new file mode 100644 index 0000000000000000000000000000000000000000..d5212129874bfffe65955d7962e07c4b07eb34f1 GIT binary patch literal 1257 zcmV=P)004&%004{)008-u004yL004V}008TC002L<001Ibb!%Rn000C6 zX+uL$Nkc;*P;zf(X>4Tx07%D;Rb6NtRTMs(xw{b(=Rs;yQ%MK^8cJFwsc1rNbpNv1 zHg1+pHrgPR$?V;oX(lt{{G@3qJ`_O^!KmPq;Qw2}Cn0L9?TamDA5Pw}ZEeGQxC?7uV zm<&IIc$lR`5xkdxrn?L!F~+h*p{O@wNzPP zxhPsjRn=%D+Iu@L#5r zDj|LXpks$SUrr+4gLt%Rjg@^n9g5og4o>*>DINvgl~roQQO z6yQsy=ABWDjoh}}QrYLnAEtUauo)kftZXj86_|-hK*4}HoMq5q0|Y2R4pR6w!9qI&kKk5d z#~?jKB>V9>KqkmRGE7E5AkUKL$SBF6bc7set}RAlWbxc;+Ibm0Qja%-ybGvzK*ISK zWEfz#&c$-C+waRyTSry-@|(9Wo;tfD-bySvb)V$r$M%osM9>z0zRszu_N&mH&rpjMq7(URbTG)bu0t)wZh#3 zoE`}I;!olq;;Q(e_=)%%_YU_tcaHml`;z+}1nxX{f%}I0mivtRDpI5NXQx?nZy$|a zFioqB;`!uL{7(K+KEvk)b0b@=efhjdon!Z7 zoz*t~p)#^mIPNiR@0{syVhbl&N&3hj$!|H;!|bd#ZRa-CqxBwWBAdu0k{~4ZBt{a0 zi9-xGn2Ft}8^Ia7mP3~u)`-)FdBRd_iX#k(;?qJBuQDp+b$Q=_AZeQ5scgZbHnkRM zWgoD6(r@8+O5Xh!+kQEeInM(e{FC*)P&VrVoUs9Vo(yIE*c%^wA7JGv*|ipfJ0TYP z0l=>AAM(GtQ`oPr)$4b#Z*{&6u<=&C{`W`q`o_m-e;wew_7DFhcngG3e{28%00vM@ zR7L*)+yDRoEg=*l00009a7bBm000ic000ic0Tn1pfB*mhKS@MERA}Dq&Or?T00_je zvw(lINZ?5zoq%SUsv!UX000000000000030fdh*G000000000000000Hi4u8Ba09a TfQ#?V00000NkvXXu0mjfFe^d0 literal 0 HcmV?d00001 diff --git a/src/Fallback.cpp b/src/Fallback.cpp index 119f7e8..3a45712 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -11,45 +11,21 @@ static void assignFallbackObj(CCNode* node) { } static CCTexture2D* generateFallback() { - int width = 32 * CCDirector::get()->getContentScaleFactor(); - uint8_t* data = new uint8_t[width * width * 4]; - for (int y = 0; y < width / 2; y++) { - for (int x = 0; x < width / 2; x++) { - auto i = (y * width + x) * 4; - data[i] = 0xFF; - data[i + 1] = 0x00; - data[i + 2] = 0xDC; - data[i + 3] = 0xFF; - } - for (int x = width / 2; x < width; x++) { - auto i = (y * width + x) * 4; - data[i] = 0x00; - data[i + 1] = 0x00; - data[i + 2] = 0x00; - data[i + 3] = 0xFF; - } + auto* image = new CCImage(); + if (!image->initWithImageFile("fallback.png"_spr)) { + image->release(); + return nullptr; } - for (int y = width / 2; y < width; y++) { - for (int x = 0; x < width / 2; x++) { - auto i = (y * width + x) * 4; - data[i] = 0x00; - data[i + 1] = 0x00; - data[i + 2] = 0x00; - data[i + 3] = 0xFF; - } - for (int x = width / 2; x < width; x++) { - auto i = (y * width + x) * 4; - data[i] = 0xFF; - data[i + 1] = 0x00; - data[i + 2] = 0xDC; - data[i + 3] = 0xFF; - } + + auto* texture = new CCTexture2D(); + auto result = texture->initWithImage(image); + image->release(); + if (!result) { + texture->release(); + return nullptr; } - auto texture = new CCTexture2D(); - texture->initWithData(data, kCCTexture2DPixelFormat_RGBA8888, width, width, ccp(width, width)); texture->autorelease(); - delete[] data; return texture; } @@ -58,10 +34,10 @@ class $modify(CCSprite) { auto* sprite = CCSprite::create(name); if (sprite == nullptr) { auto textureCache = CCTextureCache::get(); - auto fallbackTexture = static_cast(textureCache->m_pTextures->objectForKey("fallback.png"_spr)); + auto fallbackTexture = static_cast(textureCache->m_pTextures->objectForKey(name)); if (!fallbackTexture) { fallbackTexture = generateFallback(); - textureCache->m_pTextures->setObject(fallbackTexture, "fallback.png"_spr); + textureCache->m_pTextures->setObject(fallbackTexture, name); } sprite = CCSprite::createWithTexture(fallbackTexture); From 087486e52f975526622911c636110d7f05ed91fb Mon Sep 17 00:00:00 2001 From: Jasmine <52604018+hiimjasmine00@users.noreply.github.com> Date: Sat, 3 May 2025 11:11:32 -0400 Subject: [PATCH 11/17] Add to file names and remove unnecessary creation --- src/Fallback.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Fallback.cpp b/src/Fallback.cpp index 3a45712..12209dd 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -99,8 +99,14 @@ class $modify(CCSpriteFrameCache) { } } + // check if the fallback was already added + auto fallbackFrame = CCSpriteFrameCache::spriteFrameByName(name); + if (fallbackFrame) { + return fallbackFrame; + } + // create the fallback frame and add to cache - auto fallbackFrame = CCSpriteFrame::createWithTexture(generateFallback(), {ccp(0, 0), ccp(32, 32)}); + fallbackFrame = CCSpriteFrame::createWithTexture(generateFallback(), {ccp(0, 0), ccp(32, 32)}); fallbackFrame->setTag(FALLBACK_TAG); this->addSpriteFrame(fallbackFrame, name); From e0e65d6405bdce7029390841c1e22543e5999fd3 Mon Sep 17 00:00:00 2001 From: Jasmine <52604018+hiimjasmine00@users.noreply.github.com> Date: Sat, 3 May 2025 11:20:18 -0400 Subject: [PATCH 12/17] Add more checks --- src/Fallback.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Fallback.cpp b/src/Fallback.cpp index 12209dd..8304404 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -35,9 +35,12 @@ class $modify(CCSprite) { if (sprite == nullptr) { auto textureCache = CCTextureCache::get(); auto fallbackTexture = static_cast(textureCache->m_pTextures->objectForKey(name)); - if (!fallbackTexture) { + if (fallbackTexture == nullptr) { fallbackTexture = generateFallback(); textureCache->m_pTextures->setObject(fallbackTexture, name); + if (fallbackTexture == nullptr) { + fallbackTexture = textureCache->textureForKey("bigFont.png"); + } } sprite = CCSprite::createWithTexture(fallbackTexture); @@ -52,10 +55,15 @@ class $modify(CCSprite) { // we check for tag instead of the frame name because this is significantly better for performance bool needFallback = !spriteFrame || spriteFrame->getTag() == FALLBACK_TAG; + if (!needFallback) { + return CCSprite::createWithSpriteFrame(spriteFrame); + } + CCSprite* sprite = CCSprite::createWithSpriteFrame(spriteFrame); - if (needFallback) { - assignFallbackObj(sprite); + if (sprite == nullptr) { + sprite = CCSprite::create("bigFont.png"); } + assignFallbackObj(sprite); return sprite; } @@ -107,8 +115,10 @@ class $modify(CCSpriteFrameCache) { // create the fallback frame and add to cache fallbackFrame = CCSpriteFrame::createWithTexture(generateFallback(), {ccp(0, 0), ccp(32, 32)}); - fallbackFrame->setTag(FALLBACK_TAG); - this->addSpriteFrame(fallbackFrame, name); + if (fallbackFrame) { + fallbackFrame->setTag(FALLBACK_TAG); + this->addSpriteFrame(fallbackFrame, name); + } return fallbackFrame; } From e75a17852792e7b70b6bcd0b95c75238e24d8c73 Mon Sep 17 00:00:00 2001 From: Jasmine <52604018+hiimjasmine00@users.noreply.github.com> Date: Sat, 3 May 2025 11:22:27 -0400 Subject: [PATCH 13/17] Too many commits! --- src/Fallback.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Fallback.cpp b/src/Fallback.cpp index 8304404..79ac749 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -38,12 +38,13 @@ class $modify(CCSprite) { if (fallbackTexture == nullptr) { fallbackTexture = generateFallback(); textureCache->m_pTextures->setObject(fallbackTexture, name); - if (fallbackTexture == nullptr) { - fallbackTexture = textureCache->textureForKey("bigFont.png"); - } } sprite = CCSprite::createWithTexture(fallbackTexture); + // in dire cases, since no one is stupid enough to delete this texture + if (sprite == nullptr) { + sprite = CCSprite::create("bigFont.png"); + } assignFallbackObj(sprite); } return sprite; @@ -115,6 +116,7 @@ class $modify(CCSpriteFrameCache) { // create the fallback frame and add to cache fallbackFrame = CCSpriteFrame::createWithTexture(generateFallback(), {ccp(0, 0), ccp(32, 32)}); + if (fallbackFrame) { fallbackFrame->setTag(FALLBACK_TAG); this->addSpriteFrame(fallbackFrame, name); From 511410cc94412215f5d606a04cf6b806a5dfb8be Mon Sep 17 00:00:00 2001 From: Jasmine <52604018+hiimjasmine00@users.noreply.github.com> Date: Sat, 3 May 2025 11:28:32 -0400 Subject: [PATCH 14/17] Another nullptr check --- src/Fallback.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Fallback.cpp b/src/Fallback.cpp index 79ac749..0c47b9d 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -34,13 +34,15 @@ class $modify(CCSprite) { auto* sprite = CCSprite::create(name); if (sprite == nullptr) { auto textureCache = CCTextureCache::get(); - auto fallbackTexture = static_cast(textureCache->m_pTextures->objectForKey(name)); - if (fallbackTexture == nullptr) { - fallbackTexture = generateFallback(); - textureCache->m_pTextures->setObject(fallbackTexture, name); + auto texture = static_cast(textureCache->m_pTextures->objectForKey(name)); + if (texture == nullptr) { + texture = generateFallback(); + if (texture != nullptr) { + textureCache->m_pTextures->setObject(texture, name); + } } - sprite = CCSprite::createWithTexture(fallbackTexture); + sprite = CCSprite::createWithTexture(texture); // in dire cases, since no one is stupid enough to delete this texture if (sprite == nullptr) { sprite = CCSprite::create("bigFont.png"); From 5310cedb1677e4619ac60ab6c8f8d9c1e48c3c5a Mon Sep 17 00:00:00 2001 From: Jasmine <52604018+hiimjasmine00@users.noreply.github.com> Date: Sun, 4 May 2025 18:50:29 -0400 Subject: [PATCH 15/17] No more diff golfing --- src/Fallback.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/Fallback.cpp b/src/Fallback.cpp index 0c47b9d..7b233ee 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -109,12 +109,8 @@ class $modify(CCSpriteFrameCache) { return frame; } } - - // check if the fallback was already added - auto fallbackFrame = CCSpriteFrameCache::spriteFrameByName(name); - if (fallbackFrame) { - return fallbackFrame; - } + + CCSpriteFrame* fallbackFrame = nullptr; // create the fallback frame and add to cache fallbackFrame = CCSpriteFrame::createWithTexture(generateFallback(), {ccp(0, 0), ccp(32, 32)}); From abdee6067cada6a4fb394eaa60231e251bde162c Mon Sep 17 00:00:00 2001 From: Jasmine <52604018+hiimjasmine00@users.noreply.github.com> Date: Sun, 4 May 2025 18:50:44 -0400 Subject: [PATCH 16/17] Actually do this --- src/Fallback.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Fallback.cpp b/src/Fallback.cpp index 7b233ee..50c9762 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -110,10 +110,8 @@ class $modify(CCSpriteFrameCache) { } } - CCSpriteFrame* fallbackFrame = nullptr; - // create the fallback frame and add to cache - fallbackFrame = CCSpriteFrame::createWithTexture(generateFallback(), {ccp(0, 0), ccp(32, 32)}); + auto fallbackFrame = CCSpriteFrame::createWithTexture(generateFallback(), {ccp(0, 0), ccp(32, 32)}); if (fallbackFrame) { fallbackFrame->setTag(FALLBACK_TAG); From 0b1b7f90a8fde0b4bf531ba79cbf63a28505475a Mon Sep 17 00:00:00 2001 From: Jasmine <52604018+hiimjasmine00@users.noreply.github.com> Date: Sun, 4 May 2025 19:58:09 -0400 Subject: [PATCH 17/17] I honestly don't know what's the problem --- src/Fallback.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Fallback.cpp b/src/Fallback.cpp index 50c9762..c1bb7b3 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -25,6 +25,7 @@ static CCTexture2D* generateFallback() { return nullptr; } + texture->setTag(FALLBACK_TAG); texture->autorelease(); return texture; } @@ -109,7 +110,7 @@ class $modify(CCSpriteFrameCache) { return frame; } } - + // create the fallback frame and add to cache auto fallbackFrame = CCSpriteFrame::createWithTexture(generateFallback(), {ccp(0, 0), ccp(32, 32)});