diff --git a/bindings/2.206/Cocos2d.bro b/bindings/2.206/Cocos2d.bro index d1e285c2a..aaaab184b 100644 --- a/bindings/2.206/Cocos2d.bro +++ b/bindings/2.206/Cocos2d.bro @@ -520,7 +520,7 @@ class cocos2d::CCParticleSystemQuad { static cocos2d::CCParticleSystemQuad* createWithTotalParticles(unsigned int, bool); void initIndices(); - void initTexCoordsWithRect(cocos2d::CCRect const&); + void initTexCoordsWithRect(cocos2d::CCRect const&) = imac 0x60dea0, m1 0x5331b4; unsigned char getOpacity(); @@ -531,19 +531,22 @@ class cocos2d::CCParticleSystemQuad { // CCParticleSystemQuad(cocos2d::CCParticleSystemQuad const&); // CCParticleSystemQuad(); ~CCParticleSystemQuad() = imac 0x60dc00, m1 0x532f54; - bool allocMemory(); + bool allocMemory() = imac 0x60d5a0, m1 0x532bd4; void listenBackToForeground(cocos2d::CCObject*); + [[missing(mac, ios)]] void setupVBO(); + [[missing(win, android)]] + void setupVBOandVAO() = imac 0x60d990, m1 0x532d28; void updateTexCoords(); - virtual void draw(); - virtual void setBatchNode(cocos2d::CCParticleBatchNode*); - virtual void setTotalParticles(unsigned int); - virtual bool initWithTotalParticles(unsigned int, bool); - virtual void updateQuadWithParticle(cocos2d::sCCParticle*, cocos2d::CCPoint const&); - virtual void postStep(); + virtual void draw() = imac 0x60e640, m1 0x53393c; + virtual void setBatchNode(cocos2d::CCParticleBatchNode*) = imac 0x60ec20, m1 0x533c10; + virtual void setTotalParticles(unsigned int) = imac 0x60e700, m1 0x533a00; + virtual bool initWithTotalParticles(unsigned int, bool) = imac 0x60d260, m1 0x532af0; + virtual void updateQuadWithParticle(cocos2d::sCCParticle*, cocos2d::CCPoint const&) = imac 0x60e2a0, m1 0x533618; + virtual void postStep() = imac 0x60e5f0, m1 0x5338f0; - virtual void setTexture(cocos2d::CCTexture2D*); + virtual void setTexture(cocos2d::CCTexture2D*) = imac 0x60e0f0, m1 0x533430; } [[link(win, android)]] @@ -1697,7 +1700,7 @@ class cocos2d::CCLabelBMFont { CC_SAFE_DELETE(pRet); return nullptr; } - static cocos2d::CCLabelBMFont* createBatched(char const*, char const*, cocos2d::CCArray*, int); + static cocos2d::CCLabelBMFont* createBatched(char const*, char const*, cocos2d::CCArray*, int) = m1 0x50b780, imac 0x5e1320; static void purgeCachedData(); bool initWithString(char const*, char const*, float, cocos2d::CCTextAlignment, cocos2d::CCPoint) = ios 0x30b864, imac 0x5e1050, m1 0x50b4cc; @@ -2488,6 +2491,34 @@ class cocos2d::CCMenuItemSprite { virtual void updateImagesVisibility() = imac 0x3c3880, m1 0x346c7c, ios 0x537c4; } +[[link(win, android)]] +class cocos2d::CCMenuItemImage { + static cocos2d::CCMenuItemImage* create(const char *normalImage, const char *selectedImage) = m1 0x3470dc; + static cocos2d::CCMenuItemImage* create(const char *normalImage, const char *selectedImage, const char *disabledImage) = m1 0x3472fc; + static cocos2d::CCMenuItemImage* create(const char *normalImage, const char *selectedImage, CCObject* target, SEL_MenuHandler selector) = m1 0x347244; + static cocos2d::CCMenuItemImage* create(const char *normalImage, const char *selectedImage, const char *disabledImage, CCObject* target, SEL_MenuHandler selector) = m1 0x347180; + + bool init() = m1 0x346ea4; + bool initWithNormalImage(const char *normalImage, const char *selectedImage, const char *disabledImage, CCObject* target, SEL_MenuHandler selector) = m1 0x346f8c; + void setNormalSpriteFrame(CCSpriteFrame* frame); + void setSelectedSpriteFrame(CCSpriteFrame* frame); + void setDisabledSpriteFrame(CCSpriteFrame* frame); + + static cocos2d::CCMenuItemImage* create() = m1 inline { + cocos2d::CCMenuItemImage* pRet = new CCMenuItemImage(); + if (pRet && pRet->init()) + { + pRet->autorelease(); + } + else + { + CC_SAFE_DELETE(pRet); + } + return pRet; + } +} + + [[link(win, android)]] class cocos2d::CCMenu { // static cocos2d::CCMenu* create(cocos2d::CCMenuItem*, ...) = ios 0x1e1964, m1 0x6a6d58, imac 0x79e7b0; diff --git a/bindings/2.206/GeometryDash.bro b/bindings/2.206/GeometryDash.bro index 658d702bd..4f9ab5db1 100644 --- a/bindings/2.206/GeometryDash.bro +++ b/bindings/2.206/GeometryDash.bro @@ -1626,7 +1626,7 @@ class CCSpriteWithHue : cocos2d::CCSprite { float getAlpha(); float getHue(); void getUniformLocations(); - void initShader() = m1 0x5221c4; + void initShader(); void setCustomLuminance(float, float, float); void setEvenLuminance(float) = imac 0x5fb1b0, m1 0x5229c0; void setHue(float); @@ -1947,7 +1947,7 @@ class CheckpointGameObject : EffectGameObject { virtual void customObjectSetup(gd::vector&, gd::vector&) = m1 0x18a010, imac 0x1d0730; virtual gd::string getSaveString(GJBaseGameLayer*) = m1 0x18971c, imac 0x1cfc50; virtual void triggerActivated(float) = m1 0x188a34, imac 0x1cee90, win 0x48d650; - virtual TodoReturn restoreObject() = m1 0x18a194, imac 0x1d08e0; + virtual void restoreObject() = m1 0x18a194, imac 0x1d08e0; virtual void updateSyncedAnimation(float, int) = m1 0x189380, imac 0x1cf840; } @@ -1956,7 +1956,7 @@ class CheckpointObject : cocos2d::CCNode { // virtual ~CheckpointObject(); CheckpointObject() = win 0x381f50; - static CheckpointObject* create() = win inline, m1 0xb58e0 { + static CheckpointObject* create() = win inline { auto ret = new CheckpointObject(); if (ret->init()) { ret->autorelease(); @@ -3491,7 +3491,7 @@ class EditorPauseLayer : CCBlockLayer, FLAlertLayerProtocol { void onExitEditor(cocos2d::CCObject* sender) = win 0xda950; void onExitNoSave(cocos2d::CCObject* sender) = win 0xdaa20; void onHelp(cocos2d::CCObject* sender); - void onKeybindings(cocos2d::CCObject* sender) = m1 0x2335b0; + void onKeybindings(cocos2d::CCObject* sender); void onNewGroupX(cocos2d::CCObject* sender); void onNewGroupY(cocos2d::CCObject* sender); void onOptions(cocos2d::CCObject* sender); @@ -3577,7 +3577,7 @@ class EditorUI : cocos2d::CCLayer, FLAlertLayerProtocol, ColorSelectDelegate, GJ TodoReturn closeLiveHSVSelect(); void colorSelectClosed(cocos2d::ccColor3B); void constrainGameLayerPosition(); - void constrainGameLayerPosition(float, float) = win 0x11e960, m1 0x2bc50; + void constrainGameLayerPosition(float, float) = win 0x11e960; TodoReturn convertKeyBasedOnNeighbors(int, int, cocos2d::CCPoint, cocos2d::CCArray*); TodoReturn convertToBaseKey(int); TodoReturn copyObjects(cocos2d::CCArray*, bool, bool); @@ -3598,7 +3598,7 @@ class EditorUI : cocos2d::CCLayer, FLAlertLayerProtocol, ColorSelectDelegate, GJ TodoReturn createRockEdges(cocos2d::CCArray*); TodoReturn createSmartObjectsFromTemplate(GJSmartTemplate*, cocos2d::CCArray*, bool, bool, bool, bool); TodoReturn createSmartObjectsFromType(int, cocos2d::CCArray*, bool, bool); - UndoObject* createUndoObject(UndoCommand, bool) = win 0x10d3d0, m1 0x38940; + UndoObject* createUndoObject(UndoCommand, bool) = win 0x10d3d0; TodoReturn createUndoSelectObject(bool) = win 0x10d6f0; TodoReturn deactivateRotationControl() = ios 0x3CFABC; TodoReturn deactivateScaleControl() = win 0x111010, ios 0x3CFB8C; @@ -3612,7 +3612,7 @@ class EditorUI : cocos2d::CCLayer, FLAlertLayerProtocol, ColorSelectDelegate, GJ void deselectObjectsColor(); TodoReturn deselectTargetPortals(); TodoReturn disableButton(CreateMenuItem*); - void doCopyObjects(bool) = win 0x10f490, m1 0x39c0c; + void doCopyObjects(bool) = win 0x10f490; TodoReturn doPasteInPlace(bool); void doPasteObjects(bool) = win 0x10f620; TodoReturn dynamicGroupUpdate(bool); @@ -3672,17 +3672,14 @@ class EditorUI : cocos2d::CCLayer, FLAlertLayerProtocol, ColorSelectDelegate, GJ TodoReturn liveEditColorUsable(); CreateMenuItem* menuItemFromObjectString(gd::string, int) = win 0x10ac30; cocos2d::CCPoint moveForCommand(EditCommand command) = win 0x11b9b0; - void moveGamelayer(cocos2d::CCPoint) = win 0xdf250, m1 0x2fba8; + void moveGamelayer(cocos2d::CCPoint) = win 0xdf250; void moveObject(GameObject*, cocos2d::CCPoint) = win 0x11be20; void moveObjectCall(cocos2d::CCObject*) = win 0x11bb60; - void moveObjectCall(EditCommand) = win 0x11bb90, m1 0x444f4; + void moveObjectCall(EditCommand) = win 0x11bb90; cocos2d::CCPoint offsetForKey(int) = win 0x122780; TodoReturn onAssignNewGroupID(); void onColorFilter(cocos2d::CCObject* sender); - void onCopy(cocos2d::CCObject* sender) = win 0x10f480, m1 inline { - EditorUI *thing = (EditorUI *)sender; - thing->doCopyObjects(0); - } + void onCopy(cocos2d::CCObject* sender) = win 0x10f480; void onCopyState(cocos2d::CCObject* sender) = win 0x110650; bool onCreate() = win 0x10b8b0; void onCreateButton(cocos2d::CCObject* sender) = win 0x10b420; @@ -3724,7 +3721,7 @@ class EditorUI : cocos2d::CCLayer, FLAlertLayerProtocol, ColorSelectDelegate, GJ void onUpdateDeleteFilter(cocos2d::CCObject* sender); void orderDownCustomItem(cocos2d::CCObject*) = win 0xe0bf0; void orderUpCustomItem(cocos2d::CCObject*) = win 0xe0b60; - TodoReturn pasteObjects(gd::string, bool); + void pasteObjects(gd::string, bool); TodoReturn playCircleAnim(cocos2d::CCPoint, float, float); TodoReturn playerTouchBegan(cocos2d::CCTouch*, cocos2d::CCEvent*); TodoReturn playerTouchEnded(cocos2d::CCTouch*, cocos2d::CCEvent*); @@ -3780,7 +3777,7 @@ class EditorUI : cocos2d::CCLayer, FLAlertLayerProtocol, ColorSelectDelegate, GJ void toggleSwipe(cocos2d::CCObject*) = win 0x10c480; void transformObject(GameObject*, EditCommand, bool) = win 0x11c890; void transformObjectCall(cocos2d::CCObject*); - void transformObjectCall(EditCommand) = win 0x11c340, m1 0x44914; + void transformObjectCall(EditCommand) = win 0x11c340; void transformObjects(cocos2d::CCArray* objs, cocos2d::CCPoint anchor, float scaleX, float scaleY, float rotateX, float rotateY, float warpX, float warpY) = win 0x11da50; TodoReturn transformObjectsActive(); TodoReturn transformObjectsReset(); @@ -3995,12 +3992,12 @@ class EffectGameObject : EnhancedGameObject { virtual void setRScaleX(float) = m1 0x172504, imac 0x1b4370; virtual void setRScaleY(float) = m1 0x172514, imac 0x1b4390; virtual void triggerActivated(float) = m1 0x173be8, imac 0x1b6410; - virtual TodoReturn restoreObject() = m1 0x173998, imac 0x1b61d0; - virtual TodoReturn spawnXPosition() = m1 0x173ba8, imac 0x1b63d0; - virtual TodoReturn canReverse() = m1 0x173df0, imac 0x1b6570; + virtual void restoreObject() = m1 0x173998, imac 0x1b61d0; + virtual float spawnXPosition() = m1 0x173ba8, imac 0x1b63d0; + virtual bool canReverse() = m1 0x173df0, imac 0x1b6570; virtual bool isSpecialSpawnObject() = m1 0x173e7c, imac 0x1b65e0; - virtual TodoReturn canBeOrdered() = m1 0x173e84, imac 0x1b65f0; - virtual TodoReturn getObjectLabel() = m1 0x1a1550, imac 0x1ed550; + virtual bool canBeOrdered() = m1 0x173e84, imac 0x1b65f0; + virtual cocos2d::CCLabelBMFont* getObjectLabel() = m1 0x1a1550, imac 0x1ed550; virtual void setObjectLabel(cocos2d::CCLabelBMFont*) = m1 0x1a1558, imac 0x1ed560; virtual TodoReturn stateSensitiveOff(GJBaseGameLayer*) = m1 0x173908, imac 0x1b6130; @@ -4244,12 +4241,12 @@ class EndLevelLayer : GJDropDownLayer { TodoReturn diamondEnterFinished() = win 0x132860; TodoReturn getCoinString() = win 0x130820; const char* getEndText() = win 0x132c80; - void goEdit() = win 0x1311d0, m1 0x42bcc4; - void onEdit(cocos2d::CCObject* sender) = win 0x1310d0, m1 0x42ac7c; + void goEdit() = win 0x1311d0; + void onEdit(cocos2d::CCObject* sender) = win 0x1310d0; void onEveryplay(cocos2d::CCObject* sender); void onHideLayer(cocos2d::CCObject* sender) = win 0x1312a0, m1 0x42aef0, imac 0x4cbff0; void onLevelLeaderboard(cocos2d::CCObject* sender) = win 0x130720; - void onMenu(cocos2d::CCObject* sender) = win 0x130f50, m1 0x42ab78; + void onMenu(cocos2d::CCObject* sender) = win 0x130f50; void onReplay(cocos2d::CCObject* sender) = win 0x130f40; void onRestartCheckpoint(cocos2d::CCObject* sender) = win 0x131380; void playCoinEffect(float) = win 0x131aa0; @@ -4315,7 +4312,7 @@ class EnhancedGameObject : GameObject { static EnhancedGameObject* create(char const*); TodoReturn createRotateAction(float, int); - bool init(char const*); + bool init(char const*) = win 0x19a7c0; TodoReturn previewAnimateOnTrigger(); TodoReturn refreshRotateAction(); TodoReturn resetSyncedAnimation(); @@ -4332,18 +4329,18 @@ class EnhancedGameObject : GameObject { virtual void customObjectSetup(gd::vector&, gd::vector&) = m1 0x501ed8, imac 0x5d4d40; virtual gd::string getSaveString(GJBaseGameLayer*) = m1 0x50345c, imac 0x5d8140; virtual void triggerActivated(float) = m1 0x501d50, imac 0x5d4bd0; - virtual TodoReturn restoreObject() = m1 0x501ca0, imac 0x5d4b00; - virtual TodoReturn animationTriggered() = m1 0x501e50, imac 0x5d4ca0; - virtual TodoReturn activatedByPlayer(PlayerObject*) = m1 0x501d5c, imac 0x5d4be0; - virtual TodoReturn hasBeenActivatedByPlayer(PlayerObject*) = m1 0x501dbc, imac 0x5d4c30; + virtual void restoreObject() = m1 0x501ca0, imac 0x5d4b00; + virtual void animationTriggered() = m1 0x501e50, imac 0x5d4ca0; + virtual void activatedByPlayer(PlayerObject*) = m1 0x501d5c, imac 0x5d4be0; + virtual bool hasBeenActivatedByPlayer(PlayerObject*) = m1 0x501dbc, imac 0x5d4c30; TodoReturn resumeAudio(); TodoReturn resumeAudioDelayed(); - virtual TodoReturn hasBeenActivated() = m1 0x501e30, imac 0x5d4c80; - virtual TodoReturn saveActiveColors() = m1 0x501e60, imac 0x5d4cc0; - virtual TodoReturn canAllowMultiActivate() = m1 0x501b2c, imac 0x5d4760; - virtual TodoReturn getHasSyncedAnimation() = m1 0x1a1528, imac 0x1ed500; - virtual TodoReturn getHasRotateAction() = m1 0x1a1530, imac 0x1ed510; - virtual TodoReturn canMultiActivate(bool) = m1 0x501d2c, imac 0x5d4bb0; + virtual bool hasBeenActivated() = m1 0x501e30, imac 0x5d4c80; + virtual void saveActiveColors() = m1 0x501e60, imac 0x5d4cc0; + virtual bool canAllowMultiActivate() = m1 0x501b2c, imac 0x5d4760; + virtual bool getHasSyncedAnimation() = m1 0x1a1528, imac 0x1ed500; + virtual bool getHasRotateAction() = m1 0x1a1530, imac 0x1ed510; + virtual bool canMultiActivate(bool) = m1 0x501d2c, imac 0x5d4bb0; virtual TodoReturn powerOnObject(int) = m1 0x501cd8, imac 0x5d4b40; virtual TodoReturn powerOffObject() = m1 0x501cec, imac 0x5d4b60; virtual TodoReturn stateSensitiveOff(GJBaseGameLayer*) = m1 0x173994, imac 0x1b61c0; @@ -4669,9 +4666,9 @@ class FMODAudioEngine : cocos2d::CCNode { TodoReturn getFMODStatus(int) = win 0x5ba00, ios 0x1450f8; float getMeteringValue() = imac 0x3e7ec0, m1 0x366518; TodoReturn getMusicChannelID(int); - unsigned int getMusicLengthMS(int channel) = win 0x5b0e0, m1 0x36ba10; + unsigned int getMusicLengthMS(int channel) = win 0x5b0e0; TodoReturn getMusicTime(int); - unsigned int getMusicTimeMS(int channel) = win 0x5b080, m1 0x36b920; + unsigned int getMusicTimeMS(int channel) = win 0x5b080; TodoReturn getNextChannelID(); TodoReturn getTweenContainer(AudioTargetType); bool isChannelStopping(int); @@ -4715,7 +4712,7 @@ class FMODAudioEngine : cocos2d::CCNode { TodoReturn printResult(FMOD_RESULT); TodoReturn queuedEffectFinishedLoading(gd::string); TodoReturn queuePlayEffect(gd::string, float, float, float, float, bool, bool, int, int, int, int, bool, int, bool, int, float, int) = win 0x56a70; - void queueStartMusic(gd::string audioFilename, float, float, float, bool, int ms, int, int, int, int, bool, int, bool) = win 0x59a40, m1 0x36a304; + void queueStartMusic(gd::string audioFilename, float, float, float, bool, int ms, int, int, int, int, bool, int, bool) = win 0x59a40; TodoReturn registerChannel(FMOD::Channel*, int, int); void releaseRemovedSounds(); void resumeAllAudio() = imac 0x3e1f20, m1 0x362064; @@ -4745,7 +4742,7 @@ class FMODAudioEngine : cocos2d::CCNode { m_sfxVolume = volume; if (m_globalChannel) m_globalChannel->setVolume(volume); } - void setMusicTimeMS(unsigned int ms, bool, int channel) = win 0x5af40, m1 0x365984; + void setMusicTimeMS(unsigned int ms, bool, int channel) = win 0x5af40; void setup() = win 0x52d40, m1 0x36103c, imac 0x3e0e30, ios 0x13e5f0; void setupAudioEngine() = win 0x53220; void start() = win 0x54400; @@ -4858,9 +4855,7 @@ class FMODAudioState { gd::unordered_map m_unkMapIntFMODQueuedMusic1; gd::unordered_map m_unkMapIntFMODQueuedMusic2; gd::unordered_map m_unkMapIntFMODSoundState; - PAD = win 0x0, android32 0x4, android64 0x0, mac 0x0; // welcome to today's episode of "this makes no f****ng sense" - int m_unkInt1; - int m_unkInt2; + int64_t m_unkInt1; } [[link(android)]] @@ -5334,12 +5329,16 @@ class GameLevelManager : cocos2d::CCNode { void resetTimerForKey(char const*) = win 0x144ac0; static cocos2d::CCDictionary* responseToDict(gd::string, bool) = win 0x1628d0, imac 0x538380, m1 0x48aeb8; void restoreItems(); - void saveFetchedLevelLists(cocos2d::CCArray*); + void saveFetchedLevelLists(cocos2d::CCArray* lists) = win inline, m1 0x48bca4, imac 0x539210 { + for (int i = 0; i < lists->count(); i++) { + this->saveLevelList(static_cast(lists->objectAtIndex(i))); + } + } void saveFetchedLevels(cocos2d::CCArray*) = win 0x141e70, imac 0x538600, m1 0x48b144; void saveFetchedMapPacks(cocos2d::CCArray*); void saveGauntlet(GJMapPack*); void saveLevel(GJGameLevel*) = win 0x1438e0; - void saveLevelList(GJLevelList*); + void saveLevelList(GJLevelList*) = win 0x14b7a0, m1 0x48bd08, imac 0x539270; void saveLocalScore(int, int, int); void saveMapPack(GJMapPack*); void setActiveSmartTemplate(GJSmartTemplate*); @@ -5635,7 +5634,7 @@ class GameManager : GManager { TodoReturn defaultFrameForAnimation(int); TodoReturn defaultYOffsetForBG2(int); TodoReturn didExitPlayscene() = imac 0x38ccf0, m1 0x315cb0; - void doQuickSave() = m1 0x315c84; + void doQuickSave(); TodoReturn dpadConfigToString(UIButtonConfig&) = win 0x17cde0, imac 0x388940, m1 0x311f0c; TodoReturn eventUnlockFeature(char const*); void fadeInMenuMusic() = win 0x173140, imac 0x378e90, m1 0x3045f8, ios 0x323038; @@ -5979,41 +5978,41 @@ class GameObject : CCSpritePlus { GameObject() = win 0x133690; void addColorSprite(gd::string) = win 0x1847f0, imac 0x5ad230, m1 0x4edac4; - TodoReturn addColorSpriteToParent(bool); - TodoReturn addColorSpriteToSelf(); - TodoReturn addCustomBlackChild(gd::string, float, bool); - TodoReturn addCustomChild(gd::string, cocos2d::CCPoint, int); - TodoReturn addCustomColorChild(gd::string); - TodoReturn addEmptyGlow(); - TodoReturn addGlow(gd::string); - TodoReturn addInternalChild(cocos2d::CCSprite*, gd::string, cocos2d::CCPoint, int); - TodoReturn addInternalCustomColorChild(gd::string, cocos2d::CCPoint, int); - TodoReturn addInternalGlowChild(gd::string, cocos2d::CCPoint); - TodoReturn addNewSlope01(bool); - TodoReturn addNewSlope01Glow(bool); - TodoReturn addNewSlope02(bool); - TodoReturn addNewSlope02Glow(bool); - TodoReturn addRotation(float, float); - TodoReturn addRotation(float); - TodoReturn addToColorGroup(int); + void addColorSpriteToParent(bool); + void addColorSpriteToSelf(); + cocos2d::CCSprite* addCustomBlackChild(gd::string, float, bool); + cocos2d::CCSprite* addCustomChild(gd::string, cocos2d::CCPoint, int); + cocos2d::CCSprite* addCustomColorChild(gd::string); + void addEmptyGlow(); + void addGlow(gd::string); + cocos2d::CCSprite* addInternalChild(cocos2d::CCSprite*, gd::string, cocos2d::CCPoint, int); + cocos2d::CCSprite* addInternalCustomColorChild(gd::string, cocos2d::CCPoint, int); + cocos2d::CCSprite* addInternalGlowChild(gd::string, cocos2d::CCPoint); + void addNewSlope01(bool); + void addNewSlope01Glow(bool); + void addNewSlope02(bool); + void addNewSlope02Glow(bool); + void addRotation(float, float); + void addRotation(float); + void addToColorGroup(int); void addToCustomScaleX(float) = imac 0x5c4cb0, m1 0x4f4054; void addToCustomScaleY(float) = imac 0x5c4cf0, m1 0x4f407c; - TodoReturn addToOpacityGroup(int); - TodoReturn addToTempOffset(double, double); - TodoReturn assignUniqueID(); - TodoReturn belongsToGroup(int); - TodoReturn calculateOrientedBox(); - TodoReturn canChangeCustomColor(); - TodoReturn canChangeMainColor(); - TodoReturn canChangeSecondaryColor(); - TodoReturn canRotateFree(); - TodoReturn colorForMode(int, bool); - TodoReturn commonInteractiveSetup(); + void addToOpacityGroup(int); + void addToTempOffset(double, double); + void assignUniqueID(); + bool belongsToGroup(int); + void calculateOrientedBox(); + bool canChangeCustomColor(); + bool canChangeMainColor(); + bool canChangeSecondaryColor(); + bool canRotateFree(); + cocos2d::ccColor3B colorForMode(int, bool); // could be a ptr + void commonInteractiveSetup(); void commonSetup() = win 0x183d30, imac 0x5aa930, m1 0x4ed04c; void copyGroups(GameObject*) = win 0x192980, imac 0x5c70a0, m1 0x4f6300; - TodoReturn createAndAddParticle(int, char const*, int, cocos2d::tCCPositionType); - TodoReturn createColorGroupContainer(int); - TodoReturn createGlow(gd::string); + cocos2d::CCParticleSystemQuad* createAndAddParticle(int p0, char const* plistName, int p2, cocos2d::tCCPositionType positionType) = win 0x18eb60, imac 0x5bdd50, m1 0x4f1e1c; + void createColorGroupContainer(int); + void createGlow(gd::string); void createGroupContainer(int size) = win inline { if (!m_groups) { auto groups = new short[size]; @@ -6021,65 +6020,65 @@ class GameObject : CCSpritePlus { m_groups = reinterpret_cast(groups); } } - TodoReturn createOpacityGroupContainer(int); + void createOpacityGroupContainer(int); void createSpriteColor(int) = m1 0x4ed1f8, imac 0x5aaaf0; static GameObject* createWithFrame(char const* name) = win 0x183c60, imac 0x5aa890, m1 0x4ecf80; static GameObject* createWithKey(int) = win 0x181810, imac 0x5a5d30, m1 0x4ecab8; void deselectObject(); // = win 0x141b70; actually updateObjectEditorColor, source: LevelEditorLayer::updateVisibility inline void destroyObject() { - m_unk34a = true; - m_unk306 = true; + m_isDisabled = true; + m_isDisabled2 = true; setOpacity(0); } void determineSlopeDirection() = win 0x192300, imac 0x5c6ad0, m1 0x4f5cf0; - TodoReturn didScaleXChange(); - TodoReturn didScaleYChange(); - TodoReturn dirtifyObjectPos(); - TodoReturn dirtifyObjectRect(); - TodoReturn disableObject(); - TodoReturn dontCountTowardsLimit(); - TodoReturn duplicateAttributes(GameObject*); - TodoReturn duplicateColorMode(GameObject*); + bool didScaleXChange(); + bool didScaleYChange(); + void dirtifyObjectPos(); + void dirtifyObjectRect(); + void disableObject(); + bool dontCountTowardsLimit(); + void duplicateAttributes(GameObject*); + void duplicateColorMode(GameObject*); void duplicateValues(GameObject*) = win 0x197e00; - TodoReturn editorColorForCustomMode(int); - TodoReturn editorColorForMode(int) = win 0x197060; - TodoReturn fastRotateObject(float); - TodoReturn getActiveColorForMode(int, bool); - TodoReturn getBallFrame(int); //inlined on windows - TodoReturn getBoundingRect(); - TodoReturn getBoxOffset(); - TodoReturn getColorFrame(gd::string); - TodoReturn getColorIndex(); + cocos2d::ccColor3B editorColorForCustomMode(int); + cocos2d::ccColor3B editorColorForMode(int) = win 0x197060; + void fastRotateObject(float); + cocos2d::ccColor3B getActiveColorForMode(int, bool); + char* getBallFrame(int); //inlined on windows + cocos2d::CCRect getBoundingRect(); + cocos2d::CCPoint getBoxOffset(); + gd::string getColorFrame(gd::string); + int getColorIndex(); gd::string getColorKey(bool, bool); - TodoReturn getCustomZLayer(); - TodoReturn getGlowFrame(gd::string); - TodoReturn getGroupDisabled() = m1 0x4f660c, imac 0x5c73e0; + ZLayer getCustomZLayer(); + gd::string getGlowFrame(gd::string); + bool getGroupDisabled() = m1 0x4f660c, imac 0x5c73e0; int getGroupID(int) = imac 0x5c7080, m1 0x4f62e0; - TodoReturn getGroupString(); + gd::string getGroupString(); cocos2d::CCPoint getLastPosition() = imac 0x5d3a00, m1 0x501170; - TodoReturn getMainColor(); - TodoReturn getMainColorMode(); - TodoReturn getObjectDirection(); - TodoReturn getObjectRadius(); - TodoReturn getObjectRectPointer(); - TodoReturn getObjectZLayer(); - TodoReturn getObjectZOrder(); - TodoReturn getOuterObjectRect(); - TodoReturn getParentMode(); - TodoReturn getRelativeSpriteColor(int); - TodoReturn getScalePosDelta(); - TodoReturn getSecondaryColor(); - TodoReturn getSecondaryColorMode(); - TodoReturn getSlopeAngle(); - TodoReturn getUnmodifiedPosition(); - TodoReturn groupColor(cocos2d::ccColor3B const&, bool); + GJSpriteColor* getMainColor(); + int getMainColorMode(); + int getObjectDirection(); // probably a enum + float getObjectRadius(); + cocos2d::CCRect* getObjectRectPointer(); + ZLayer getObjectZLayer(); + int getObjectZOrder(); + cocos2d::CCRect getOuterObjectRect(); + int getParentMode(); + GJSpriteColor* getRelativeSpriteColor(int); + cocos2d::CCPoint getScalePosDelta(); + GJSpriteColor* getSecondaryColor(); + int getSecondaryColorMode(); + float getSlopeAngle(); + cocos2d::CCPoint getUnmodifiedPosition(); + cocos2d::ccColor3B groupColor(cocos2d::ccColor3B const&, bool); float groupOpacityMod() = imac 0x5c7ab0, win 0x192cf0, m1 0x4f6c58; - TodoReturn groupWasDisabled(); - TodoReturn groupWasEnabled(); - TodoReturn hasSecondaryColor(); + void groupWasDisabled(); + void groupWasEnabled(); + bool hasSecondaryColor(); bool ignoreEditorDuration(); - TodoReturn ignoreEnter(); - TodoReturn ignoreFade(); + bool ignoreEnter(); + bool ignoreFade(); bool init(char const*) = imac 0x5aa900, m1 0x4ed010; bool isBasicEnterEffect(int); bool isBasicTrigger(); @@ -6098,27 +6097,27 @@ class GameObject : CCSpritePlus { void loadGroupsFromString(gd::string); TodoReturn makeInvisible() = imac 0x5c59f0, m1 0x4f4c30; static GameObject* objectFromVector(gd::vector&, gd::vector&, GJBaseGameLayer*, bool) = win 0x193220, m1 0x4f775c, imac 0x5c8800; - TodoReturn opacityModForMode(int, bool); - TodoReturn parentForZLayer(int, bool, int); - TodoReturn perspectiveColorFrame(char const*, int); - TodoReturn perspectiveFrame(char const*, int); + float opacityModForMode(int, bool); + cocos2d::CCSpriteBatchNode* parentForZLayer(int, bool, int); + gd::string perspectiveColorFrame(char const*, int); + gd::string perspectiveFrame(char const*, int); void playDestroyObjectAnim(GJBaseGameLayer*) = win 0x1a04e0; void playPickupAnimation(cocos2d::CCSprite*, float, float, float, float, float, float, float, float, bool, float, float) = win 0x1a0000; void playPickupAnimation(cocos2d::CCSprite*, float, float, float, float) = win 0x19ff10; void playShineEffect() = win 0x18f3f0, imac 0x5c5a90, m1 0x4f4cac; - TodoReturn quickUpdatePosition(); - TodoReturn quickUpdatePosition2(); - TodoReturn removeColorSprite(); - TodoReturn removeGlow(); - TodoReturn reorderColorSprite(); - TodoReturn resetColorGroups(); - TodoReturn resetGroupDisabled(); - TodoReturn resetGroups(); - TodoReturn resetMainColorMode(); - TodoReturn resetMID(); - TodoReturn resetMoveOffset(); - TodoReturn resetRScaleForced(); - TodoReturn resetSecondaryColorMode(); + void quickUpdatePosition(); + void quickUpdatePosition2(); + void removeColorSprite(); + void removeGlow(); + void reorderColorSprite(); + void resetColorGroups(); + void resetGroupDisabled(); + void resetGroups(); + void resetMainColorMode(); + void resetMID(); + void resetMoveOffset(); + void resetRScaleForced(); + void resetSecondaryColorMode(); void setAreaOpacity(float, float, int); void setCustomZLayer(int); void setDefaultMainColorMode(int); @@ -6127,42 +6126,42 @@ class GameObject : CCSpritePlus { void setLastPosition(cocos2d::CCPoint const&) = imac 0x5d3a10, m1 0x501178; void setMainColorMode(int); void setSecondaryColorMode(int); - TodoReturn setupColorSprite(int, bool); - TodoReturn setupPixelScale(); - TodoReturn setupSpriteSize(); + void setupColorSprite(int, bool); + void setupPixelScale(); + void setupSpriteSize(); bool shouldBlendColor(GJSpriteColor*, bool); - TodoReturn shouldLockX(); - TodoReturn shouldNotHideAnimFreeze(); - TodoReturn shouldShowPickupEffects(); - TodoReturn slopeFloorTop(); - TodoReturn slopeWallLeft(); - TodoReturn slopeYPos(cocos2d::CCRect); + bool shouldLockX(); + bool shouldNotHideAnimFreeze(); + bool shouldShowPickupEffects(); + bool slopeFloorTop(); + bool slopeWallLeft(); + double slopeYPos(cocos2d::CCRect); double slopeYPos(float) = win 0x1973f0; - TodoReturn slopeYPos(GameObject*); - TodoReturn spawnDefaultPickupParticle(GJBaseGameLayer*); - TodoReturn updateBlendMode(); - TodoReturn updateCustomColorType(short); + double slopeYPos(GameObject*); + void spawnDefaultPickupParticle(GJBaseGameLayer*); + void updateBlendMode(); + void updateCustomColorType(short); void updateCustomScaleX(float) = win 0x18e690, imac 0x5b24b0, m1 0x4ee91c; void updateCustomScaleY(float) = win 0x18e720, imac 0x5b2530, m1 0x4ee97c; - TodoReturn updateHSVState(); + void updateHSVState(); void updateIsOriented() = win 0x197770, imac 0x5d2660, m1 0x4fff78; - TodoReturn updateMainColorOnly(); - TodoReturn updateMainOpacity(); + void updateMainColorOnly(); + void updateMainOpacity(); void updateObjectEditorColor() = win 0x197330; - TodoReturn updateSecondaryColorOnly(); - TodoReturn updateSecondaryOpacity(); - TodoReturn updateStartPos(); - TodoReturn updateUnmodifiedPositions(); - TodoReturn usesFreezeAnimation(); - TodoReturn usesSpecialAnimation(); + void updateSecondaryColorOnly(); + void updateSecondaryOpacity(); + void updateStartPos(); + void updateUnmodifiedPositions(); + void usesFreezeAnimation(); + void usesSpecialAnimation(); // MSVC changed virtual table ordering somewhere between what Rob uses // and now, and now virtual functions that have non virtual overloads // are added to the first of the vtable regardless of the order // defined in the header. This is why we simply can not use these // two functions since defining them would break the vtable layout. - // TodoReturn updateMainColor(); - // TodoReturn updateSecondaryColor(); + // void updateMainColor(); + // void updateSecondaryColor(); virtual void update(float) = m1 0x4ef094, imac 0x5b2ca0; virtual void setScaleX(float) = win 0x18e290, m1 0x4f3d18, imac 0x5c4970, ios 0x26b0a4; @@ -6181,77 +6180,75 @@ class GameObject : CCSpritePlus { virtual void firstSetup() = m1 0x173c88, imac 0x1b64a0; virtual void customSetup() = m1 0x4ef098, win 0x186e60, imac 0x5b2cb0; virtual void setupCustomSprites(gd::string) = m1 0x3bef18, win 0x1a4f40, imac 0x44d950; - virtual TodoReturn addMainSpriteToParent(bool) = m1 0x4f5a14, win 0x191d90, imac 0x5c67e0; + virtual void addMainSpriteToParent(bool) = m1 0x4f5a14, win 0x191d90, imac 0x5c67e0; virtual void resetObject() = m1 0x4ee694, win 0x186710, imac 0x5b2160; virtual void triggerObject(GJBaseGameLayer*, int, gd::vector const*) = m1 0x173904, imac 0x1b6120; virtual void activateObject() = m1 0x4eeb4c, win 0x186b20, imac 0x5b2780; virtual void deactivateObject(bool) = m1 0x4eeed0, win 0x186bd0, imac 0x5b2af0; - virtual TodoReturn transferObjectRect(cocos2d::CCRect&) = m1 0x4f3114, win 0x18d690, imac 0x5c3ce0; + virtual void transferObjectRect(cocos2d::CCRect&) = m1 0x4f3114, win 0x18d690, imac 0x5c3ce0; virtual cocos2d::CCRect const& getObjectRect() = win 0x18d6e0, m1 0x4f31ec, imac 0x5c3d50; virtual cocos2d::CCRect getObjectRect(float, float) = win 0x18d700, m1 0x4f31a0, imac 0x5c3d80; - virtual TodoReturn getObjectRect2(float, float) = m1 0x4f3384, win 0x18d890, imac 0x5c3fc0; - virtual TodoReturn getObjectTextureRect() = m1 0x4f3448, win 0x18d930, imac 0x5c4090; + virtual cocos2d::CCRect getObjectRect2(float, float) = m1 0x4f3384, win 0x18d890, imac 0x5c3fc0; + virtual cocos2d::CCRect getObjectTextureRect() = m1 0x4f3448, win 0x18d930, imac 0x5c4090; virtual cocos2d::CCPoint getRealPosition() = m1 0x4f36a0, win 0x18db60, imac 0x5c4330; virtual void setStartPos(cocos2d::CCPoint) = m1 0x4ee578, win 0x186590, imac 0x5b2050; virtual void updateStartValues() = m1 0x4ee9dc, win 0x186960, imac 0x5b25b0; virtual void customObjectSetup(gd::vector&, gd::vector&) = m1 0x326d1c, imac 0x39fd10; virtual gd::string getSaveString(GJBaseGameLayer*) = m1 0x4f96a0, win 0x194d10, imac 0x5ca7c0; - virtual TodoReturn claimParticle() = m1 0x4f45f0, win 0x18edb0, imac 0x5c5310; - virtual TodoReturn unclaimParticle() = m1 0x4f4b90, win 0x18f2e0, imac 0x5c5910; - virtual TodoReturn particleWasActivated() = m1 0x4f4bf8, imac 0x5c5980; + virtual void claimParticle() = m1 0x4f45f0, win 0x18edb0, imac 0x5c5310; + virtual void unclaimParticle() = m1 0x4f4b90, win 0x18f2e0, imac 0x5c5910; + virtual void particleWasActivated() = m1 0x4f4bf8, imac 0x5c5980; virtual bool isFlipX() = m1 0x4f3c60, win 0x18e1e0, imac 0x5c48b0; virtual bool isFlipY() = m1 0x4f3c68, win 0x18e1f0, imac 0x5c48c0; virtual void setRScaleX(float) = m1 0x4f3ef8, win 0x18e550, imac 0x5c4b50; virtual void setRScaleY(float) = m1 0x4f3f2c, win 0x18e590, imac 0x5c4b90; virtual void setRScale(float) = m1 0x4f3f60, win 0x18e5d0, imac 0x5c4bd0; - virtual TodoReturn getRScaleX() = m1 0x4f3fe4, win 0x18e610, imac 0x5c4c50; - virtual TodoReturn getRScaleY() = m1 0x4f401c, win 0x18e650, imac 0x5c4c80; + virtual float getRScaleX() = m1 0x4f3fe4, win 0x18e610, imac 0x5c4c50; + virtual float getRScaleY() = m1 0x4f401c, win 0x18e650, imac 0x5c4c80; virtual void setRRotation(float) = m1 0x4f3948, win 0x18ddb0, imac 0x5c45e0; virtual void triggerActivated(float) = m1 0x1a135c, imac 0x1ed230; virtual void setObjectColor(cocos2d::ccColor3B const&) = m1 0x4fef58, win 0x196ac0, imac 0x5d16e0; virtual void setGlowColor(cocos2d::ccColor3B const&) = m1 0x4ff218, win 0x196db0, imac 0x5d1970; - virtual TodoReturn restoreObject() = m1 0x4f4c18, win 0x18f3d0, imac 0x5c59c0; - virtual TodoReturn animationTriggered() = m1 0x1a1360, imac 0x1ed240; + virtual void restoreObject() = m1 0x4f4c18, win 0x18f3d0, imac 0x5c59c0; + virtual void animationTriggered() = m1 0x1a1360, imac 0x1ed240; virtual void selectObject(cocos2d::ccColor3B) = m1 0x4ff2fc, win 0x196e80, imac 0x5d1a30; - virtual TodoReturn activatedByPlayer(PlayerObject*) = m1 0x1a1364, imac 0x1ed250; - virtual TodoReturn hasBeenActivatedByPlayer(PlayerObject*) = m1 0x1a1368, imac 0x1ed260; - virtual TodoReturn hasBeenActivated() = m1 0x1a1370, imac 0x1ed270; + virtual void activatedByPlayer(PlayerObject*) = m1 0x1a1364, imac 0x1ed250; + virtual bool hasBeenActivatedByPlayer(PlayerObject*) = m1 0x1a1368, imac 0x1ed260; + virtual bool hasBeenActivated() = m1 0x1a1370, imac 0x1ed270; virtual OBB2D* getOrientedBox() = m1 0x4ffd60, win 0x197550, imac 0x5d2440; virtual void updateOrientedBox() = m1 0x4ffdf4, win 0x1975b0, imac 0x5d24c0; - virtual TodoReturn getObjectRotation() = m1 0x5058b0, win 0x197530, imac 0x5dac70; - virtual TodoReturn updateMainColor(cocos2d::ccColor3B const&) = m1 0x500864, win 0x197fb0, imac 0x5d30c0; - virtual TodoReturn updateSecondaryColor(cocos2d::ccColor3B const&) = m1 0x500d6c, win 0x197fc0, imac 0x5d35d0; + virtual float getObjectRotation() = m1 0x5058b0, win 0x197530, imac 0x5dac70; + virtual void updateMainColor(cocos2d::ccColor3B const&) = m1 0x500864, win 0x197fb0, imac 0x5d30c0; + virtual void updateSecondaryColor(cocos2d::ccColor3B const&) = m1 0x500d6c, win 0x197fc0, imac 0x5d35d0; virtual void addToGroup(int) = m1 0x4f6170, win 0x1927d0, imac 0x5c6f40; virtual void removeFromGroup(int) = m1 0x4f624c, win 0x1928f0, imac 0x5c6ff0; - virtual TodoReturn saveActiveColors() = m1 0x4feda0, win 0x196910, imac 0x5d1520; - virtual TodoReturn spawnXPosition() = m1 0x1a1378, win 0x133ad0, imac 0x1ed280; - virtual TodoReturn canAllowMultiActivate() = m1 0x1a1398, imac 0x1ed2a0; - virtual TodoReturn blendModeChanged() = m1 0x1a13a0, imac 0x1ed2b0; - virtual TodoReturn updateParticleColor(cocos2d::ccColor3B const&) = m1 0x4ff150, win 0x196ca0, imac 0x5d18b0; - virtual TodoReturn updateParticleOpacity(unsigned char) = m1 0x4f4420, win 0x18eae0, imac 0x5c5130; - virtual TodoReturn updateMainParticleOpacity(unsigned char) = m1 0x1a13a4, imac 0x1ed2c0; - virtual TodoReturn updateSecondaryParticleOpacity(unsigned char) = m1 0x1a13a8, imac 0x1ed2d0; - virtual TodoReturn canReverse() = m1 0x1a13ac, imac 0x1ed2e0; + virtual void saveActiveColors() = m1 0x4feda0, win 0x196910, imac 0x5d1520; + virtual float spawnXPosition() = m1 0x1a1378, win 0x133ad0, imac 0x1ed280; + virtual bool canAllowMultiActivate() = m1 0x1a1398, imac 0x1ed2a0; + virtual void blendModeChanged() = m1 0x1a13a0, imac 0x1ed2b0; + virtual void updateParticleColor(cocos2d::ccColor3B const&) = m1 0x4ff150, win 0x196ca0, imac 0x5d18b0; + virtual void updateParticleOpacity(unsigned char) = m1 0x4f4420, win 0x18eae0, imac 0x5c5130; + virtual void updateMainParticleOpacity(unsigned char) = m1 0x1a13a4, imac 0x1ed2c0; + virtual void updateSecondaryParticleOpacity(unsigned char) = m1 0x1a13a8, imac 0x1ed2d0; + virtual bool canReverse() = m1 0x1a13ac, imac 0x1ed2e0; virtual bool isSpecialSpawnObject() = m1 0x1a13b4, imac 0x1ed2f0; - virtual TodoReturn canBeOrdered() = m1 0x1a13bc, imac 0x1ed300; - virtual TodoReturn getObjectLabel() = m1 0x1a13c4, imac 0x1ed310; + virtual bool canBeOrdered() = m1 0x1a13bc, imac 0x1ed300; + virtual cocos2d::CCLabelBMFont* getObjectLabel() = m1 0x1a13c4, imac 0x1ed310; virtual void setObjectLabel(cocos2d::CCLabelBMFont*) = m1 0x1a13cc, imac 0x1ed320; - virtual TodoReturn shouldDrawEditorHitbox() = m1 0x501ae4, imac 0x5d4710; - virtual TodoReturn getHasSyncedAnimation() = m1 0x1a13d0, imac 0x1ed330; - virtual TodoReturn getHasRotateAction() = m1 0x1a13d8, imac 0x1ed340; - virtual TodoReturn canMultiActivate(bool) = m1 0x1a13e0, imac 0x1ed350; - virtual TodoReturn updateTextKerning(int) = m1 0x1a13e8, imac 0x1ed360; - virtual TodoReturn getTextKerning() = m1 0x1a13ec, imac 0x1ed370; - virtual TodoReturn getObjectRectDirty() = m1 0x1a13f4, win 0x133af0, imac 0x1ed380; + virtual bool shouldDrawEditorHitbox() = m1 0x501ae4, imac 0x5d4710; + virtual bool getHasSyncedAnimation() = m1 0x1a13d0, imac 0x1ed330; + virtual bool getHasRotateAction() = m1 0x1a13d8, imac 0x1ed340; + virtual bool canMultiActivate(bool) = m1 0x1a13e0, imac 0x1ed350; + virtual void updateTextKerning(int) = m1 0x1a13e8, imac 0x1ed360; + virtual int getTextKerning() = m1 0x1a13ec, imac 0x1ed370; + virtual bool getObjectRectDirty() = m1 0x1a13f4, win 0x133af0, imac 0x1ed380; virtual void setObjectRectDirty(bool) = m1 0x1a13fc, win 0x133b00, imac 0x1ed390; - virtual TodoReturn getOrientedRectDirty() = m1 0x1a1404, win 0x133b10, imac 0x1ed3a0; + virtual bool getOrientedRectDirty() = m1 0x1a1404, win 0x133b10, imac 0x1ed3a0; virtual void setOrientedRectDirty(bool) = m1 0x1a140c, win 0x133b20, imac 0x1ed3b0; virtual GameObjectType getType() = m1 0x1a1414, imac 0x1ed3c0; virtual void setType(GameObjectType) = m1 0x1a141c, win 0x133b40, imac 0x1ed3d0; virtual cocos2d::CCPoint getStartPos() = m1 0x1a1424, win 0x133b50, imac 0x1ed3e0; - // windows members may be wrong! yay! - int m_someOtherIndex; int m_innerSectionIndex; int m_outerSectionIndex; @@ -6259,96 +6256,122 @@ class GameObject : CCSpritePlus { // property 511 bool m_hasExtendedCollision; - PAD = android32 0x13, win 0x13, android64 0x13, mac 0x13, ios 0x13; + cocos2d::ccColor3B m_maybeGroupColor; + bool m_unk280; + bool m_unk281; + float m_blackChildRelated; + bool m_unk288; + bool m_editorEnabled; + bool m_isGroupDisabled; + bool m_unk28B; + bool m_unk28c; // somehow related to property 155 and 156 if anyone wants to reverse engineer int m_activeMainColorID; int m_activeDetailColorID; - - PAD = android32 0x4, win 0x4, android64 0x4, mac 0x4, ios 0x4; - + bool m_baseUsesHSV; + bool m_detailUsesHSV; float m_positionXOffset; float m_positionYOffset; float m_rotationXOffset; - - PAD = android32 0x4, win 0x4, android64 0x4, mac 0x4, ios 0x4; - + float m_unk2A8; float m_rotationYOffset; - - PAD = android32 0x4, win 0x4, android64 0x4, mac 0x4, ios 0x4; - + float m_unk2B0; float m_scaleXOffset; float m_scaleYOffset; - - PAD = android32 0x28, win 0x30, android64 0x30, mac 0x30, ios 0x30; - + float m_unk2BC; + float m_unk2C0; + bool m_tempOffsetXRelated; + bool m_isFlipX; + bool m_isFlipY; + cocos2d::CCPoint m_customBoxOffset; + bool m_boxOffsetCalculated; + cocos2d::CCPoint m_boxOffset; + OBB2D* m_orientedBox; + bool m_shouldUseOuterOb; cocos2d::CCSprite* m_glowSprite; - - PAD = android32 0x8, win 0x4, android64 0x4, mac 0x4, ios 0x4; - - PAD = android32 0x6, win 0x6, android64 0x6, mac 0x6, ios 0x6; - - bool m_unk306; - - cocos2d::CCSprite* m_someSprite; + int m_unk2F8; + float m_width; + float m_height; + bool m_hasSpecialChild; + bool m_isActivated; + bool m_isDisabled2; + cocos2d::CCParticleSystemQuad* m_particle; gd::string m_particleString; - - PAD = android32 0x1, win 0x1, android64 0x1, mac 0x1, ios 0x1; + bool m_hasParticles; // property 146 bool m_particleUseObjectColor; - PAD = android32 0x3e, win 0x3e, android64 0x3e, mac 0x3e, ios 0x3e; + bool m_hasColorSprite; + cocos2d::CCPoint m_unk31c; + bool m_isSomeSpriteScalable; + cocos2d::CCRect m_textureRect; + bool m_isDirty; + bool m_isObjectPosDirty; + bool m_isUnmodifiedPosDirty; + float m_unk33C; + cocos2d::CCRect m_objectRect; + bool m_isObjectRectDirty; + bool m_isOrientedBoxDirty; + bool m_colorSpriteLocked; + bool m_unk353; + bool m_canRotateFree; + bool m_isMirroredByScale; // property 108 int m_linkedGroup; - - PAD = android32 0xc, win 0xc, android64 0xc, mac 0xc, ios 0xc; - + int m_unk35C; + short m_colorType; + short m_childColorType; + bool m_shouldBlendBase; + bool m_shouldBlendDetail; + bool m_hasCustomChild; + bool m_unk367; cocos2d::CCSprite* m_colorSprite; - - PAD = android32 0x1, win 0x1, android64 0x1, mac 0x1, ios 0x1; - + bool m_unk370; float m_objectRadius; - - PAD = android32 0xA, win 0xA, android64 0xA, mac 0xA, ios 0xA; - + bool m_isRotationAligned; + float m_spriteWidthScale; + float m_spriteHeightScale; int m_uniqueID; GameObjectType m_objectType; // used in PlayerObject::gameEventTriggered - int m_unk326; - - PAD = android32 0xa, win 0xa, android64 0xa, mac 0xa, ios 0xa; + GameObjectType m_savedObjectType; + int m_unk390; + float m_unmodifiedPositionX; + float m_unmodifiedPositionY; double m_positionX; double m_positionY; cocos2d::CCPoint m_startPosition; - PAD = android32 0x1, win 0x1, android64 0x1, mac 0x1, ios 0x1; + bool m_unk3b8; // property 372 bool m_hasNoAudioScale; - bool m_unk34a; - PAD = android32 0x1, win 0x1, android64 0x1, mac 0x1, ios 0x1; - + bool m_isDisabled; float m_startRotationX; float m_startRotationY; float m_startScaleX; float m_startScaleY; - - PAD = android32 0x8, win 0x8, android64 0x8, mac 0x8, ios 0x8; - + float m_customScaleX; + float m_customScaleY; bool m_startFlipX; bool m_startFlipY; bool m_unk3ee; - bool m_unk3ef; - - PAD = android32 0xc, win 0xc, android64 0xc, mac 0xc, ios 0xc; + bool m_isInvisible; + int m_unk3D8; + short m_unk3DC; + bool m_unk3DE; + short m_unk3E0; + short m_unk3E2; // property 343 short m_enterChannel; // property 446 short m_objectMaterial; - PAD = android32 0x4, win 0x4, android64 0x4, mac 0x4, ios 0x4; + bool m_unk3E8; + short m_parentMode; // property 96 bool m_hasNoGlow; @@ -6358,7 +6381,13 @@ class GameObject : CCSpritePlus { // property 1 int m_objectID; - PAD = android32 0x8, win 0x8, android64 0x8, mac 0x8, ios 0x8; + bool m_unk3F8; + bool m_isSolid; + bool m_ignoreEnter; + bool m_ignoreFade; + bool m_unk3FC; + bool m_unk3FD; + bool m_customSpriteColor; // property 497 short m_customColorType; @@ -6370,30 +6399,44 @@ class GameObject : CCSpritePlus { bool m_hasNoEffects; // property 507 bool m_hasNoParticles; - PAD = android32 0x16, win 0x16, android64 0x16, mac 0x16, ios 0x16; + int m_defaultZOrder; + bool m_unk40C; + bool m_colorZLayerRelated; + bool m_unk40E; + float m_unk410; + float m_unk414; + bool m_particleLocked; // property 53 int m_property53; - PAD = android32 0x18, win 0x18, android64 0x18, mac 0x18, ios 0x18; + bool m_gmUnkBool4Related; + bool m_unk421; + bool m_unk422; + bool m_cantColorGlow; + float m_opacityMod; + bool m_slopeBugged; + int m_slopeDirection; + bool m_maybeShouldFixSlopes; + float m_opacityMod2; // property 21, also used with 41 and 43 GJSpriteColor* m_baseColor; // property 22, also used with 42 and 44 GJSpriteColor* m_detailColor; - PAD = android32 0xc, win 0xa, android64 0xc, mac 0xc, ios 0xc; // i will not question the windows pad + bool m_unk448; + ZLayer m_defaultZLayer; + bool m_zFixedZLayer; // property 24 ZLayer m_zLayer; // property 25 int m_zOrder; - PAD = android32 0x1, win 0x1, android64 0x1, mac 0x1, ios 0x1; - + bool m_unk45c; bool m_isSelected; - - PAD = android32 0xe, win 0xe, android64 0xe, mac 0xe, ios 0xe; - - bool m_shouldUpdateColorSprite; // m_shouldUpdateColorSprite - PAD = android32 0x1, win 0x1, android64 0x1, mac 0x1, ios 0x1; + float m_unk460; + cocos2d::CCPoint m_unk464; + bool m_shouldUpdateColorSprite; + bool m_unk46d; // property 34 bool m_hasGroupParent; @@ -6420,19 +6463,37 @@ class GameObject : CCSpritePlus { short m_editorLayer; // property 61 short m_editorLayer2; - PAD = android32 0x8, win 0x8, android64 0x8, mac 0x8, ios 0x8; + int m_enabledGroupsCounter; + bool m_unk4ac; + bool m_unk4ad; // property 121 bool m_isNoTouch; - PAD = android32 0x9, win 0x9, android64 0x9, mac 0x9, ios 0x9; - + cocos2d::CCSize m_unk4b0; cocos2d::CCPoint m_lastPosition; - - PAD = android32 0x1b, win 0x1b, android64 0x1b, mac 0x1b, ios 0x1b; + int m_unk4C0; + int m_unk4C4; + int m_unk4C8; + int m_unk4CC; + int m_unk4D0; + bool m_unk4D4; + bool m_unk4D5; + bool m_unk4D6; + bool m_unk4D7; + bool m_unk4D8; + bool m_unk4D9; + bool m_unk4DA; // property 103 bool m_isHighDetail; - PAD = android32 0x11, win 0x21, android64 0x21, mac 0x21, ios 0x21; + ColorActionSprite* m_unk4E0; + ColorActionSprite* m_unk4E8; + GJEffectManager* m_goEffectManager; + bool m_unk4F8; + bool m_isDecoration; + bool m_isDecoration2; + bool m_unk4fb; + bool m_maybeNotColorable; // property 134 bool m_isPassable; @@ -6454,14 +6515,23 @@ class GameObject : CCSpritePlus { bool m_isDontBoostY; // property 509 bool m_isDontBoostX; - PAD = android32 0x11, win 0x11, android64 0x11, mac 0x11, ios 0x11; + bool m_unk507; + bool m_unk508; + float m_unk50C; + float m_pixelScaleX; + float m_pixelScaleY; // property 155 int m_property155; // property 156 int m_property156; - - PAD = android32 0x12, win 0x12, android64 0x12, mac 0x12, ios 0x12; // TODO: yeah someone pls fix windows pads + GLubyte m_areaOpacityRelated; + float m_areaOpacityRelated2; + int m_areaOpacityRelated3; + int m_unk52C; + bool m_unk530; + bool m_unk531; + bool m_unk532; } [[link(android)]] @@ -7176,7 +7246,7 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { TodoReturn activateItemEditTrigger(ItemTriggerGameObject*); void activateObjectControlTrigger(ObjectControlGameObject*); TodoReturn activatePersistentItemTrigger(ItemTriggerGameObject*); - void activatePlayerControlTrigger(PlayerControlGameObject*) = m1 0xfa46c; + void activatePlayerControlTrigger(PlayerControlGameObject*); TodoReturn activateResetTrigger(EffectGameObject*); void activateSFXEditTrigger(SFXTriggerGameObject*); void activateSFXTrigger(SFXTriggerGameObject*) = win 0x230d50; @@ -7247,7 +7317,7 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { TodoReturn createParticle(int, char const*, int, cocos2d::tCCPositionType); void createPlayer() = win 0x1fc0c0, ios 0x1e73b8; TodoReturn createPlayerCollisionBlock() = win 0x208c00; - void createTextLayers() = win 0x1ffa50; + void createTextLayers() = win 0x1ffa50, m1 0xf09d4, imac 0x113b80; TodoReturn damagingObjectsInRect(cocos2d::CCRect, bool); void destroyObject(GameObject*) = win 0x206b50, imac 0x11cd80, m1 0xf9108; void enterDualMode(GameObject*, bool) = imac 0x11e160, m1 0xfa400; @@ -7312,9 +7382,7 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { bool hasUniqueCoin(EffectGameObject*) = win 0x207020, imac 0x11ce50, m1 0xf91ec; void increaseBatchNodeCapacity() = win 0x1fd9d0; bool isFlipping(); - bool isPlayer2Button(int param_1) = m1 inline { - return 5 < param_1; - } + bool isPlayer2Button(int); TodoReturn lightningFlash(cocos2d::CCPoint, cocos2d::ccColor3B); TodoReturn lightningFlash(cocos2d::CCPoint, cocos2d::CCPoint, cocos2d::ccColor3B, float, float, int, bool, float); TodoReturn loadGroupParentsFromString(GameObject*, gd::string); @@ -7396,7 +7464,7 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { m_queuedButtons.push_back(command); } TodoReturn reAddToStickyGroup(GameObject*); - TodoReturn recordAction(int, bool, bool) = m1 0x115594; + TodoReturn recordAction(int, bool, bool); TodoReturn rectIntersectsCircle(cocos2d::CCRect, cocos2d::CCPoint, float); void refreshCounterLabels() = win 0x225560, m1 0x117998, imac 0x143350; void refreshKeyframeAnims() = imac 0x111860, m1 0xeecfc; @@ -7514,7 +7582,7 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { TodoReturn triggerMoveCommand(EffectGameObject*); TodoReturn triggerRotateCommand(EnhancedTriggerObject*); bool triggerShaderCommand(ShaderGameObject*); - TodoReturn triggerTransformCommand(TransformTriggerGameObject*) = m1 0x105bb0; + TodoReturn triggerTransformCommand(TransformTriggerGameObject*); TodoReturn tryGetGroupParent(int); GameObject* tryGetMainObject(int) = win 0x214d10, imac 0x11ea90, m1 0xfabe4; TodoReturn tryGetObject(int) = win 0x214d80; @@ -7531,8 +7599,8 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { TodoReturn updateCameraBGArt(cocos2d::CCPoint, float); TodoReturn updateCameraEdge(int, int); void updateCameraMode(EffectGameObject*, bool); - TodoReturn updateCameraOffsetX(float, float, int, float, int, int) = win 0x225f20, imac 0x144270, m1 0x118618; - TodoReturn updateCameraOffsetY(float, float, int, float, int, int) = win 0x225fc0, imac 0x144370, m1 0x1186ec; + void updateCameraOffsetX(float, float, int, float, int, int) = win 0x225f20, imac 0x144270, m1 0x118618; + void updateCameraOffsetY(float, float, int, float, int, int) = win 0x225fc0, imac 0x144370, m1 0x1186ec; void updateCollisionBlocks() = win 0x209060; void updateCounters(int, int); void updateDualGround(PlayerObject*, int, bool, float) = win 0x203ce0, imac 0x118660, m1 0xf568c; @@ -7581,7 +7649,7 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { virtual void updateVerifyDamage() = m1 0xdf6d0, imac 0xfd9b0; virtual void updateAttemptTime(float) = m1 0xdf6d4, imac 0xfd9c0; virtual void updateVisibility(float); - virtual void playerTookDamage(PlayerObject*) = imac 0xc0020, m1 0xab56c; + virtual TodoReturn playerTookDamage(PlayerObject*) = imac 0xc0020, m1 0xab56c; virtual TodoReturn opacityForObject(GameObject*) = m1 0x11a318, win 0x2273b0, imac 0x146f00; virtual TodoReturn addToSpeedObjects(EffectGameObject*) = imac 0xc0030, m1 0xab570; virtual void objectsCollided(int, int) = imac 0x11faa0, m1 0xfbafc, win 0x209900; @@ -7605,7 +7673,7 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { virtual float timeForPos(cocos2d::CCPoint, int, int, bool, int) { return 0.f; } virtual float posForTime(float) { return 0.f; } virtual void resetSPTriggered() {} - virtual TodoReturn updateScreenRotation(float, bool, bool, float, int, float, int, int) = win 0x225e30, m1 0x118430, imac 0x144030; + virtual void updateScreenRotation(float, bool, bool, float, int, float, int, int) = win 0x225e30, m1 0x118430, imac 0x144030; virtual TodoReturn reverseDirection(EffectGameObject*) = m1 0xfad8c, win 0x2089f0, imac 0x11ec40; virtual void rotateGameplay(RotateGameplayGameObject*) = m1 0xfadd0, win 0x208a50, imac 0x11ec80; virtual TodoReturn didRotateGameplay() = m1 0xab578, imac 0xc0050; @@ -7635,7 +7703,21 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { bool m_decimalPercentage; bool m_extraLDM; bool m_0173; - PAD = win 0xc9, android32 0x61, android64 0xC0, mac 0xac, ios 0xac; + bool m_enable22Changes; + bool m_allowStaticRotate; + bool m_fixNegativeScale; + bool m_startingFromBeginning; + gd::vector*> m_field_8B0; + gd::vector m_unkVectorTypeIsWrong; + cocos2d::CCNode* m_field_8E0; + cocos2d::CCNode* m_field_8E8; + cocos2d::CCNode* m_field_8F0; + cocos2d::CCNode* m_field_8F8; + cocos2d::CCNode* m_field_900; + cocos2d::CCNode* m_field_908; + OBB2D* m_obb2; + gd::vector*> m_vecUmapIntInt; + gd::unordered_map m_umapIntCCPoint; GJEffectManager* m_effectManager; cocos2d::CCSpriteBatchNode* m_unk950; cocos2d::CCSpriteBatchNode* m_unk958; @@ -7782,15 +7864,28 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { cocos2d::CCArray* m_unknownCB8; cocos2d::CCDictionary* m_unknownCC0; cocos2d::CCNode* m_unknownCC8; - gd::vector m_unknownCD0; - gd::vector m_unknownCE8; - gd::vector m_unknownD00; - gd::vector m_unknownD18; - gd::vector m_unknownD30; - gd::unordered_map> m_unknownD48; - gd::vector m_unknownD70; - gd::unordered_map> m_unknownD88; - PAD = win 0x10, android32 0x28, android64 0x18, mac 0x28, ios 0x28; + gd::vector m_unkdd8; + gd::vector m_unkdf0; + gd::vector m_unke08; + gd::vector m_unke20; + gd::vector m_unke38; + gd::unordered_map> m_unke50; + gd::vector m_unke90; + int m_unkea8; + int m_unkeac; + gd::vector m_unkeb0; + int m_unkec8; + int m_unkecc; + int m_unked0; + int m_unked4; + int m_unked8; + int m_unkedc; + int m_unkee0; + int m_unkee4; + int m_unkee8; + int m_unkeec; + int m_unkef0; + int m_unkef4; cocos2d::CCDictionary* m_groupDict; cocos2d::CCDictionary* m_staticGroupDict; cocos2d::CCDictionary* m_optimizedGroupDict; @@ -7814,29 +7909,58 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { void* m_unk1010; GJGroundLayer* m_groundLayer; GJGroundLayer* m_groundLayer2; - void* m_unk1028; - cocos2d::CCArray* m_unk1030; + GJMGLayer* m_middleground; + cocos2d::CCArray* m_batchNodes; cocos2d::CCDictionary* m_unk1038; - void* m_unk1040; - PAD = win 0x8c, android32 0x50, android64 0x9c, mac 0x64, ios 0x64; // (for win) between 0x8 bytes, there is a member thats 0x8 size. I think its a CCDictionary* + + gd::unordered_map> m_umapIntVectorLabelGameObjectPtr; + gd::unordered_map> m_umapIntVectorLabelGameObjectPtr2; + gd::map, int> m_mapTupleIntIntIntTupleIntIntInt; + bool m_increasedLayerCapacity; std::array m_massiveFloatArray; - PAD = win 0x78, android32 0x4c, android64 0x90, mac 0x68, ios 0x68; // not sure about the android paddings + + gd::map, int> m_mapPairIntIntPairFloatFloat; + gd::vector field_3058; + gd::unordered_map m_umapIntInt3; + int m_easingRelated; + bool field_30AC; + int m_clicks; + int m_attempts; // found in EndLevelLayer::customSetup bool m_bUnk30b8; int m_leftSectionIndex; // these 4 ints can be found in GJBaseGameLayer::updateDebugDraw or GJBaseGameLayer::updateObjectSection (easier) int m_rightSectionIndex; int m_bottomSectionIndex; int m_topSectionIndex; - PAD = win 0x2, android32 0x2, android64 0x2, mac 0x2, ios 0x2; + bool m_superHighGraphics; + bool m_blending; bool m_isPlatformer; - PAD = win 0xc5, android32 0x61, android64 0xb5, mac 0x99, ios 0x99; + GameObject* m_player1CollisionBlock; + GameObject* m_player2CollisionBlock; + int m_particleCount; + int m_customParticleCount; + int m_maybeParticleLimit; + cocos2d::CCDictionary* m_portalParticlesDict; + cocos2d::CCDictionary* m_customParticles; + cocos2d::CCArray* m_unclaimedParticles; + gd::unordered_map m_umapIntString; + cocos2d::CCDictionary* m_customParticlesDictArray; + cocos2d::CCArray* m_temporaryParticles; + gd::unordered_set m_usetInt; cocos2d::CCDictionary* m_unk2a50; void* m_unk2a54; ShaderLayer* m_shaderLayer; bool m_bUnk31a0; bool m_bUnk31a1; StartPosObject* m_startPosObject; // 3180 win, 2a60 android32, 31a8 android64 - PAD = win 0x60, android32 0x38, android64 0x60, mac 0x60, ios 0x60; + bool m_unk3188; + int m_unk318c; + int m_unk3190; + gd::vector m_unk3198; + int m_unk31b0; + int m_unk31b4; + gd::vector m_unk31b8; + gd::vector m_unk31d0; bool m_isPracticeMode; bool m_practiceMusicSync; float m_loadingProgress; @@ -7857,12 +7981,52 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { int m_unk3230; bool m_unk3234; cocos2d::CCParticleSystemQuad* m_unk3238; - int m_unk323c; - PAD = win 0x6, android32 0x10, android64 0x6, mac 0x6, ios 0x6; // mac not verified + bool m_unk3240; + bool m_unk3241; + bool m_unk3242; + double m_unk3248; bool m_started; - PAD = win 0xA6, android32 0x66, android64 0x8e, mac 0xa0, ios 0xa0; + bool m_unk3251; + float m_unk3254; + float m_unk3258; + float m_unk325c; + float m_unk3260; + AudioEffectsLayer* m_audioEffectsLayer; + OBB2D* m_unk3270; + gd::vector m_unk3278; + int m_unk3290; + int m_unk3294; + cocos2d::ccColor3B m_unk3298; + int m_resumeTimer; + bool m_unk32a0; + int m_unk32a4; + gd::string m_unk32a8; + cocos2d::CCObject* m_unk32c8; + int m_unk32d0; + double m_unk32d8; + int m_coinsCollected; + int m_unk32e4; + int m_replayRandSeed; + int m_unk32ec; + int m_unk32f0; gd::vector m_queuedButtons; - PAD = win 0x148, android32 0xa0, android64 0x138, mac 0x118, ios 0x118; + gd::vector m_queuedButtons2; + gd::vector m_queuedButtons3; + gd::vector m_queuedButtons4; + gd::vector m_queuedButtons5; + int m_someQueuedButtonSize; + bool m_unk3374; + bool m_unk3375; + cocos2d::CCArray* m_unk3378; + float m_unk3380; + gd::vector m_unk3388; + gd::vector m_unk33a0; + bool m_unk33b8; + cocos2d::CCArray* m_unk33c0; + cocos2d::CCArray* m_unk33c8; + gd::unordered_map m_unk33d0; + gd::unordered_map m_unk3410; + bool m_unk3450; cocos2d::CCDictionary* m_unk3458; int m_unk3460; UILayer* m_uiLayer; @@ -7871,19 +8035,56 @@ class GJBaseGameLayer : cocos2d::CCLayer, TriggerEffectDelegate { cocos2d::CCNode* m_unk3480; double m_timePlayed; bool m_levelEndAnimationStarted; - PAD = win 0x7, android32 0x0, android64 0x0, mac 0x0, ios 0x0; - bool m_cantPause; - PAD = win 0x18, android32 0x7, android64 0x7, mac 0x30, ios 0x30; + int m_unknown3494; // used in updateSpecialLabels + gd::string m_pointsString; gd::vector*>*> m_sections; - PAD = win 0x90, android32 0x48, android64 0x90, mac 0x90, ios 0x90; + gd::vector*>*> m_nonEffectObjects; + gd::vector*> m_collisionBlockSections; + gd::vector m_calcNonEffectObjects; + int m_calcNonEffectObjectsSize; + gd::vector m_calcCollisionBlockObjects; + int m_calcCollisionBlockObjectsSize; + gd::vector m_calcCollisionBlockObjects2; + int m_calcCollisionBlockObjects2Size; gd::vector*> m_sectionSizes; - PAD = win 0x70, android32 0x38, android64 0x68, mac 0x40, ios 0x40; // mac not verified - gd::vector*> m_nonEffectObjectsPerSection; - PAD = win 0x10, android32 0xc, android64 0x10, mac 0x10, ios 0x10; + gd::vector*> m_nonEffectObjectsSizes; + gd::vector*> m_collisionBlockSectionSizes; + gd::vector*> m_nonEffectObjectsFlags; + float m_unknown35c0; + float m_unknown35c4; + float m_unknown35c8; + float m_unknown35cc; + gd::unordered_map m_stickyGroups; FMODLevelVisualizer* m_audioVisualizerBG; FMODLevelVisualizer* m_audioVisualizerSFX; bool m_showAudioVisualizer; - PAD = win 0x67, android32 0x67, android64 0x67, mac 0x67, ios 0x67; + + int m_areaMovedCount; + int m_areaScaledCount; + int m_areaRotatedCount; + int m_areaColorCount; + int m_areaMovedCountTotal; + int m_areaScaledCountTotal; + int m_areaRotatedCountTotal; + int m_areaColorCountTotal; + int m_movedCount; + int m_scaledCount; + int m_rotatedCount; + int m_followedCount; + int m_areaMovedCountDisplay; + int m_areaScaledCountDisplay; + int m_areaRotatedCountDisplay; + int m_areaColorCountDisplay; + int m_areaMovedCountTotalDisplay; + int m_areaScaledCountTotalDisplay; + int m_areaRotatedCountTotalDisplay; + int m_areaColorCountTotalDisplay; + int m_movedCountDisplay; + int m_scaledCountDisplay; + int m_rotatedCountDisplay; + int m_followedCountDisplay; + + int m_unknown3684; GJGameLoadingLayer* m_loadingLayer; cocos2d::CCDrawNode* m_debugDrawNode; void* m_unk3678; @@ -8150,7 +8351,7 @@ class GJEffectManager : cocos2d::CCNode { TodoReturn createMoveCommand(cocos2d::CCPoint, int, float, int, float, bool, bool, bool, bool, float, float, int, int); TodoReturn createPlayerFollowCommand(float, float, int, float, float, int, int, int); TodoReturn createRotateCommand(float, float, int, int, int, float, bool, bool, bool, int, int); - TodoReturn createTransformCommand(double, double, double, double, bool, float, int, int, int, float, bool, bool, int, int) = m1 0x278834; + TodoReturn createTransformCommand(double, double, double, double, bool, float, int, int, int, float, bool, bool, int, int); TodoReturn getAllColorActions(); TodoReturn getAllColorSprites(); ColorAction* getColorAction(int) = win 0x249eb0, imac 0x2da050, m1 0x276444; @@ -8173,7 +8374,7 @@ class GJEffectManager : cocos2d::CCNode { TodoReturn opacityForIndex(int); TodoReturn opacityModForGroup(int); TodoReturn pauseTimer(int); - TodoReturn playerButton(bool, bool) = win 0x250470, m1 0x27f4f4; + TodoReturn playerButton(bool, bool) = win 0x250470; void playerDied() = ios 0x155ac; TodoReturn postCollisionCheck() = win 0x24a580; TodoReturn postMoveActions() = win 0x24eac0; @@ -9023,7 +9224,7 @@ class GJMessagePopup : FLAlertLayer, UploadActionDelegate, UploadPopupDelegate, void blockUser(); bool init(GJUserMessage*); - void loadFromGJMessage(GJUserMessage*) = win 0x0285be0, imac 0x2a2980, m1 0x2445b4, ios 0x2eb808; + void loadFromGJMessage(GJUserMessage*) = win 0x285be0, imac 0x2a2980, m1 0x2445b4, ios 0x2eb808; void onBlock(cocos2d::CCObject* sender); void onClose(cocos2d::CCObject* sender); void onRemove(cocos2d::CCObject* sender); @@ -10087,14 +10288,14 @@ class GJTransformControl : cocos2d::CCLayer { TodoReturn loadValues(GameObject*, cocos2d::CCArray*, gd::unordered_map&); TodoReturn logCurrentZeroPos(); void onToggleLockScale(cocos2d::CCObject* sender) = win 0x127310; - void refreshControl() = win 0x127180, m1 0x44694; + void refreshControl() = win 0x127180; void saveToState(GJTransformState&); void scaleButtons(float) = win 0x1273a0; cocos2d::CCSprite* spriteByTag(int tag) { return static_cast(m_warpSprites->objectAtIndex(tag - 1)); } TodoReturn updateAnchorSprite(cocos2d::CCPoint); - void updateButtons(bool, bool) = win 0x127460, m1 0x44c3c; + void updateButtons(bool, bool) = win 0x127460; TodoReturn updateMinMaxPositions(); virtual bool init() = win 0x126c30, m1 0x4b358, imac 0x53870; @@ -10705,7 +10906,7 @@ class ItemTriggerGameObject : EffectGameObject { class KeybindingsLayer : FLAlertLayer { // virtual ~KeybindingsLayer(); - static KeybindingsLayer* create() = m1 0x538bec; + static KeybindingsLayer* create(); TodoReturn addKeyPair(char const*, char const*); TodoReturn countForPage(int); @@ -10814,13 +11015,13 @@ class LabelGameObject : EffectGameObject { virtual bool init() = m1 0x1786d4, imac 0x1bbd40; virtual void setOpacity(unsigned char) = win 0x487310, m1 0x178b30, imac 0x1bc1b0; virtual void setupCustomSprites(gd::string) = m1 0x178704, imac 0x1bbd70; - virtual TodoReturn addMainSpriteToParent(bool) = m1 0x1793fc, imac 0x1bcb50; + virtual void addMainSpriteToParent(bool) = m1 0x1793fc, imac 0x1bcb50; virtual void resetObject() = m1 0x17a074, imac 0x1bdab0; virtual void customObjectSetup(gd::vector&, gd::vector&) = m1 0x1791b8, imac 0x1bc8e0; virtual gd::string getSaveString(GJBaseGameLayer*) = m1 0x179454, imac 0x1bcbb0; virtual void setObjectColor(cocos2d::ccColor3B const&) = m1 0x1793b4, imac 0x1bcb00; - virtual TodoReturn updateTextKerning(int) = m1 0x178bb4, imac 0x1bc230; - virtual TodoReturn getTextKerning() = m1 0x1a1638, imac 0x1ed720; + virtual void updateTextKerning(int) = m1 0x178bb4, imac 0x1bc230; + virtual int getTextKerning() = m1 0x1a1638, imac 0x1ed720; PAD = android32 0x11; @@ -11160,7 +11361,7 @@ class LevelEditorLayer : GJBaseGameLayer, LevelSettingsDelegate { TodoReturn getNextFreeSFXID(cocos2d::CCArray*); TodoReturn getObjectRect(GameObject*, bool, bool) = win 0x2c1df0; TodoReturn getRelativeOffset(GameObject*); - TodoReturn getSavedEditorPosition(int) = m1 0xd17c0; + TodoReturn getSavedEditorPosition(int); TodoReturn getSavedEditorPositions(); TodoReturn getSectionCount(); TodoReturn getSelectedEditorOrder(); @@ -11214,7 +11415,7 @@ class LevelEditorLayer : GJBaseGameLayer, LevelSettingsDelegate { TodoReturn reverseObjectChanged(EffectGameObject*); TodoReturn rotationForSlopeNearObject(GameObject*); TodoReturn runColorEffect(EffectGameObject*, int, float, float, bool); - TodoReturn saveEditorPosition(cocos2d::CCPoint&, int) = m1 0xd17a8; + TodoReturn saveEditorPosition(cocos2d::CCPoint&, int); static cocos2d::CCScene* scene(GJGameLevel* level, bool p1) = win inline { auto scene = cocos2d::CCScene::create(); auto layer = LevelEditorLayer::create(level, p1); @@ -11266,7 +11467,7 @@ class LevelEditorLayer : GJBaseGameLayer, LevelSettingsDelegate { virtual void draw() = imac 0xf90a0; virtual void postUpdate(float) = m1 0xd8f24, imac 0xf5f20, win 0x2cd530; virtual void updateVisibility(float) = win 0x2c5380, imac 0xee540, m1 0xd2794; - virtual void playerTookDamage(PlayerObject*) = m1 0xd8f10, win 0x2cd520, imac 0xf5f00; + virtual TodoReturn playerTookDamage(PlayerObject*) = m1 0xd8f10, win 0x2cd520, imac 0xf5f00; virtual void updateColor(cocos2d::ccColor3B&, float, int, bool, float, cocos2d::ccHSVValue&, int, bool, EffectGameObject*, int, int) = m1 0xd62b4, win 0x2c9d00, imac 0xf2a70; virtual void updateDebugDraw() = win 0x2ce170, m1 0xda0d4, imac 0xf7130; virtual void addToGroup(GameObject*, int, bool) = win 0x2cacf0, m1 0xd6a70, imac 0xf34c0; @@ -11535,7 +11736,7 @@ class LevelListCell : TableViewCell { static LevelListCell* create(float, float); void loadFromList(GJLevelList*) = win 0xbc320, imac 0x240be0, m1 0x1eb538, ios 0x105284; - void onClick(cocos2d::CCObject* sender) = win 0x0bd700, imac 0x2550b0, m1 0x1fdf64; + void onClick(cocos2d::CCObject* sender) = win 0xbd700, imac 0x2550b0, m1 0x1fdf64; void onListInfo(cocos2d::CCObject* sender) = imac 0x2551c0, m1 0x1fe064; void onViewProfile(cocos2d::CCObject* sender) = imac 0x255190, m1 0x1fe02c; TodoReturn updateBGColor(int); @@ -12024,7 +12225,7 @@ class LevelTools { static cocos2d::CCDictionary* createStarPackDict(); static gd::string fbURLForArtist(int) = win 0x30a990; static int getAudioBPM(int); - static gd::string getAudioFileName(int) = win 0x307cb0, m1 0x4605c4; + static gd::string getAudioFileName(int) = win 0x307cb0; static gd::string getAudioString(int); static gd::string getAudioTitle(int) = win 0x307130, m1 0x45fe8c, imac 0x508a10; static TodoReturn getLastGameplayReversed(); @@ -12759,7 +12960,7 @@ class MusicDownloadManager : cocos2d::CCNode, PlatformDownloadDelegate { void addDLToActive(char const* tag); TodoReturn addMusicDownloadDelegate(MusicDownloadDelegate*) = win 0x31c430; void addSongObjectFromString(gd::string); - void clearSong(int songID) = win inline, m1 0x4df1b8 { + void clearSong(int songID) = win inline { const char* key = cocos2d::CCString::createWithFormat("%i", songID)->getCString(); m_songObjects->removeObjectForKey(key); } @@ -12790,8 +12991,8 @@ class MusicDownloadManager : cocos2d::CCNode, PlatformDownloadDelegate { TodoReturn getAllSFXObjects(bool); TodoReturn getAllSongs(); void getCustomContentURL() = win 0x31ee40, imac 0x5986c0, m1 0x4e11c8; - cocos2d::CCObject* getDLObject(char const*) = win 0x38f40, m1 0x4dbea0; - cocos2d::CCArray* getDownloadedSongs() = win 0x31d5a0; + cocos2d::CCObject* getDLObject(char const*) = win 0x38f40; + cocos2d::CCArray* getDownloadedSongs() = win 0x31d5a0, m1 0x4decf8, imac 0x595e00; TodoReturn getDownloadProgress(int); TodoReturn getMusicArtistForID(int); TodoReturn getMusicObject(int); @@ -13187,20 +13388,20 @@ class ParticleGameObject : EnhancedGameObject { virtual void setRotationY(float) = m1 0x16c65c, imac 0x1ad950; virtual void setChildColor(cocos2d::ccColor3B const&) = m1 0x16c8ec, imac 0x1adbd0; virtual void customSetup() = m1 0x16b874, imac 0x1acbc0; - virtual TodoReturn addMainSpriteToParent(bool) = m1 0x16b920, imac 0x1acc90; + virtual void addMainSpriteToParent(bool) = m1 0x16b920, imac 0x1acc90; virtual void resetObject() = m1 0x16cab8, imac 0x1addc0; virtual void deactivateObject(bool) = m1 0x16ca74, imac 0x1add80; virtual void customObjectSetup(gd::vector&, gd::vector&) = m1 0x16b608, imac 0x1ac8e0; virtual gd::string getSaveString(GJBaseGameLayer*) = m1 0x16ccac, imac 0x1adfc0; - virtual TodoReturn claimParticle() = m1 0x16ba00, imac 0x1acd70; - virtual TodoReturn unclaimParticle() = m1 0x16bfc8, imac 0x1ad310; - virtual TodoReturn particleWasActivated() = m1 0x16c054, imac 0x1ad390; + virtual void claimParticle() = m1 0x16ba00, imac 0x1acd70; + virtual void unclaimParticle() = m1 0x16bfc8, imac 0x1ad310; + virtual void particleWasActivated() = m1 0x16c054, imac 0x1ad390; virtual void setObjectColor(cocos2d::ccColor3B const&) = m1 0x16c7f8, imac 0x1adae0; - virtual TodoReturn blendModeChanged() = m1 0x16b8f0, imac 0x1acc50; - virtual TodoReturn updateParticleColor(cocos2d::ccColor3B const&) = m1 0x1a1520, imac 0x1ed4e0; - virtual TodoReturn updateParticleOpacity(unsigned char) = m1 0x1a1524, imac 0x1ed4f0; - virtual TodoReturn updateMainParticleOpacity(unsigned char) = m1 0x16c9e0, imac 0x1adcc0; - virtual TodoReturn updateSecondaryParticleOpacity(unsigned char) = m1 0x16ca2c, imac 0x1add20; + virtual void blendModeChanged() = m1 0x16b8f0, imac 0x1acc50; + virtual void updateParticleColor(cocos2d::ccColor3B const&) = m1 0x1a1520, imac 0x1ed4e0; + virtual void updateParticleOpacity(unsigned char) = m1 0x1a1524, imac 0x1ed4f0; + virtual void updateMainParticleOpacity(unsigned char) = m1 0x16c9e0, imac 0x1adcc0; + virtual void updateSecondaryParticleOpacity(unsigned char) = m1 0x16ca2c, imac 0x1add20; virtual void updateSyncedAnimation(float, int) = m1 0x16cb20, imac 0x1ade20; virtual TodoReturn updateAnimateOnTrigger(bool) = m1 0x16cc5c, imac 0x1adf70; @@ -13341,7 +13542,7 @@ class PlatformToolbox { static TodoReturn toggleCPUSleepMode(bool); static void toggleForceTimer(bool) = ios 0x17798c; static void toggleFullScreen(bool) = ios 0x177934; - static void toggleLockCursor(bool) = ios 0x1779c4, m1 0x42d360; + static void toggleLockCursor(bool) = ios 0x1779c4; static TodoReturn toggleMouseControl(bool); static void toggleSmoothFix(bool) = ios 0x177990; static void toggleVerticalSync(bool) = ios 0x177988; @@ -13362,7 +13563,7 @@ class PlayerCheckpoint : cocos2d::CCNode { // virtual ~PlayerCheckpoint(); PlayerCheckpoint() = ios 0x12d090; - static PlayerCheckpoint* create() = win 0x3979a0, ios 0x122a24, m1 0xa85d0; + static PlayerCheckpoint* create() = win 0x3979a0, ios 0x122a24; virtual bool init() = imac 0xbfbc0, m1 0xab20c; @@ -13462,7 +13663,7 @@ class PlayerObject : GameObject, AnimatedSpriteDelegate { void createRobot(int) = win 0x366050; void createSpider(int) = win 0x366410; void deactivateParticle() = m1 0x3828c8, imac 0x40a870; // inlined on windows - void deactivateStreak(bool) = m1 0x37eab0; + void deactivateStreak(bool); TodoReturn destroyFromHitHead(); TodoReturn didHitHead(); void disableCustomGlowColor() { @@ -13482,8 +13683,9 @@ class PlayerObject : GameObject, AnimatedSpriteDelegate { void flipGravity(bool, bool) = win 0x3781e0, m1 0x3848b4, imac 0x40c9c0; TodoReturn flipMod(); void gameEventTriggered(int p0, int p1) = win inline, m1 0x384c24, imac 0x40cd80 { - if (this->m_gameLayer) - this->m_gameLayer->gameEventTriggered(static_cast(p0), p1, this->m_unk326); + if (this->m_gameLayer) { + this->m_gameLayer->gameEventTriggered(static_cast(p0), p1, static_cast(this->m_savedObjectType)); + } } bool getActiveMode() = imac 0x41f680, m1 0x394684; TodoReturn getCurrentXVelocity(); @@ -13538,7 +13740,7 @@ class PlayerObject : GameObject, AnimatedSpriteDelegate { void preCollision() = m1 0x3855d8, imac 0x40d7d0; bool preSlopeCollision(float, GameObject*) = win 0x36d370; void propellPlayer(float, bool, int) = win 0x37d860, imac 0x424240, m1 0x398e28; - void pushButton(PlayerButton) = win 0x375f70, imac 0x41d330, m1 0x392760; + void pushButton(PlayerButton) = win 0x375f70, imac 0x41d330, m1 0x27f4b0; TodoReturn pushDown(); void pushPlayer(float); TodoReturn redirectDash(float); @@ -13578,7 +13780,7 @@ class PlayerObject : GameObject, AnimatedSpriteDelegate { void setYVelocity(double, int) = win 0x366e70; TodoReturn spawnCircle(); TodoReturn spawnCircle2(); - TodoReturn spawnDualCircle() = m1 0x39213c; + TodoReturn spawnDualCircle(); TodoReturn spawnFromPlayer(PlayerObject*, bool); TodoReturn spawnPortalCircle(cocos2d::ccColor3B, float) = win 0x375790; TodoReturn spawnScaleCircle(); @@ -13692,7 +13894,7 @@ class PlayerObject : GameObject, AnimatedSpriteDelegate { virtual void resetObject() = m1 0x390ae4, imac 0x41b180; virtual cocos2d::CCPoint getRealPosition() = m1 0x398604, imac 0x423a20; virtual OBB2D* getOrientedBox() = m1 0x3997ac, imac 0x424d80; - virtual TodoReturn getObjectRotation() = m1 0x3997d8, imac 0x424da0; + virtual float getObjectRotation() = m1 0x3997d8, imac 0x424da0; virtual void animationFinished(char const*) = win 0x3808b0, m1 0x39a5d0, imac 0x425df0; cocos2d::CCNode* m_mainLayer; @@ -14009,7 +14211,7 @@ class PlayLayer : GJBaseGameLayer, CCCircleWaveDelegate, CurrencyRewardDelegate, void applyEnterEffect(GameObject*, int, bool) = win 0x38e270; bool canPauseGame() = win inline, m1 0xaac6c, imac 0xbf610 { - return !m_hasCompletedLevel && !m_cantPause; + return !m_hasCompletedLevel && !m_levelEndAnimationStarted; } TodoReturn checkpointWithID(int); TodoReturn colorObject(int, cocos2d::ccColor3B); @@ -14059,11 +14261,11 @@ class PlayLayer : GJBaseGameLayer, CCCircleWaveDelegate, CurrencyRewardDelegate, void playPlatformerEndAnimationToPos(cocos2d::CCPoint, bool) = win 0x388f00, m1 0xa3bb8, imac 0xb7260; TodoReturn playReplay(gd::string); void prepareCreateObjectsFromSetup(gd::string&) = win 0x389a50, imac 0xaccb0, m1 0x9b03c, ios 0x118304; - void prepareMusic(bool) = win 0x3972a0, m1 0xa0b3c; + void prepareMusic(bool) = win 0x3972a0; void processCreateObjectsFromSetup() = win 0x389d00, imac 0xad0e0, m1 0x9b3fc, ios 0x1185ec; TodoReturn processLoadedMoveActions(); TodoReturn queueCheckpoint(); - void removeAllObjects() = m1 0xa0e18; + void removeAllObjects(); void removeCheckpoint(bool) = win 0x394910; void removeFromGroupOld(GameObject*); void resetLevel() = win 0x3958b0, imac 0xb32d0, m1 0xa01f0, ios 0x11baf4; @@ -14625,7 +14827,7 @@ class RingObject : EffectGameObject { virtual gd::string getSaveString(GJBaseGameLayer*) = m1 0x16e080, imac 0x1af710; virtual void setRScale(float) = m1 0x16df30, imac 0x1af560; virtual void triggerActivated(float) = m1 0x16dd88, imac 0x1af3b0; - virtual TodoReturn shouldDrawEditorHitbox() = m1 0x16df64, imac 0x1af5a0; + virtual bool shouldDrawEditorHitbox() = m1 0x16df64, imac 0x1af5a0; virtual TodoReturn powerOnObject(int) = m1 0x16dd94, imac 0x1af3c0; bool m_claimTouch; @@ -16855,53 +17057,45 @@ class ShaderLayer : cocos2d::CCLayer { TodoReturn objectPosToShaderPos(cocos2d::CCPoint); void performCalculations() = win 0x45c4b0, imac 0x3d55f0, m1 0x356bf8; TodoReturn preBulgeShader(); - TodoReturn preChromaticGlitchShader() = m1 0x354cbc; - TodoReturn preChromaticShader() = m1 0x354a48; + TodoReturn preChromaticGlitchShader(); + TodoReturn preChromaticShader(); TodoReturn preColorChangeShader(); - TodoReturn preCommonShader() = m1 0x352414; - TodoReturn preGlitchShader() = m1 0x354584; + TodoReturn preCommonShader(); + TodoReturn preGlitchShader(); TodoReturn preGrayscaleShader(); TodoReturn preHueShiftShader(); TodoReturn preInvertColorShader(); - TodoReturn preLensCircleShader() = m1 0x355784; + TodoReturn preLensCircleShader(); TodoReturn preMotionBlurShader(); - cocos2d::CCPoint prepareTargetContainer() = win 0x45a4e0, m1 0x35529c; + cocos2d::CCPoint prepareTargetContainer() = win 0x45a4e0; TodoReturn prePinchShader(); - void prePixelateShader() = win 0x45a300, m1 0x355078; - TodoReturn preRadialBlurShader() = m1 0x355a20; + void prePixelateShader() = win 0x45a300; + TodoReturn preRadialBlurShader(); TodoReturn preSepiaShader(); - TodoReturn preShockLineShader() = m1 0x35416c; - TodoReturn preShockWaveShader() = m1 0x353c0c; + TodoReturn preShockLineShader(); + TodoReturn preShockWaveShader(); TodoReturn preSplitScreenShader(); bool resetAllShaders() = win 0x45d940; TodoReturn resetTargetContainer(); TodoReturn setupBulgeShader(); - TodoReturn setupChromaticGlitchUniforms() = m1 0x351aac; + TodoReturn setupChromaticGlitchUniforms(); TodoReturn setupChromaticUniforms(); TodoReturn setupColorChangeShader(); - TodoReturn setupCommonUniforms() = m1 0x3514a4; + TodoReturn setupCommonUniforms(); TodoReturn setupGlitchUniforms(); TodoReturn setupGrayscaleShader(); TodoReturn setupHueShiftShader(); TodoReturn setupInvertColorShader(); - TodoReturn setupLensCircleShader() = m1 0x351bc4; + TodoReturn setupLensCircleShader(); TodoReturn setupMotionBlurShader(); TodoReturn setupPinchShader(); TodoReturn setupRadialBlurShader(); TodoReturn setupSepiaShader(); void setupShader(bool) = win 0x455f60, m1 0x350c14, imac 0x3ce3c0; - TodoReturn setupShockLineUniforms() = m1 0x3517ac; - TodoReturn setupShockWaveUniforms() = m1 0x3515e0; - TodoReturn setupSplitScreenShader() = m1 0x3520cc; - void toggleAntiAlias(bool toggled) = win 0x456c90, m1 inline { - if (m_antiAlias != toggled) { - m_antiAlias = toggled; - if (!toggled) - m_sprite->getTexture()->setAliasTexParameters(); - else - m_sprite->getTexture()->setAntiAliasTexParameters(); - } - } + TodoReturn setupShockLineUniforms(); + TodoReturn setupShockWaveUniforms(); + TodoReturn setupSplitScreenShader(); + void toggleAntiAlias(bool) = win 0x456c90; bool triggerBulge(float, float, float, float, float, int, int, float, bool); TodoReturn triggerChromaticGlitch(bool, float, float, float, float, float, float, float, int, float, bool, bool); TodoReturn triggerChromaticX(float, float, int, float, bool); @@ -16926,7 +17120,7 @@ class ShaderLayer : cocos2d::CCLayer { bool triggerSplitScreenRows(float, float, int, float); TodoReturn tweenValue(float, float, int, float, int, float); TodoReturn tweenValueAuto(float, int, float, int, float); - void updateEffectOffsets(cocos2d::CCPoint) = win 0x456fb0, m1 0x352640; + void updateEffectOffsets(cocos2d::CCPoint) = win 0x456fb0; void updateMotionBlurSpeedX(float, float) = m1 0x355f40, imac 0x3d46e0; void updateMotionBlurSpeedY(float, float) = m1 0x355f74, imac 0x3d4740; TodoReturn updateShockLineCenter(cocos2d::CCPoint); @@ -17285,7 +17479,7 @@ class Slider : cocos2d::CCLayer { TodoReturn disableSlider(); void disableTouch() = imac 0x303b10, m1 0x297408; - TodoReturn enableSlider() = m1 0x297364; + TodoReturn enableSlider(); bool getLiveDragging() { return m_touchLogic->m_activateThumb; } @@ -17393,7 +17587,7 @@ class SmartGameObject : GameObject { virtual gd::string getSaveString(GJBaseGameLayer*) = m1 0x16af34, imac 0x1ac0c0; bool m_property157; - PAD = android32 0x9; + PAD = android32 0x5; } [[link(android)]] @@ -17426,8 +17620,8 @@ class SongCell : TableViewCell { class SongInfoLayer : FLAlertLayer { // virtual ~SongInfoLayer(); - static SongInfoLayer* create(gd::string, gd::string, gd::string, gd::string, gd::string, gd::string, int, gd::string, int) = m1 0x5307b0; - static SongInfoLayer* create(int) = m1 0x530e88; + static SongInfoLayer* create(gd::string, gd::string, gd::string, gd::string, gd::string, gd::string, int, gd::string, int); + static SongInfoLayer* create(int); bool init(gd::string, gd::string, gd::string, gd::string, gd::string, gd::string, int, gd::string, int) = win 0x466b00; void onBPM(cocos2d::CCObject* sender); @@ -17618,8 +17812,8 @@ class SpecialAnimGameObject : EnhancedGameObject { virtual void resetObject() = m1 0x16d79c, imac 0x1aecf0; virtual void customObjectSetup(gd::vector&, gd::vector&) = m1 0x16d7a8, imac 0x1aed10; virtual gd::string getSaveString(GJBaseGameLayer*) = m1 0x16d808, imac 0x1aed70; - virtual TodoReturn updateMainColor(cocos2d::ccColor3B const&) = m1 0x16d77c, imac 0x1aecb0; - virtual TodoReturn updateSecondaryColor(cocos2d::ccColor3B const&) = m1 0x16d78c, imac 0x1aecd0; + virtual void updateMainColor(cocos2d::ccColor3B const&) = m1 0x16d77c, imac 0x1aecb0; + virtual void updateSecondaryColor(cocos2d::ccColor3B const&) = m1 0x16d78c, imac 0x1aecd0; virtual void updateSyncedAnimation(float, int) = m1 0x2012e8, imac 0x259570; } @@ -17972,11 +18166,25 @@ class TeleportPortalObject : RingObject { class TextAlertPopup : cocos2d::CCNode { // virtual ~TextAlertPopup(); - static TextAlertPopup* create(gd::string, float, float, int, gd::string) = win 0x28b920, imac 0x2ab0c0, m1 0x24c288; + static TextAlertPopup* create(gd::string text, float delay, float scale, int opacity, gd::string font) = win 0x28b920, imac 0x2ab0c0, m1 0x24c288; - bool init(gd::string, float, float, int, gd::string) = win 0x28ba50, imac 0x2ab2e0, m1 0x24c4d0; - void setAlertPosition(cocos2d::CCPoint, cocos2d::CCPoint); - void setLabelColor(cocos2d::ccColor3B) = imac 0x2ab5f0, m1 0x24c7d4; // inlined on Windows + bool init(gd::string text, float delay, float scale, int opacity, gd::string font) = win 0x28ba50, imac 0x2ab2e0, m1 0x24c4d0; + void setAlertPosition(cocos2d::CCPoint windowOffset, cocos2d::CCPoint pointOffset) = win inline, imac 0x2ab630, m1 0x24c810 { + if (!m_label) return; + + auto winSize = cocos2d::CCDirector::sharedDirector()->getWinSize(); + this->setPosition({ + windowOffset.x * winSize.width + m_width / 2 + pointOffset.x, + windowOffset.y * winSize.height + m_height / 2 + pointOffset.y + }); + } + void setLabelColor(cocos2d::ccColor3B color) = win inline, imac 0x2ab5f0, m1 0x24c7d4 { + if (m_label) m_label->setColor(color); + } + + float m_width; + float m_height; + cocos2d::CCLabelBMFont* m_label; } [[link(android)]] @@ -18039,8 +18247,8 @@ class TextGameObject : GameObject { virtual void customObjectSetup(gd::vector&, gd::vector&) = m1 0x504f98, imac 0x5da200; virtual gd::string getSaveString(GJBaseGameLayer*) = m1 0x50514c, imac 0x5da380; - virtual TodoReturn updateTextKerning(int) = m1 0x504ce4, imac 0x5d9f80; - virtual TodoReturn getTextKerning() = m1 0x505998, imac 0x5dad80; + virtual void updateTextKerning(int) = m1 0x504ce4, imac 0x5d9f80; + virtual int getTextKerning() = m1 0x505998, imac 0x5dad80; gd::string m_text; // property 488 @@ -18375,7 +18583,7 @@ class UndoObject : cocos2d::CCObject { // some of the floats are set to 1.0 but idk which who cares } - static UndoObject* create(GameObject*, UndoCommand) = m1 0xc9aec; + static UndoObject* create(GameObject*, UndoCommand); static UndoObject* createWithArray(cocos2d::CCArray* arrOfObjects, UndoCommand command) { auto* ret = new UndoObject(); if (ret->init(arrOfObjects, command)) { diff --git a/test/members/Android32.cpp b/test/members/Android32.cpp index 7c39a7372..e1e792550 100644 --- a/test/members/Android32.cpp +++ b/test/members/Android32.cpp @@ -54,10 +54,16 @@ GEODE_MEMBER_CHECK(GJBaseGameLayer, m_player2, 0x898); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_groupDict, 0x95c); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unknownE38, 0x98c); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_massiveFloatArray, 0xa48); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_portalParticlesDict, 0x2a04); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_customParticles, 0x2a08); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unclaimedParticles, 0x2a0c); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_customParticlesDictArray, 0x2a2c); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_temporaryParticles, 0x2a30); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_attempts, 0x29d4); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unk2a50, 0x2a50); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_startPosObject, 0x2a60); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unk2a84, 0x2aa4); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_audioEffectsLayer, 0x2b04); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_queuedButtons, 0x2b5c); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_uiLayer, 0x2c10); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sections, 0x2c34); diff --git a/test/members/Android64.cpp b/test/members/Android64.cpp index 011be4532..c85f48496 100644 --- a/test/members/Android64.cpp +++ b/test/members/Android64.cpp @@ -30,6 +30,11 @@ GEODE_MEMBER_CHECK(GJBaseGameLayer, m_objectLayer, 0xff0); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_groundLayer, 0x1018); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_groundLayer2, 0x1020); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_massiveFloatArray, 0x10e4); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_portalParticlesDict, 0x30f0); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_customParticles, 0x30f8); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unclaimedParticles, 0x3100); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_customParticlesDictArray, 0x3140); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_temporaryParticles, 0x3148); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_attempts, 0x30b4); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_shaderLayer, 0x3198); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_startPosObject, 0x31a8); diff --git a/test/members/MacOSArm.cpp b/test/members/MacOSArm.cpp index e9e47d4ce..a28683258 100644 --- a/test/members/MacOSArm.cpp +++ b/test/members/MacOSArm.cpp @@ -20,13 +20,20 @@ GEODE_SIZE_CHECK(GJBaseGameLayer, 0x34c0); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_groupDict, 0xde0); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_massiveFloatArray, 0xf6c); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_attempts, 0x2f14); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_isPlatformer, 0x2f2e); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_portalParticlesDict, 0x2f50); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_customParticles, 0x2f58); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unclaimedParticles, 0x2f60); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_customParticlesDictArray, 0x2f90); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_temporaryParticles, 0x2f98); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_shaderLayer, 0x2fd8); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_startPosObject, 0x2fe8); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_isPracticeMode, 0x3050); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_queuedButtons, 0x3158); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unk3458, 0x3288); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_uiLayer, 0x3298); -GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sections, 0x32f8); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sections, 0x32e0); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sectionSizes, 0x3388); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_audioVisualizerBG, 0x3420); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_loadingLayer, 0x3498); diff --git a/test/members/MacOSIntel.cpp b/test/members/MacOSIntel.cpp index ca2713f93..388d4b43a 100644 --- a/test/members/MacOSIntel.cpp +++ b/test/members/MacOSIntel.cpp @@ -114,6 +114,11 @@ GEODE_MEMBER_CHECK(GJBaseGameLayer, m_groupDict, 0xde0); // GEODE_MEMBER_CHECK(GJBaseGameLayer, m_linkedGroupDict, 0xe80); // GEODE_MEMBER_CHECK(GJBaseGameLayer, m_objectLayer, 0xea8); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_massiveFloatArray, 0xf6c); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_portalParticlesDict, 0x2f50); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_customParticles, 0x2f58); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unclaimedParticles, 0x2f60); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_customParticlesDictArray, 0x2f90); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_temporaryParticles, 0x2f98); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_shaderLayer, 0x2fd8); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_startPosObject, 0x2fe8); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_isPracticeMode, 0x3050); @@ -121,7 +126,8 @@ GEODE_MEMBER_CHECK(GJBaseGameLayer, m_isPracticeMode, 0x3050); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_queuedButtons, 0x3158); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unk3458, 0x3288); // GEODE_MEMBER_CHECK(GJBaseGameLayer, m_uiLayer, 0x3290); -GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sections, 0x32f8); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sections, 0x32e0); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sectionSizes, 0x3388); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_loadingLayer, 0x3498); // GEODE_MEMBER_CHECK(PlayLayer, m_circleWaveArray, 0x35a0); diff --git a/test/members/Windows.cpp b/test/members/Windows.cpp index 9051cfd2d..fc6c189af 100644 --- a/test/members/Windows.cpp +++ b/test/members/Windows.cpp @@ -9,6 +9,7 @@ GEODE_MEMBER_CHECK(GJBaseGameLayer, m_gameState, 0x1a8); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_level, 0x870); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_player1, 0xd98); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_player2, 0xda0); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_groupDict, 0xef8); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_isPlatformer, 0x3096); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unk2a50, 0x3160); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unk2a84, 0x31f0); @@ -17,9 +18,16 @@ GEODE_MEMBER_CHECK(GJBaseGameLayer, m_isPracticeMode, 0x31e8); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_endPortal, 0x3220); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_uiLayer, 0x3468); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_queuedButtons, 0x32f8); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_portalParticlesDict, 0x30b8); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_customParticles, 0x30c0); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unclaimedParticles, 0x30c8); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_customParticlesDictArray, 0x3110); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_temporaryParticles, 0x3118); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_timePlayed, 0x3488); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sections, 0x34b8); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sectionSizes, 0x3560); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_stickyGroups, 0x35d0); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_audioVisualizerBG, 0x3610); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_loadingLayer, 0x3688); GEODE_SIZE_CHECK(PlayLayer, 0x3998); @@ -208,14 +216,14 @@ GEODE_MEMBER_CHECK(GameObject, m_outerSectionIndex, 0x278); GEODE_MEMBER_CHECK(GameObject, m_positionXOffset, 0x2a0); GEODE_MEMBER_CHECK(GameObject, m_scaleXOffset, 0x2b8); GEODE_MEMBER_CHECK(GameObject, m_glowSprite, 0x2f0); -GEODE_MEMBER_CHECK(GameObject, m_someSprite, 0x308); +GEODE_MEMBER_CHECK(GameObject, m_particle, 0x308); GEODE_MEMBER_CHECK(GameObject, m_particleString, 0x310); GEODE_MEMBER_CHECK(GameObject, m_colorSprite, 0x380); GEODE_MEMBER_CHECK(GameObject, m_uniqueID, 0x39c); GEODE_MEMBER_CHECK(GameObject, m_startPosition, 0x3c8); GEODE_MEMBER_CHECK(GameObject, m_startRotationX, 0x3d4); GEODE_MEMBER_CHECK(GameObject, m_startFlipX, 0x3ec); -GEODE_MEMBER_CHECK(GameObject, m_unk3ef, 0x3ef); +GEODE_MEMBER_CHECK(GameObject, m_isInvisible, 0x3ef); GEODE_MEMBER_CHECK(GameObject, m_groups, 0x490); GEODE_MEMBER_CHECK(GameObject, m_lastPosition, 0x4d0); diff --git a/test/members/iOS.cpp b/test/members/iOS.cpp index fd7bb30eb..707b86034 100644 --- a/test/members/iOS.cpp +++ b/test/members/iOS.cpp @@ -26,7 +26,8 @@ GEODE_MEMBER_CHECK(GJBaseGameLayer, m_isPracticeMode, 0x3050); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_queuedButtons, 0x3158); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_unk3458, 0x3288); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_uiLayer, 0x3298); -GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sections, 0x32f8); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sections, 0x32e0); +GEODE_MEMBER_CHECK(GJBaseGameLayer, m_sectionSizes, 0x3388); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_audioVisualizerBG, 0x3420); GEODE_MEMBER_CHECK(GJBaseGameLayer, m_loadingLayer, 0x3498);