Skip to content

Commit e467148

Browse files
committed
Treasure room loop fix
1 parent 6863a82 commit e467148

File tree

1 file changed

+43
-7
lines changed

1 file changed

+43
-7
lines changed

src/MiniTreasureRoom.cpp

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,45 @@
11
#include "MiniTreasureRoom.hpp"
2+
#include <Geode/modify/GameManager.hpp>
3+
4+
// This weird system is to stop the treasure room loop from overwriting the level's song
5+
6+
Hook* fadeHook = nullptr;
7+
8+
class $modify(RewardGM, GameManager) {
9+
static void onModify(auto& self) {
10+
if (auto h = self.getHook("GameManager::fadeInMusic")) {
11+
fadeHook = h.unwrap();
12+
fadeHook->setAutoEnable(false);
13+
auto res = fadeHook->disable();
14+
if (res.isErr()) {
15+
log::warn("Failed to disable GameManager::fadeInMusic - {}", res.unwrapErr());
16+
}
17+
}
18+
}
19+
20+
void fadeInMusic(gd::string p0) {
21+
22+
}
23+
};
224

325
bool MiniTreasureRoom::setup() {
26+
if (fadeHook) {
27+
auto res = fadeHook->enable();
28+
if (res.isErr()) {
29+
log::warn("Failed to enable GameManager::fadeInMusic - {}", res.unwrapErr());
30+
}
31+
} else {
32+
log::warn("Hook not found!");
33+
}
434
m_rewardLayer = SecretRewardsLayer::create(false);
5-
m_mainLayer->removeFromParent();
35+
if (fadeHook) {
36+
auto res = fadeHook->disable();
37+
if (res.isErr()) {
38+
log::warn("Failed to disable GameManager::fadeInMusic - {}", res.unwrapErr());
39+
}
40+
}
41+
m_mainLayer->setVisible(false);
642
addChild(m_rewardLayer);
7-
m_mainLayer = m_rewardLayer;
843
setID("MiniTreasureRoom"_spr);
944
setOpacity(0);
1045

@@ -38,8 +73,8 @@ MiniTreasureRoom* MiniTreasureRoom::create() {
3873

3974
void MiniTreasureRoom::onClose(CCObject* sender) {
4075
if (!m_rewardLayer->m_inMainLayer) return m_rewardLayer->onBack(sender);
41-
m_mainLayer->stopAllActions();
42-
m_mainLayer->runAction(CCSequence::createWithTwoActions(CCMoveTo::create(0.3, {0, CCDirector::sharedDirector()->getWinSize().height + 5}), CCCallFunc::create(this, callfunc_selector(MiniTreasureRoom::transitionFinished))));
76+
m_rewardLayer->stopAllActions();
77+
m_rewardLayer->runAction(CCSequence::createWithTwoActions(CCMoveTo::create(0.3, {0, CCDirector::sharedDirector()->getWinSize().height + 5}), CCCallFunc::create(this, callfunc_selector(MiniTreasureRoom::transitionFinished))));
4378
}
4479

4580
void MiniTreasureRoom::transitionFinished() {
@@ -51,8 +86,9 @@ void MiniTreasureRoom::show() {
5186
auto dir = CCDirector::sharedDirector();
5287
m_noElasticity = true;
5388
Popup::show();
89+
m_mainLayer->setVisible(false);
5490
m_noElasticity = false;
55-
m_mainLayer->setPosition({0, dir->getWinSize().height + 5});
56-
m_mainLayer->stopAllActions();
57-
m_mainLayer->runAction(CCEaseBounceOut::create(CCMoveTo::create(0.5, {0, 0})));
91+
m_rewardLayer->setPosition({0, dir->getWinSize().height + 5});
92+
m_rewardLayer->stopAllActions();
93+
m_rewardLayer->runAction(CCEaseBounceOut::create(CCMoveTo::create(0.5, {0, 0})));
5894
}

0 commit comments

Comments
 (0)