From 9cac3e68c66292abdf5f31c9705aa082e04e54c8 Mon Sep 17 00:00:00 2001 From: altalk23 <45172705+altalk23@users.noreply.github.com> Date: Sat, 24 Dec 2022 21:33:41 +0300 Subject: [PATCH 1/2] replace ::scene impls, closes #26 --- bindings/GeometryDash.bro | 39 +++++++++++---------- loader/include/Geode/cocos/cocoa/CCObject.h | 13 ++++--- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 70e8459b..007bd48c 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -1078,14 +1078,12 @@ class EditButtonBar : cocos2d::CCNode { } class EditLevelLayer : cocos2d::CCLayer, FLAlertLayerProtocol, TextInputDelegate, UploadActionDelegate, UploadPopupDelegate, SetIDPopupDelegate { - static void scene(GJGameLevel* level) { + static cocos2d::CCScene* scene(GJGameLevel* level) { auto scene = cocos2d::CCScene::create(); - scene->addChild(EditLevelLayer::create(level)); - - cocos2d::CCDirector::sharedDirector()->replaceScene( - cocos2d::CCTransitionFade::create(.5f, scene) - ); + + AppDelegate::get()->m_runningScene = scene; + return scene; } static EditLevelLayer* create(GJGameLevel* level) = mac 0xe1e50, win 0x6f530, ios 0x82420; @@ -3533,14 +3531,12 @@ class LeaderboardsLayer : cocos2d::CCLayer { } class LevelBrowserLayer : cocos2d::CCLayer { - static void scene(GJSearchObject* search) { + static cocos2d::CCScene* scene(GJSearchObject* search) { auto scene = cocos2d::CCScene::create(); - scene->addChild(LevelBrowserLayer::create(search)); - cocos2d::CCDirector::sharedDirector()->pushScene( - cocos2d::CCTransitionFade::create(.5f, scene) - ); + AppDelegate::get()->m_runningScene = scene; + return scene; } bool init(GJSearchObject* search) = mac 0x2513f0, win 0x15a040; @@ -3594,13 +3590,10 @@ class LevelEditorLayer : GJBaseGameLayer, LevelSettingsDelegate { } static cocos2d::CCScene* scene(GJGameLevel* level) { auto scene = cocos2d::CCScene::create(); - scene->addChild(LevelEditorLayer::create(level)); - scene->setObjType(cocos2d::kCCObjectTypeLevelEditorLayer); - - cocos2d::CCDirector::sharedDirector()->replaceScene( - cocos2d::CCTransitionFade::create(0.5f, scene) - ); + scene->setObjType(CCObjectType::LevelEditorLayer); + + AppDelegate::get()->m_runningScene = scene; return scene; } @@ -3959,6 +3952,7 @@ class LoadingLayer : cocos2d::CCLayer { static cocos2d::CCScene* scene(bool fromReload) { auto scene = cocos2d::CCScene::create(); scene->addChild(LoadingLayer::create(fromReload)); + return scene; } @@ -4306,7 +4300,16 @@ class PlayLayer : GJBaseGameLayer, CCCircleWaveDelegate, CurrencyRewardDelegate, void resume() = mac 0x80480, win 0x20d5c0; void resumeAndRestart() = mac 0x80400, win 0x20d4c0; void saveRecordAction(bool, PlayerObject*) = mac 0x78750, win 0x20ad40; - static cocos2d::CCScene* scene(GJGameLevel*) = mac 0x6b500, win 0x1fb690; + + static cocos2d::CCScene* scene(GJGameLevel* level) { + auto scene = cocos2d::CCScene::create(); + scene->addChild(PlayLayer::create(level)); + scene->setObjType(CCObjectType::PlayLayer); + + AppDelegate::get()->m_runningScene = scene; + return scene; + } + void setupLevelStart(LevelSettingsObject*) = mac 0x6f560, win 0x1fb780; void setupReplay(gd::string) = mac 0x7e1e0; void shakeCamera(float, float, float) = mac 0x744a0, win 0x1ff210; diff --git a/loader/include/Geode/cocos/cocoa/CCObject.h b/loader/include/Geode/cocos/cocoa/CCObject.h index cf0958ba..e6bd1135 100644 --- a/loader/include/Geode/cocos/cocoa/CCObject.h +++ b/loader/include/Geode/cocos/cocoa/CCObject.h @@ -48,11 +48,12 @@ NS_CC_BEGIN */ RT_ADD( - typedef enum { - kCCObjectTypePlayLayer = 5, - kCCObjectTypeLevelEditorLayer = 6, - kCCObjectTypeMenuLayer = 15, - } CCObjectType; + // please someone tell we why in higher being(s)'s name rob did this + enum class CCObjectType { + PlayLayer = 5, + LevelEditorLayer = 6, + MenuLayer = 15, + }; ) class CCZone; @@ -156,8 +157,6 @@ public: inline void setObjType(CCObjectType type) { m_eObjType = type; } - - //i have no idea if vtable function order matters so ) friend class CCAutoreleasePool; From ff1157aee1e546fd77d03f09a7d204320e4fdf42 Mon Sep 17 00:00:00 2001 From: altalk23 <45172705+altalk23@users.noreply.github.com> Date: Sat, 24 Dec 2022 21:37:19 +0300 Subject: [PATCH 2/2] add cocos2d:: to ccobjectType because there isnt any namespace using in broma impls --- bindings/GeometryDash.bro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 007bd48c..1b9f0d49 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -3591,7 +3591,7 @@ class LevelEditorLayer : GJBaseGameLayer, LevelSettingsDelegate { static cocos2d::CCScene* scene(GJGameLevel* level) { auto scene = cocos2d::CCScene::create(); scene->addChild(LevelEditorLayer::create(level)); - scene->setObjType(CCObjectType::LevelEditorLayer); + scene->setObjType(cocos2d::CCObjectType::LevelEditorLayer); AppDelegate::get()->m_runningScene = scene; return scene; @@ -4304,7 +4304,7 @@ class PlayLayer : GJBaseGameLayer, CCCircleWaveDelegate, CurrencyRewardDelegate, static cocos2d::CCScene* scene(GJGameLevel* level) { auto scene = cocos2d::CCScene::create(); scene->addChild(PlayLayer::create(level)); - scene->setObjType(CCObjectType::PlayLayer); + scene->setObjType(cocos2d::CCObjectType::PlayLayer); AppDelegate::get()->m_runningScene = scene; return scene;