move forward compat hook toggling to macros

This commit is contained in:
ConfiG 2024-01-13 03:30:07 +03:00
parent 56cedaac32
commit 21caf514c2
No known key found for this signature in database
GPG key ID: 44DA1983F524C11B
7 changed files with 35 additions and 67 deletions

View file

@ -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)), \

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -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);

View file

@ -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();

View file

@ -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: