Skip to content

Commit

Permalink
i cant compile rn hope it works 👍
Browse files Browse the repository at this point in the history
  • Loading branch information
altalk23 committed Feb 16, 2024
1 parent 96bf86f commit 631fd43
Show file tree
Hide file tree
Showing 2 changed files with 200 additions and 11 deletions.
189 changes: 189 additions & 0 deletions src/EndLevelLayer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
#include <Geode/Bindings.hpp>
#include <Geode/modify/EndLevelLayer.hpp>
#include <Geode/utils/cocos.hpp>
#include <Geode/utils/NodeIDs.hpp>

#include "IDCheck.hpp"

using namespace geode::prelude;
using namespace geode::node_ids;

// this code sux but oh well
// maybe it should be in geode utils
// definitely should be in geode utils
// ok it is in geode utils now
// use it when we release beta 20
inline CCNode* getChildBySpriteFrameName(CCNode* parent, const char* name) {
auto cache = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(name);
if (!cache) return nullptr;

auto* texture = cache->getTexture();
auto rect = cache->getRect();

for (int i = 0; i < parent->getChildrenCount(); ++i) {
auto* child = parent->getChildren()->objectAtIndex(i);
if (auto* spr = typeinfo_cast<CCSprite*>(child)) {
if (spr->getTexture() == texture && spr->getTextureRect() == rect) {
return spr;
}
} else if (auto* btn = typeinfo_cast<CCMenuItemSprite*>(child)) {
auto* img = btn->getNormalImage();
if (auto* spr = typeinfo_cast<CCSprite*>(img)) {
if (spr->getTexture() == texture && spr->getTextureRect() == rect) {
return btn;
}
}
}
}
return nullptr;
}

$register_ids(EndLevelLayer) {
if (!m_mainLayer->getID().empty()) {
goto container_ids;
}

m_mainLayer->setID("main-layer");

int idx = 0;
setIDs(
m_mainLayer,
idx,
"background",
"hide-dropdown-menu",
"chain-left",
"chain-right"
);
idx += 4;

if (auto levelTxt = ::getChildBySpriteFrameName(m_mainLayer, "GJ_levelComplete_001.png")) {
levelTxt->setID("level-complete-text");
idx += 1;
}
else if (auto practiceTxt = ::getChildBySpriteFrameName(m_mainLayer, "GJ_practiceComplete_001.png")) {
practiceTxt->setID("practice-complete-text");
idx += 1;
}

for (auto child : CCArrayExt<CCNode*>(m_mainLayer->getChildren())) {
if (auto bmFont = typeinfo_cast<CCLabelBMFont*>(child)) {
std::string_view view = bmFont->getString();

if (view.starts_with("Attempts")) {
bmFont->setID("attempts-label");
idx += 1;
}
else if (view.starts_with("Jumps")) {
bmFont->setID("jumps-label");
idx += 1;
}
else if (view.starts_with("Time")) {
bmFont->setID("time-label");
idx += 1;
}
else if (view.starts_with("Points")) {
bmFont->setID("points-label");
idx += 1;
}
}
}

auto potentialEndText = m_mainLayer->getChildren()->objectAtIndex(idx);
if (!typeinfo_cast<TextArea*>(potentialEndText)) {
potentialEndText->setID("end-text");
idx += 1;
}

if (auto textArea = typeinfo_cast<TextArea*>(m_mainLayer->getChildren()->objectAtIndex(idx))) {
textArea->setID("complete-message");
idx += 1;
}

m_buttonMenu->setID("button-menu");
idx += 1;

setIDs(
m_buttonMenu,
0,
"replay-button",
"menu-button"
);

if (auto editButton = ::getChildBySpriteFrameName(m_buttonMenu, "GJ_editBtn_001.png")) {
editButton->setID("edit-button");
}
if (auto leaderboardButton = ::getChildBySpriteFrameName(m_buttonMenu, "GJ_levelLeaderboardBtn_001.png")) {
leaderboardButton->setID("leaderboard-button");
}

int currentCoin = 1;
for (auto child : CCArrayExt<CCNode*>(m_mainLayer->getChildren())) {
for (auto framename : {
"secretCoin_b_01_001.png",
"secretCoin_2_b_01_001.png",
"secretCoinUI_001.png",
"secretCoinUI2_001.png"
}) {
if (auto sprite = ::getChildBySpriteFrameName(m_buttonMenu, framename)) {
sprite->setID(fmt::format("coin-{}-sprite", currentCoin));
currentCoin += 1;
idx += 1;
}
}
}

if (PlatformToolbox::isControllerConnected()) {
setIDs(
m_mainLayer,
idx,
"controller-replay-hint",
"controller-menu-hint"
);
idx += 2;
}

container_ids:

for (auto child : CCArrayExt<CCNode*>(m_mainLayer->getChildren())) {
if (auto star = ::getChildBySpriteFrameName(child, "GJ_bigStar_001.png")) {
child->setID("star-container");
star->setID("star-sprite");
getChildOfType<CCLabelBMFont>(child, 0)->setID("star-label");
}
else if (auto star = ::getChildBySpriteFrameName(child, "GJ_bigMoon_001.png")) {
child->setID("moon-container");
star->setID("moon-sprite");
getChildOfType<CCLabelBMFont>(child, 0)->setID("moon-label");
}
else if (auto star = ::getChildBySpriteFrameName(child, "currencyOrbIcon_001.png")) {
child->setID("orb-container");
star->setID("orb-sprite");
getChildOfType<CCLabelBMFont>(child, 0)->setID("orb-label");
}
else if (auto star = ::getChildBySpriteFrameName(child, "GJ_bigDiamond_001.png")) {
child->setID("diamond-container");
star->setID("diamond-sprite");
getChildOfType<CCLabelBMFont>(child, 0)->setID("diamond-label");
}
}
}

struct EndLevelLayerIDs : Modify<EndLevelLayerIDs, EndLevelLayer> {
static void onModify(auto& self) {
if (!self.setHookPriority("EndLevelLayer::customSetup", GEODE_ID_PRIORITY)) {
log::warn("Failed to set EndLevelLayer::customSetup hook priority, node IDs may not work properly");
}
}

void customSetup(bool p0) {
EndLevelLayer::customSetup(p0);

NodeIDs::get()->provide(this);
}

void showLayer(bool p0) {
EndLevelLayer::showLayer(p0);

NodeIDs::get()->provide(this);
}
};
22 changes: 11 additions & 11 deletions src/PauseLayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ using namespace geode::node_ids;

// this code sux but oh well
// maybe it should be in geode utils
CCNode* getChildBySpriteFrameName(CCNode* parent, const char* name) {
inline CCNode* getChildBySpriteFrameName(CCNode* parent, const char* name) {
auto cache = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(name);
if (!cache) return nullptr;

Expand Down Expand Up @@ -83,7 +83,7 @@ CCNode* getChildBySpriteFrameName(CCNode* parent, const char* name) {
setIDSafe(this, idx, "center-button-menu");
idx += 1;

if(auto practiceTxt = getChildBySpriteFrameName(this, "GJ_practiceTxt_001.png")) {
if(auto practiceTxt = ::getChildBySpriteFrameName(this, "GJ_practiceTxt_001.png")) {
practiceTxt->setID("practice-arrow-text");
idx += 1;
}
Expand Down Expand Up @@ -154,47 +154,47 @@ CCNode* getChildBySpriteFrameName(CCNode* parent, const char* name) {
if (auto menu = this->getChildByID("center-button-menu")) {

int idx = 0;
if (auto* node = getChildBySpriteFrameName(menu, "GJ_editBtn_001.png")) {
if (auto* node = ::getChildBySpriteFrameName(menu, "GJ_editBtn_001.png")) {
node->setID("edit-button");
++idx;
}

if (auto* node = getChildBySpriteFrameName(menu, "GJ_replayFullBtn_001.png")) {
if (auto* node = ::getChildBySpriteFrameName(menu, "GJ_replayFullBtn_001.png")) {
node->setID("full-restart-button");
++idx;
}

if (auto* node = getChildBySpriteFrameName(menu, "GJ_menuBtn_001.png")) {
if (auto* node = ::getChildBySpriteFrameName(menu, "GJ_menuBtn_001.png")) {
node->setID("exit-button");
++idx;
}

if (auto* node = getChildBySpriteFrameName(menu, "GJ_menuBtn_001.png")) {
if (auto* node = ::getChildBySpriteFrameName(menu, "GJ_menuBtn_001.png")) {
node->setID("exit-button");
++idx;
}

if (auto* node = getChildBySpriteFrameName(menu, "GJ_normalBtn_001.png")) {
if (auto* node = ::getChildBySpriteFrameName(menu, "GJ_normalBtn_001.png")) {
node->setID("practice-button");
++idx;
}

if (auto* node = getChildBySpriteFrameName(menu, "GJ_practiceBtn_001.png")) {
if (auto* node = ::getChildBySpriteFrameName(menu, "GJ_practiceBtn_001.png")) {
node->setID("practice-button");
++idx;
}

if (auto* node = getChildBySpriteFrameName(menu, "GJ_playBtn2_001.png")) {
if (auto* node = ::getChildBySpriteFrameName(menu, "GJ_playBtn2_001.png")) {
node->setID("play-button");
++idx;
}

if (auto* node = getChildBySpriteFrameName(menu, "GJ_replayBtn_001.png")) {
if (auto* node = ::getChildBySpriteFrameName(menu, "GJ_replayBtn_001.png")) {
node->setID("retry-button");
++idx;
}

if (auto* node = getChildBySpriteFrameName(menu, "GJ_optionsBtn_001.png")) {
if (auto* node = ::getChildBySpriteFrameName(menu, "GJ_optionsBtn_001.png")) {
node->setID("options-button");
node->removeFromParentAndCleanup(false);
rightMenu->addChild(node);
Expand Down

0 comments on commit 631fd43

Please sign in to comment.