diff --git a/loader/include/Geode/DefaultInclude.hpp b/loader/include/Geode/DefaultInclude.hpp index 87d7b1a6..0190d9e2 100644 --- a/loader/include/Geode/DefaultInclude.hpp +++ b/loader/include/Geode/DefaultInclude.hpp @@ -200,6 +200,33 @@ namespace geode { template <class> \ void GEODE_CONCAT(geodeExecFunction, __LINE__)() +#define GEODE_FORWARD_COMPAT_DISABLE_HOOKS_INNER(message) \ + if (Loader::get()->isForwardCompatMode()) { \ + if (strlen(message)) { \ + log::warn("[Forward Compat] " message); \ + } \ + for (const auto& [_, hook] : self.m_hooks) { \ + hook->setAutoEnable(false); \ + } \ + } +#define GEODE_FORWARD_COMPAT_ENABLE_HOOKS_INNER(message) \ + if (!Loader::get()->isForwardCompatMode()) { \ + if (strlen(message)) { \ + log::warn("[Forward Compat] " message); \ + } \ + for (const auto& [_, hook] : self.m_hooks) { \ + hook->setAutoEnable(false); \ + } \ + } +#define GEODE_FORWARD_COMPAT_DISABLE_HOOKS(message) \ + static void onModify(const auto& self) { \ + GEODE_FORWARD_COMPAT_DISABLE_HOOKS_INNER(message) \ + } +#define GEODE_FORWARD_COMPAT_ENABLE_HOOKS(message) \ + static void onModify(const auto& self) { \ + GEODE_FORWARD_COMPAT_ENABLE_HOOKS_INNER(message) \ + } + // #define GEODE_NEST1(macro, begin) \ // macro(GEODE_CONCAT(begin, 0)), \ // macro(GEODE_CONCAT(begin, 1)), \ diff --git a/loader/src/hooks/FixClippingRect.cpp b/loader/src/hooks/FixClippingRect.cpp index 80533bbe..d976bb64 100644 --- a/loader/src/hooks/FixClippingRect.cpp +++ b/loader/src/hooks/FixClippingRect.cpp @@ -3,15 +3,7 @@ using namespace geode::prelude; struct MyGameToolbox : Modify<MyGameToolbox, GameToolbox> { - static void onModify(const auto& self) { - if (!Loader::get()->isForwardCompatMode()) - return; - log::warn("FixClippingRect disabled in forward compat"); - for (const auto& [_, hook] : self.m_hooks) { - hook->setAutoEnable(false); - } - } - + GEODE_FORWARD_COMPAT_DISABLE_HOOKS("FixClippingRect disabled") static void preVisitWithClippingRect(CCNode* node, CCRect rect) { if (node->isVisible()) { glEnable(0xc11); diff --git a/loader/src/hooks/LoadingLayer.cpp b/loader/src/hooks/LoadingLayer.cpp index 34a88ab1..76bca4de 100644 --- a/loader/src/hooks/LoadingLayer.cpp +++ b/loader/src/hooks/LoadingLayer.cpp @@ -14,14 +14,7 @@ struct CustomLoadingLayer : Modify<CustomLoadingLayer, LoadingLayer> { int m_geodeLoadStep = 0; int m_totalMods = 0; - static void onModify(const auto& self) { - if (!Loader::get()->isForwardCompatMode()) - return; - log::warn("Switching to fallback custom loading layer in forward compat"); - for (const auto& [_, hook] : self.m_hooks) { - hook->setAutoEnable(false); - } - } + GEODE_FORWARD_COMPAT_DISABLE_HOOKS("Switching to fallback custom loading layer") void updateLoadedModsLabel() { auto allMods = Loader::get()->getAllMods(); @@ -192,14 +185,7 @@ struct CustomLoadingLayer : Modify<CustomLoadingLayer, LoadingLayer> { }; struct FallbackCustomLoadingLayer : Modify<FallbackCustomLoadingLayer, CCLayer> { - static void onModify(const auto& self) { - if (Loader::get()->isForwardCompatMode()) - return; - for (const auto& [_, hook] : self.m_hooks) { - hook->setAutoEnable(false); - } - } - + GEODE_FORWARD_COMPAT_ENABLE_HOOKS("") bool init() { if (!CCLayer::init()) return false; diff --git a/loader/src/hooks/MenuLayer.cpp b/loader/src/hooks/MenuLayer.cpp index 1ff521f7..78f594ce 100644 --- a/loader/src/hooks/MenuLayer.cpp +++ b/loader/src/hooks/MenuLayer.cpp @@ -49,13 +49,7 @@ struct CustomMenuLayer : Modify<CustomMenuLayer, MenuLayer> { if (!self.setHookPriority("MenuLayer::init", geode::node_ids::GEODE_ID_PRIORITY)) { log::warn("Failed to set MenuLayer::init hook priority, node IDs may not work properly"); } - - if (!Loader::get()->isForwardCompatMode()) - return; - log::warn("MenuLayer stuff disabled in forward compat"); - for (const auto& [_, hook] : self.m_hooks) { - hook->setAutoEnable(false); - } + GEODE_FORWARD_COMPAT_DISABLE_HOOKS_INNER("MenuLayer stuff disabled") } CCSprite* m_geodeButton; diff --git a/loader/src/hooks/persist.cpp b/loader/src/hooks/persist.cpp index 850a4709..84bc3575 100644 --- a/loader/src/hooks/persist.cpp +++ b/loader/src/hooks/persist.cpp @@ -5,15 +5,7 @@ using namespace geode::prelude; #include <Geode/modify/AchievementNotifier.hpp> struct SceneSwitch : Modify<SceneSwitch, AchievementNotifier> { - static void onModify(const auto& self) { - if (!Loader::get()->isForwardCompatMode()) - return; - log::warn("persist disabled in forward compat"); - for (const auto& [_, hook] : self.m_hooks) { - hook->setAutoEnable(false); - } - } - + GEODE_FORWARD_COMPAT_DISABLE_HOOKS("persist disabled") void willSwitchToScene(CCScene* scene) { AchievementNotifier::willSwitchToScene(scene); SceneManager::get()->willSwitchToScene(scene); diff --git a/loader/src/hooks/save.cpp b/loader/src/hooks/save.cpp index 00142570..acfb08c8 100644 --- a/loader/src/hooks/save.cpp +++ b/loader/src/hooks/save.cpp @@ -23,15 +23,7 @@ namespace { } struct SaveLoader : Modify<SaveLoader, AppDelegate> { - static void onModify(const auto& self) { - if (!Loader::get()->isForwardCompatMode()) - return; - log::warn("save moved in forward compat"); - for (const auto& [_, hook] : self.m_hooks) { - hook->setAutoEnable(false); - } - } - + GEODE_FORWARD_COMPAT_DISABLE_HOOKS("save moved to CCApplication::gameDidSave()") void trySaveGame(bool p0) { saveModData(); return AppDelegate::trySaveGame(p0); @@ -39,14 +31,7 @@ struct SaveLoader : Modify<SaveLoader, AppDelegate> { }; struct FallbackSaveLoader : Modify<FallbackSaveLoader, CCApplication> { - static void onModify(const auto& self) { - if (Loader::get()->isForwardCompatMode()) - return; - for (const auto& [_, hook] : self.m_hooks) { - hook->setAutoEnable(false); - } - } - + GEODE_FORWARD_COMPAT_ENABLE_HOOKS("") void gameDidSave() { saveModData(); return CCApplication::gameDidSave(); diff --git a/loader/src/utils/cocos.cpp b/loader/src/utils/cocos.cpp index a7fa3a20..4b55ad24 100644 --- a/loader/src/utils/cocos.cpp +++ b/loader/src/utils/cocos.cpp @@ -388,15 +388,7 @@ void geode::cocos::reloadTextures(CreateLayerFunc returnTo) { } struct LoadingFinished : Modify<LoadingFinished, LoadingLayer> { - static void onModify(const auto& self) { - if (!Loader::get()->isForwardCompatMode()) - return; - log::warn("geode::cocos::reloadTextures disabled in forward compat"); - for (const auto& [_, hook] : self.m_hooks) { - hook->setAutoEnable(false); - } - } - + GEODE_FORWARD_COMPAT_DISABLE_HOOKS("geode::cocos::reloadTextures disabled") void loadAssets() { // loadFinished is inlined on Macchew OS :sob: