From 16716d8bb9f8c48e130b28e088ec96c59390a973 Mon Sep 17 00:00:00 2001 From: Cvolton Date: Thu, 22 Jun 2023 01:13:49 +0200 Subject: [PATCH 01/11] add missing addresses and members needed for bi --- bindings/GeometryDash.bro | 111 +++++++++++++++++++++++++++------ loader/include/Geode/Enums.hpp | 6 ++ 2 files changed, 98 insertions(+), 19 deletions(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 27545eb4f..857128f6f 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -883,14 +883,17 @@ class ColorSetupDelegate { virtual void colorSetupClosed(int channel) {} } -class CommentCell : TableViewCell { +class CommentCell : TableViewCell, LikeItemDelegate, FLAlertLayerProtocol { void loadFromComment(GJComment*) = mac 0x111c70, win 0x5f3d0; + void onConfirmDelete(cocos2d::CCObject* sender) = win 0x61140; + void onLike(cocos2d::CCObject* sender) = win 0x60F90; + virtual void FLAlert_Clicked(FLAlertLayer* layer, bool btn) = win 0x61260; + virtual void likedItem(LikeItemType type, int id, bool special) = win 0x61070; - PAD = win 0x4; cocos2d::CCSprite* m_iconSprite; cocos2d::CCLabelBMFont* m_likeLabel; GJComment* m_comment; - PAD = win 0x4; + bool m_accountComment; } class CommentUploadDelegate { @@ -1061,7 +1064,7 @@ class CustomizeObjectLayer : FLAlertLayer, TextInputDelegate, HSVWidgetPopupDele class DailyLevelPage : FLAlertLayer { static DailyLevelPage* create(bool weekly) = win 0x6a860; bool init(bool weekly) = win 0x6a900; - void updateTimers(float) = win 0x6bef0; + virtual void updateTimers(float) = win 0x6bef0; virtual void show() = mac 0x10a4b0, win 0x3f360; PAD = win 0x21; @@ -1673,6 +1676,7 @@ class FLAlertLayer : cocos2d::CCLayerColor { static FLAlertLayer* create(FLAlertLayerProtocol* protocol, char const* title, gd::string content, char const* btn1, char const* btn2, float width, bool scrollable, float height) = mac 0x25dec0, win 0x227e0; void onBtn1(cocos2d::CCObject*) = mac 0x25ec20, win 0x23340; void onBtn2(cocos2d::CCObject*) = mac 0x25ec80, win 0x23380; + void onClose(cocos2d::CCObject*) = win 0x49C60; cocos2d::CCMenu* m_buttonMenu; int m_controlConnected; @@ -2578,6 +2582,9 @@ class GJSearchObject : cocos2d::CCNode { static GJSearchObject* create(SearchType nID) = win 0xc2b90; static GJSearchObject* create(SearchType nID, gd::string str) = win 0xc2c80; + static GJSearchObject* createFromKey(const char* key) = win 0xC2760; + const char* getKey() = win 0xC30A0; + const char* getNextPageKey() = win 0xC31F0; SearchType m_searchType; gd::string m_searchQuery; @@ -2725,14 +2732,16 @@ class GJUserScore : cocos2d::CCNode { class GManager : cocos2d::CCNode { virtual void setup() {} - void encodeDataTo(DS_Dictionary* data) {} - void dataLoaded(DS_Dictionary* data) {} - void firstLoad() {} + virtual void encodeDataTo(DS_Dictionary* data) {} + virtual void dataLoaded(DS_Dictionary* data) {} + virtual void firstLoad() {} void save() = mac 0x26f300, win 0x29250; void saveData(DS_Dictionary*, gd::string) = mac 0x26f4b0; void saveGMTo(gd::string) = mac 0x26f3b0, win 0x29250; + inline GManager() {} + gd::string m_fileName; bool m_setup; bool m_saved; @@ -2753,7 +2762,7 @@ class GameLevelManager : cocos2d::CCNode { cocos2d::CCArray* createAndGetScores(gd::string, GJScoreType) = win 0xa2780; GJGameLevel* createNewLevel() = mac 0x2b8180, win 0xa0db0; static GameLevelManager* sharedState() = mac 0x2a8340, win 0x9f860; - void getCompletedLevels(bool newFilter) = win 0xa2d20; + cocos2d::CCArray* getCompletedLevels(bool newFilter) = win 0xa2d20; void getGJUserInfo(int) = win 0xb00b0; void getOnlineLevels(GJSearchObject*) = win 0xa7bc0; void getPageInfo(char const*) = mac 0x2c0050; @@ -2763,11 +2772,12 @@ class GameLevelManager : cocos2d::CCNode { void getTopArtistsKey(int) = mac 0x2ce7a0; void makeTimeStamp(char const*) = mac 0x2bfd90, win 0xa3f00; GJGameLevel* getMainLevel(int id, bool unk) = win 0xa0940; - bool hasLikedItemFullCheck(LikeItemType type, int itemID, int commentSourceID) = mac 0x2d83d0; + bool hasLikedItemFullCheck(LikeItemType type, int itemID, int commentSourceID) = mac 0x2d83d0, win 0xB86B0; bool hasRatedLevelStars(int levelID) = mac 0x2ca3a0; callback void ProcessHttpRequest(gd::string, gd::string, gd::string, GJHttpType) = mac 0x2a8670, win 0x9f8e0; cocos2d::CCDictionary* responseToDict(gd::string response, bool comment) = win 0xbba50; void storeUserNames(gd::string) = win 0xa1840; + void storeUserName(int userID, int accountID, gd::string str) = win 0xa1a70; gd::string userNameForUserID(int id) = win 0xa1c20; void updateUserScore() = win 0xada60; void downloadLevel(int id, bool downloadData) = win 0xaa730; @@ -2775,6 +2785,25 @@ class GameLevelManager : cocos2d::CCNode { GJGameLevel* getSavedLevel(int id) = win 0xa2ee0; void saveLevel(GJGameLevel* level) = win 0xa31c0; void deleteLevel(GJGameLevel* level) = mac 0x2b88d0, win 0xa1640; + void resetCommentTimersForLevelID(int id, bool commentHistory) = win 0xB3F10; + void resetStoredUserInfo(int id) { + m_storedUserInfo->removeObjectForKey(id); + } + void resetAccountComments(int id){ + int i = 0; + while(true){ + auto key = this->getAccountCommentKey(id, i++); + auto levels = getStoredOnlineLevels(key); + if(levels != nullptr){ + m_storedLevels->removeObjectForKey(key); + }else{ + break; + } + } + } + const char* getAccountCommentKey(int a2, int a3){ + return cocos2d::CCString::createWithFormat("a_%i_%i", a2, a3)->getCString(); + } inline static GameLevelManager* get() { return GameLevelManager::sharedState(); @@ -3607,8 +3636,8 @@ class InfoLayer : FLAlertLayer, LevelCommentDelegate, CommentUploadDelegate, FLA cocos2d::CCLabelBMFont* m_pageLabel; cocos2d::CCLabelBMFont* m_commentsGoldLabel; GJCommentListLayer* m_list; - CCMenuItemSpriteExtra* m_leftArrow; CCMenuItemSpriteExtra* m_rightArrow; + CCMenuItemSpriteExtra* m_leftArrow; CCMenuItemSpriteExtra* m_likeBtn; CCMenuItemSpriteExtra* m_timeBtn; CCMenuItemSpriteExtra* m_reportBtn; @@ -3644,14 +3673,19 @@ class LabelGameObject : GameObject { void setObjectColor(cocos2d::_ccColor3B const&) = mac 0xdbca0; } -class LeaderboardManagerDelegate {} +class LeaderboardManagerDelegate { + virtual void updateUserScoreFinished() {} + virtual void updateUserScoreFailed() {} + virtual void loadLeaderboardFinished(cocos2d::CCArray*, const char*) {} + virtual void loadLeaderboardFailed(const char*) {} +} class LeaderboardsLayer : cocos2d::CCLayer { static LeaderboardsLayer* create(LeaderboardState state) = win 0x158710; bool init(LeaderboardState state) = mac 0x29f6d0, win 0x1587b0; } -class LevelBrowserLayer : cocos2d::CCLayer { +class LevelBrowserLayer : cocos2d::CCLayer, LevelManagerDelegate, FLAlertLayerProtocol, SetIDPopupDelegate, SetTextPopupDelegate { static cocos2d::CCScene* scene(GJSearchObject* search) { auto scene = cocos2d::CCScene::create(); scene->addChild(LevelBrowserLayer::create(search)); @@ -3666,13 +3700,22 @@ class LevelBrowserLayer : cocos2d::CCLayer { void updateLevelsLabel() = win 0x15c350; static LevelBrowserLayer* create(GJSearchObject* search) = mac 0x251210, win 0x159fa0, ios 0x2d0a00; - PAD = win 0x18; + PAD = win 0x4; + int m_unk0; + TextArea* m_noInternet; GJListLayer* m_list; - CCMenuItemSpriteExtra* m_leftArrow; CCMenuItemSpriteExtra* m_rightArrow; - PAD = win 0x10; + CCMenuItemSpriteExtra* m_leftArrow; + CCMenuItemSpriteExtra* m_lastBtn; + CCMenuItemSpriteExtra* m_cancelSearchBtn; + void* m_unk4; + cocos2d::CCArray* m_array; GJSearchObject* m_searchObject; - PAD = win 0x14; + cocos2d::CCLabelBMFont* m_countText; + cocos2d::CCLabelBMFont* m_pageText; + CCMenuItemSpriteExtra* m_pageBtn; + cocos2d::CCLabelBMFont* m_folderText; + CCMenuItemSpriteExtra* m_folderBtn; int m_itemCount; int m_pageStartIdx; int m_pageEndIdx; @@ -3686,6 +3729,7 @@ class LevelCell : TableViewCell { void onViewProfile(cocos2d::CCObject*) = win 0x5c790; void loadCustomLevelCell() = mac 0x1183b0, win 0x5a020; void updateBGColor(int index) = win 0x5c6b0; + void loadFromLevel(GJGameLevel* level) = win 0x59FD0; } class LevelCommentDelegate { @@ -3943,6 +3987,10 @@ class LevelLeaderboard : FLAlertLayer { void onUpdate(cocos2d::CCObject* sender) = win 0x17d1b0; bool init(GJGameLevel* level, LevelLeaderboardType type) = mac 0x20d710, win 0x17c4f0; static LevelLeaderboard* create(GJGameLevel* level, LevelLeaderboardType leaderboardType) = win 0x17c440; + + PAD = win 0x4; + GJGameLevel* m_level; + LevelLeaderboardType m_type; } class LevelManagerDelegate {} @@ -3950,6 +3998,8 @@ class LevelManagerDelegate {} class LevelPage { PAD = win 0x124; GJGameLevel* m_level; + + void onInfo(cocos2d::CCObject* sender) = win 0x189070; } class LevelSearchLayer : cocos2d::CCLayer { @@ -4076,7 +4126,7 @@ class LikeItemLayer : FLAlertLayer { int m_commentSourceID; LikeItemDelegate* m_likeDelegate; - static LikeItemLayer* create(LikeItemType type, int itemID, int commentSourceID) = mac 0x35f760; + static LikeItemLayer* create(LikeItemType type, int itemID, int commentSourceID) = mac 0x35f760, win 0x18B940; bool init(LikeItemType type, int itemID, int commentSourceID) = mac 0x35f900; } @@ -5023,10 +5073,13 @@ class PointNode : cocos2d::CCObject { class ProfilePage : FLAlertLayer, FLAlertLayerProtocol, LevelCommentDelegate, CommentUploadDelegate, UserInfoDelegate, UploadActionDelegate, UploadPopupDelegate, LeaderboardManagerDelegate { static ProfilePage* create(int accountID, bool idk) = mac 0x45eed0, win 0x20ee50; - void getUserInfoFailed(int) = win 0x2133e0; + virtual void getUserInfoFailed(int) = win 0x2133e0; + virtual void getUserInfoChanged(GJUserScore*) = win 0x213430; bool init(int accountID, bool idk) = mac 0x45f170, win 0x20ef00; void onMyLevels(cocos2d::CCObject*) = win 0x211bb0; void onUpdate(cocos2d::CCObject*) = win 0x20fa20; + void onClose(cocos2d::CCObject*) = win 0x49C60; + virtual void keyBackClicked() = win 0x49C80; void loadPageFromUserInfo(GJUserScore* score) = win 0x210040; GJUserScore* m_score; @@ -5168,6 +5221,10 @@ class SetTargetIDLayer { void updateTargetID() = mac 0x15b4a0; } +class SetTextPopupDelegate { + virtual void setIDPopupClosed(void*, std::string) {} +} + class SetupAnimationPopup : FLAlertLayer { static SetupAnimationPopup* create(EffectGameObject*, cocos2d::CCArray*) = mac 0x208b70; void onTargetIDArrow(cocos2d::CCObject*) = mac 0x209fc0; @@ -5495,6 +5552,18 @@ class TableViewCell : cocos2d::CCLayer { // = mac 0x383de0, win 0x32e70; } + static TableViewCell* create(const char* name, float width, float height) { + auto pRet = new TableViewCell(name, width, height); + + if (pRet) { + pRet->autorelease(); + return pRet; + } + + CC_SAFE_DELETE(pRet); + return nullptr; + } + bool m_unknown; TableView* m_tableView; CCIndexPath m_indexPath; @@ -5637,7 +5706,11 @@ class UploadPopupDelegate { virtual void onClosePopup() {} } -class UserInfoDelegate {} +class UserInfoDelegate { + virtual void getUserInfoFinished(GJUserScore *) {} + virtual void getUserInfoFailed(int) {} + virtual void getUserInfoChanged(GJUserScore *) {} +} class VideoOptionsLayer : FLAlertLayer { VideoOptionsLayer* create() = win 0x1e0d70; diff --git a/loader/include/Geode/Enums.hpp b/loader/include/Geode/Enums.hpp index fb4294535..5665a7c55 100644 --- a/loader/include/Geode/Enums.hpp +++ b/loader/include/Geode/Enums.hpp @@ -21,6 +21,12 @@ enum class SearchType { HallOfFame = 16, FeaturedGDW = 17, Similar = 18, + ListsOnClick = 19, + Lists = 20, + DailyVault = 21, + WeeklyVault = 22, + EventVault = 23, + Reported = 24, MyLevels = 98, SavedLevels = 99, FavouriteLevels = 100 From 6af9f8cb0f8b2765b674719425bf80dc5672ebe6 Mon Sep 17 00:00:00 2001 From: Cvolton Date: Thu, 22 Jun 2023 01:22:59 +0200 Subject: [PATCH 02/11] add glm::limitsavedlevels --- bindings/GeometryDash.bro | 1 + 1 file changed, 1 insertion(+) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 857128f6f..966cf2b37 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -2762,6 +2762,7 @@ class GameLevelManager : cocos2d::CCNode { cocos2d::CCArray* createAndGetScores(gd::string, GJScoreType) = win 0xa2780; GJGameLevel* createNewLevel() = mac 0x2b8180, win 0xa0db0; static GameLevelManager* sharedState() = mac 0x2a8340, win 0x9f860; + void limitSavedLevels() = win 0xA43B0; cocos2d::CCArray* getCompletedLevels(bool newFilter) = win 0xa2d20; void getGJUserInfo(int) = win 0xb00b0; void getOnlineLevels(GJSearchObject*) = win 0xa7bc0; From b097404063dfcf7cb9588747a7983b31f1001d24 Mon Sep 17 00:00:00 2001 From: Cvolton Date: Thu, 22 Jun 2023 01:57:14 +0200 Subject: [PATCH 03/11] add chest reward related bindings --- bindings/GeometryDash.bro | 14 +++++++++++++- loader/include/Geode/Enums.hpp | 7 +++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 966cf2b37..4eeb93454 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -2436,7 +2436,7 @@ class GJItemIcon : cocos2d::CCSprite { bool, bool, bool, cocos2d::ccColor3B ) = win 0x12ccf0; - GJItemIcon* createBrowserIcon(UnlockType _type, int _id) { + static GJItemIcon* createBrowserIcon(UnlockType _type, int _id) { return GJItemIcon::create(_type, _id, { 0xaf, 0xaf, 0xaf }, { 0xff, 0xff, 0xff }, false, true, true, @@ -2491,6 +2491,14 @@ class GJRequestCell : TableViewCell { class GJRewardDelegate {} +class GJRewardItem : cocos2d::CCObject { + int m_chestID; + int m_timeRemaining; + GJRewardType m_rewardType; + cocos2d::CCArray* m_rewardObjects; + bool m_unk; +} + class GJRewardObject : cocos2d::CCObject { SpecialRewardItem m_specialRewardItem; UnlockType m_unlockType; @@ -5120,6 +5128,10 @@ class RetryLevelLayer { static RetryLevelLayer* create() = mac 0x28dd60, win 0x216390; } +class RewardsPage : FLAlertLayer { + bool init() = win 0x2178F0; +} + class RingObject : EffectGameObject { bool create(char const*) = win 0x252220; bool init(char const*) = win 0x2522E0; diff --git a/loader/include/Geode/Enums.hpp b/loader/include/Geode/Enums.hpp index 5665a7c55..e2583b8b5 100644 --- a/loader/include/Geode/Enums.hpp +++ b/loader/include/Geode/Enums.hpp @@ -289,6 +289,13 @@ enum class GJLevelType { Saved = 3 }; +enum class GJRewardType +{ + Unknown = 0x0, + Small = 0x1, + Large = 0x2 +}; + enum class IconType { Cube = 0, Ship = 1, From 39793e95ac33af32e2a0220a6132477a4bdbb520 Mon Sep 17 00:00:00 2001 From: Cvolton Date: Thu, 22 Jun 2023 02:23:05 +0200 Subject: [PATCH 04/11] fix GManager save() --- bindings/GeometryDash.bro | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 4eeb93454..9d30ceaa1 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -2744,7 +2744,10 @@ class GManager : cocos2d::CCNode { virtual void dataLoaded(DS_Dictionary* data) {} virtual void firstLoad() {} - void save() = mac 0x26f300, win 0x29250; + void save() { + save(m_fileName); + } + void save(gd::string) = mac 0x26f300, win 0x29250; void saveData(DS_Dictionary*, gd::string) = mac 0x26f4b0; void saveGMTo(gd::string) = mac 0x26f3b0, win 0x29250; @@ -2773,6 +2776,7 @@ class GameLevelManager : cocos2d::CCNode { void limitSavedLevels() = win 0xA43B0; cocos2d::CCArray* getCompletedLevels(bool newFilter) = win 0xa2d20; void getGJUserInfo(int) = win 0xb00b0; + void getLevelLeaderboard(GJGameLevel* level, LevelLeaderboardType leaderboardType) = win 0xAED70; void getOnlineLevels(GJSearchObject*) = win 0xa7bc0; void getPageInfo(char const*) = mac 0x2c0050; cocos2d::CCArray* getSavedLevels(bool favorite, int levelFolder) = win 0xa2960; From 37e58c05a055f1d3c6bee440ded9c605ca4a7215 Mon Sep 17 00:00:00 2001 From: Cvolton Date: Thu, 22 Jun 2023 02:23:53 +0200 Subject: [PATCH 05/11] fix gd::string in SetIDPopupDelegate --- bindings/GeometryDash.bro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 9d30ceaa1..365d6da17 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -5239,7 +5239,7 @@ class SetTargetIDLayer { } class SetTextPopupDelegate { - virtual void setIDPopupClosed(void*, std::string) {} + virtual void setIDPopupClosed(void*, gd::string) {} } class SetupAnimationPopup : FLAlertLayer { From ac300b479f98286cfeea1d3b36c9a202f778d74e Mon Sep 17 00:00:00 2001 From: Cvolton Date: Thu, 22 Jun 2023 12:31:24 +0200 Subject: [PATCH 06/11] add GManager::setup() address --- bindings/GeometryDash.bro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 365d6da17..00170a1c0 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -2739,7 +2739,7 @@ class GJUserScore : cocos2d::CCNode { } class GManager : cocos2d::CCNode { - virtual void setup() {} + virtual void setup() = win 0x28F60; virtual void encodeDataTo(DS_Dictionary* data) {} virtual void dataLoaded(DS_Dictionary* data) {} virtual void firstLoad() {} From 174f4fc811f222026acd92c501c55f51e8a02708 Mon Sep 17 00:00:00 2001 From: Cvolton Date: Thu, 22 Jun 2023 21:21:44 +0200 Subject: [PATCH 07/11] fix GManager::save --- bindings/GeometryDash.bro | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 00170a1c0..32239b0a2 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -2745,9 +2745,8 @@ class GManager : cocos2d::CCNode { virtual void firstLoad() {} void save() { - save(m_fileName); + saveGMTo(m_fileName); } - void save(gd::string) = mac 0x26f300, win 0x29250; void saveData(DS_Dictionary*, gd::string) = mac 0x26f4b0; void saveGMTo(gd::string) = mac 0x26f3b0, win 0x29250; From b6e95aa3ff174b0d1cc1a35eae1a112749805a65 Mon Sep 17 00:00:00 2001 From: Cvolton Date: Fri, 23 Jun 2023 21:02:57 +0200 Subject: [PATCH 08/11] add mac bindings (thanks nosu) --- bindings/GeometryDash.bro | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 32239b0a2..5f9f09442 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -885,8 +885,8 @@ class ColorSetupDelegate { class CommentCell : TableViewCell, LikeItemDelegate, FLAlertLayerProtocol { void loadFromComment(GJComment*) = mac 0x111c70, win 0x5f3d0; - void onConfirmDelete(cocos2d::CCObject* sender) = win 0x61140; - void onLike(cocos2d::CCObject* sender) = win 0x60F90; + void onConfirmDelete(cocos2d::CCObject* sender) = mac 0x25ec80, win 0x61140; + void onLike(cocos2d::CCObject* sender) = mac 0x11d000, win 0x60F90; virtual void FLAlert_Clicked(FLAlertLayer* layer, bool btn) = win 0x61260; virtual void likedItem(LikeItemType type, int id, bool special) = win 0x61070; @@ -943,7 +943,7 @@ class CreateMenuItem : CCMenuItemSpriteExtra { //TODO: inherits cocos2d::CCSceneTransitionDelegate class CreatorLayer : cocos2d::CCLayer { void onBack(cocos2d::CCObject*) = win 0x4fae0; - void onChallenge(cocos2d::CCObject*) = win 0x4f1b0; + void onChallenge(cocos2d::CCObject*) = mac 0x142960, win 0x4f1b0; void onLeaderboards(cocos2d::CCObject*) = win 0x4ed20; void onMyLevels(cocos2d::CCObject*) = mac 0x142b70, win 0x4eaa0; void onSavedLevels(cocos2d::CCObject*) = mac 0x142860, win 0x4ebe0; @@ -1063,7 +1063,7 @@ class CustomizeObjectLayer : FLAlertLayer, TextInputDelegate, HSVWidgetPopupDele class DailyLevelPage : FLAlertLayer { static DailyLevelPage* create(bool weekly) = win 0x6a860; - bool init(bool weekly) = win 0x6a900; + bool init(bool weekly) = mac 0x10abb0, win 0x6a900; virtual void updateTimers(float) = win 0x6bef0; virtual void show() = mac 0x10a4b0, win 0x3f360; @@ -1214,7 +1214,7 @@ class EditLevelLayer : cocos2d::CCLayer, FLAlertLayerProtocol, TextInputDelegate static EditLevelLayer* create(GJGameLevel* level) = mac 0xe1e50, win 0x6f530, ios 0x82420; bool init(GJGameLevel* level) = mac 0xe1fd0, win 0x6f5d0; - void onLevelInfo(cocos2d::CCObject*) = win 0x70660; + void onLevelInfo(cocos2d::CCObject*) = mac 0xe4f60, win 0x70660; cocos2d::CCMenu* m_buttonMenu; GJGameLevel* m_level; @@ -3634,12 +3634,12 @@ class InfoAlertButton : CCMenuItemSpriteExtra { } class InfoLayer : FLAlertLayer, LevelCommentDelegate, CommentUploadDelegate, FLAlertLayerProtocol { - bool init(GJGameLevel* level, GJUserScore* score) = win 0x14f5a0; - void setupCommentsBrowser(cocos2d::CCArray* comments) = win 0x152270; + bool init(GJGameLevel* level, GJUserScore* score) = mac 0x456850, win 0x14f5a0; + void setupCommentsBrowser(cocos2d::CCArray* comments) = mac 0x458590, win 0x152270; void onMore(cocos2d::CCObject* sender) = win 0x151500; - void onLevelInfo(cocos2d::CCObject* sender) = win 0x151850; + void onLevelInfo(cocos2d::CCObject* sender) = mac 0x459400, win 0x151850; void loadPage(int page, bool) = win 0x151e70; - static InfoLayer* create(GJGameLevel* level, GJUserScore* score) = win 0x14f4f0; + static InfoLayer* create(GJGameLevel* level, GJUserScore* score) = mac 0x456600, win 0x14f4f0; GJGameLevel* m_level; GJUserScore* m_score; @@ -3738,7 +3738,7 @@ class LevelCell : TableViewCell { GJGameLevel* m_level; bool m_cellDrawn; - void onViewProfile(cocos2d::CCObject*) = win 0x5c790; + void onViewProfile(cocos2d::CCObject*) = mac 0x11a4a0, win 0x5c790; void loadCustomLevelCell() = mac 0x1183b0, win 0x5a020; void updateBGColor(int index) = win 0x5c6b0; void loadFromLevel(GJGameLevel* level) = win 0x59FD0; @@ -3970,8 +3970,8 @@ class LevelInfoLayer : cocos2d::CCLayer, LevelDownloadDelegate, LevelUpdateDeleg static LevelInfoLayer* create(GJGameLevel* level) = mac 0x15f290, win 0x175d50; bool init(GJGameLevel* level) = win 0x175df0, mac 0x15f520; void onGarage(cocos2d::CCObject* sender) = win 0x177c10; - void onViewProfile(cocos2d::CCObject* sender) = win 0x17ac90; - void onLevelInfo(cocos2d::CCObject* sender) = win 0x17acf0; + void onViewProfile(cocos2d::CCObject* sender) = mac 0x1617d0, win 0x17ac90; + void onLevelInfo(cocos2d::CCObject* sender) = mac 0x163880, win 0x17acf0; void setupProgressBars() = win 0x177fc0; void downloadLevel() = win 0x177d90; @@ -4260,7 +4260,7 @@ class MessageListDelegate {} class MoreSearchLayer : FLAlertLayer { static MoreSearchLayer* create() = win 0x182520; - virtual bool init() = win 0x1825c0; + virtual bool init() = mac 0x3896b0, win 0x1825c0; } class MoreOptionsLayer : FLAlertLayer, TextInputDelegate, GooglePlayDelegate { @@ -5090,7 +5090,7 @@ class ProfilePage : FLAlertLayer, FLAlertLayerProtocol, LevelCommentDelegate, Co bool init(int accountID, bool idk) = mac 0x45f170, win 0x20ef00; void onMyLevels(cocos2d::CCObject*) = win 0x211bb0; void onUpdate(cocos2d::CCObject*) = win 0x20fa20; - void onClose(cocos2d::CCObject*) = win 0x49C60; + void onClose(cocos2d::CCObject*) = mac 0x45fd20, win 0x49C60; virtual void keyBackClicked() = win 0x49C80; void loadPageFromUserInfo(GJUserScore* score) = win 0x210040; @@ -5132,7 +5132,7 @@ class RetryLevelLayer { } class RewardsPage : FLAlertLayer { - bool init() = win 0x2178F0; + bool init() = mac 0xf3800, win 0x2178F0; } class RingObject : EffectGameObject { From fa994225f455a3d5ac513c12fe99fc0ddc1e22e8 Mon Sep 17 00:00:00 2001 From: Cvolton Date: Sat, 24 Jun 2023 00:00:55 +0200 Subject: [PATCH 09/11] add mac moresearchlayer create (thanks nosu) --- bindings/GeometryDash.bro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 5f9f09442..3251a1292 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -4259,7 +4259,7 @@ class MenuLayer : cocos2d::CCLayer, FLAlertLayerProtocol, GooglePlayDelegate { class MessageListDelegate {} class MoreSearchLayer : FLAlertLayer { - static MoreSearchLayer* create() = win 0x182520; + static MoreSearchLayer* create() = mac 0x38ab40, win 0x182520; virtual bool init() = mac 0x3896b0, win 0x1825c0; } From fc037fdb2c6371c060e13d172fa545682775e18c Mon Sep 17 00:00:00 2001 From: ToasterCoder <105929223+ToasterCoder44@users.noreply.github.com> Date: Sat, 10 Jun 2023 20:54:31 +0200 Subject: [PATCH 10/11] Update GeometryDash.bro --- bindings/GeometryDash.bro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bindings/GeometryDash.bro b/bindings/GeometryDash.bro index 39d90fb6d..6e4f9d301 100644 --- a/bindings/GeometryDash.bro +++ b/bindings/GeometryDash.bro @@ -4901,8 +4901,8 @@ class PlayerObject : GameObject, AnimatedSpriteDelegate { PAD = mac 0x30, win 0x1c; bool m_unk4B0; cocos2d::CCSprite* m_unk4B4; - int m_unk4B8; - int m_unk4BC; + int m_collidedGroundObjectUniqueID; + int m_collidedCeilObjectUniqueID; PAD = mac 0x14, win 0x14; bool m_unk4D4; cocos2d::CCArray* m_particleSystems; From 0fee8010a83a91825b46e5f32a42a87f8731345d Mon Sep 17 00:00:00 2001 From: alk <45172705+altalk23@users.noreply.github.com> Date: Sun, 30 Jul 2023 20:54:46 +0300 Subject: [PATCH 11/11] fix LevelBrowserLayer macchew checks --- loader/test/members/MacOS.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/loader/test/members/MacOS.cpp b/loader/test/members/MacOS.cpp index 42eb843b7..483c2d9f6 100644 --- a/loader/test/members/MacOS.cpp +++ b/loader/test/members/MacOS.cpp @@ -68,11 +68,12 @@ GEODE_MEMBER_CHECK(ColorSelectPopup, m_copyColor, 0x372); GEODE_MEMBER_CHECK(LevelInfoLayer, m_level, 0x1c0); // LevelBrowserLayer -GEODE_MEMBER_CHECK(LevelBrowserLayer, m_leftArrow, 0x1a8); +GEODE_MEMBER_CHECK(LevelBrowserLayer, m_rightArrow, 0x1a8); +GEODE_MEMBER_CHECK(LevelBrowserLayer, m_leftArrow, 0x1b0); GEODE_MEMBER_CHECK(LevelBrowserLayer, m_searchObject, 0x1d8); GEODE_MEMBER_CHECK(LevelBrowserLayer, m_itemCount, 0x208); // LocalLevelManager GEODE_MEMBER_CHECK(LocalLevelManager, m_localLevels, 0x140); -#endif \ No newline at end of file +#endif