diff --git a/mod.json b/mod.json index 23a3686..eaa0b35 100644 --- a/mod.json +++ b/mod.json @@ -3,7 +3,7 @@ "version": "v1.6.0", "gd": { "win": "2.206", - "android": "*", + "android": "2.206", "mac": "2.206" }, "id": "geode.texture-loader", diff --git a/src/Fallback.cpp b/src/Fallback.cpp index 3ced0e1..25195ee 100644 --- a/src/Fallback.cpp +++ b/src/Fallback.cpp @@ -38,6 +38,24 @@ class $modify(CCSpriteFrameCache) { cocos2d::CCSpriteFrame* spriteFrameByName(char const* name) { auto* frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(name); if (frame == nullptr) { + // this is stupid but rob intentionally doesnt load all icons at startup, + // probably to save memory, so do this to not use fallback on icons + static constexpr std::string_view prefixes[] = { + "player_", + "ship_", + "dart_", + "bird_", + "robot_", + "spider_", + "swing_", + "jetpack_", + }; + const std::string_view nameStr = name; + for (auto const& prefix : prefixes) { + if (nameStr.find(prefix) != -1) { + return frame; + } + } frame = CCSpriteFrame::create("fallback.png"_spr, {ccp(0, 0), ccp(128, 128)}); } return frame;