diff --git a/src/level_data.cpp b/src/level_data.cpp index 291e144..cfa29f9 100644 --- a/src/level_data.cpp +++ b/src/level_data.cpp @@ -105,9 +105,12 @@ class $modify(LocalLevelManagerExt, LocalLevelManager) { } }; + +//// fffffffffffffuc a here is aaa problematic functions idk lol + #include class $modify(GameLevelManager) { - GJGameLevel* getMainLevel(int levelID, bool dontGetLevelString) { + GJGameLevel* NOT_NOW___getMainLevel(int levelID, bool dontGetLevelString) { auto level = GameLevelManager::get()->getMainLevel(levelID, dontGetLevelString); //json meta updateLevelByJson(level); @@ -122,3 +125,26 @@ class $modify(LevelTools) { return 1; } }; + +GJGameLevel* getMainLevelDet(GameLevelManager* __this, int levelID, bool dontGetLevelString) { + auto level = __this->getMainLevel(levelID, dontGetLevelString); + //json meta + updateLevelByJson(level); + return level; +} +GEODE_WINDOWS(auto getMainLevelAddr = reinterpret_cast(geode::base::get() + 0x13fa40)); +GEODE_ANDROID( + auto getMainLevelAddr = reinterpret_cast( + // All of this is to get the address of ccDrawCircle + geode::addresser::getNonVirtual(&GameLevelManager::getMainLevel) + ) +); +void HookTheGetMainLevelFunc() { + Mod::get()->hook( + getMainLevelAddr, // address + &getMainLevelDet, // detour + "GameLevelManager::getMainLevel", // display name, shows up on the console + tulip::hook::TulipConvention::Thiscall // calling convention + ); +} +$execute{ HookTheGetMainLevelFunc(); } \ No newline at end of file