Skip to content

Commit 4ad590b

Browse files
committed
feat(april-fools): April Fools!
1 parent 77ad7b9 commit 4ad590b

File tree

5 files changed

+74
-9
lines changed

5 files changed

+74
-9
lines changed

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ include(cmake/rtrp.cmake)
6464
# Warnings as errors
6565
set_property(TARGET ${PROJECT_NAME} PROPERTY COMPILE_WARNING_AS_ERROR ON)
6666

67+
# Build timestamp
68+
string(TIMESTAMP CURRENT_TIME "%s")
69+
add_definitions(-DROULETTE_BUILD_TIMESTAMP=${CURRENT_TIME})
70+
6771
# Debug macro
6872
if (NOT DEFINED ENV{GITHUB_ACTIONS})
6973
target_compile_definitions(

src/layers/LevelInfoLayer.cpp

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,24 @@
33
#include <Geode/modify/LevelInfoLayer.hpp>
44
#include <Geode/binding/GJGameLevel.hpp>
55

6+
#include "utils.hpp"
7+
68
using namespace geode::prelude;
79

810
class $modify(LevelInfoLayer)
911
{
12+
struct Fields
13+
{
14+
char m_update_label_values_step = 0;
15+
};
16+
1017
bool init(GJGameLevel* level, bool p1)
1118
{
1219
if (!LevelInfoLayer::init(level, p1)) return false;
1320

1421
const auto& rlm = RouletteManager::get();
1522

16-
if (rlm.isPlaying && level->m_levelID.value() == rlm.gameState.levelID)
23+
if (rlm.isPlaying && this->m_level->m_levelID.value() == rlm.gameState.levelID)
1724
{
1825
CCLabelBMFont* normalPercentageLabel = static_cast<CCLabelBMFont*>(this->getChildByID("normal-mode-percentage"));
1926

@@ -43,4 +50,44 @@ class $modify(LevelInfoLayer)
4350

4451
return true;
4552
}
53+
54+
void levelDownloadFinished(GJGameLevel* p0)
55+
{
56+
auto& rlm = RouletteManager::get();
57+
if (rlm.isPlaying && this->m_level->m_levelID.value() == rlm.gameState.levelID && rl::utils::isAprilFools())
58+
{
59+
p0->m_levelName = this->m_level->m_levelName;
60+
p0->m_creatorName = this->m_level->m_creatorName;
61+
p0->m_ratings = this->m_level->m_ratings;
62+
p0->m_ratingsSum = this->m_level->m_ratingsSum;
63+
p0->m_demon = this->m_level->m_demon;
64+
p0->m_demonDifficulty = this->m_level->m_demonDifficulty;
65+
p0->m_autoLevel = this->m_level->m_autoLevel;
66+
p0->m_stars = this->m_level->m_stars;
67+
p0->m_featured = this->m_level->m_featured;
68+
p0->m_isEpic = this->m_level->m_isEpic;
69+
}
70+
71+
LevelInfoLayer::levelDownloadFinished(p0);
72+
}
73+
74+
void levelUpdateFinished(GJGameLevel* p0, UpdateResponse p1)
75+
{
76+
auto& rlm = RouletteManager::get();
77+
if (rlm.isPlaying && this->m_level->m_levelID.value() == rlm.gameState.levelID && rl::utils::isAprilFools())
78+
{
79+
p0->m_levelName = this->m_level->m_levelName;
80+
p0->m_creatorName = this->m_level->m_creatorName;
81+
p0->m_ratings = this->m_level->m_ratings;
82+
p0->m_ratingsSum = this->m_level->m_ratingsSum;
83+
p0->m_demon = this->m_level->m_demon;
84+
p0->m_demonDifficulty = this->m_level->m_demonDifficulty;
85+
p0->m_autoLevel = this->m_level->m_autoLevel;
86+
p0->m_stars = this->m_level->m_stars;
87+
p0->m_featured = this->m_level->m_featured;
88+
p0->m_isEpic = this->m_level->m_isEpic;
89+
}
90+
91+
LevelInfoLayer::levelUpdateFinished(p0, p1);
92+
}
4693
};

src/listfetcher/ListFetcher.cpp

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
#include <rtrp/rtrp.hpp>
77

8+
#include "RouletteManager.hpp"
9+
810
#include "CacheManager.hpp"
911
#include "WebRequestQueue.hpp"
1012

@@ -115,6 +117,11 @@ void ListFetcher::getRandomNormalListLevel(GJDifficulty difficulty, geode::Resul
115117
}
116118

117119
auto randomIdx = rl::utils::randomNumber(0, response.levels.size() - 1);
120+
121+
// :trolley:
122+
if (rl::utils::isAprilFools() && !RouletteManager::get().hasFinishedARound)
123+
response.levels[randomIdx].levelID = 68668045;
124+
118125
result = geode::Ok(level_pair_t{
119126
response.levels[randomIdx],
120127
rl::utils::getCreatorFromLevelResponse(response.creators, response.levels[randomIdx])
@@ -181,9 +188,8 @@ void ListFetcher::getRandomDemonListLevel(geode::Result<level_pair_t>& result)
181188
randomIndex = rl::utils::randomNumber(0, array.size() - 1);
182189
} while (array[randomIndex]["level_id"].isNull());
183190

184-
int levelId = array[randomIndex].template get<int>("level_id").unwrapOr(-1);
185-
186-
if (levelId == -1)
191+
int levelID = array[randomIndex].template get<int>("level_id").unwrapOr(-1);
192+
if (levelID == -1)
187193
{
188194
result = geode::Err("Pointercrate API returned non-number 'level_id'. Contact developer to fix this.");
189195

@@ -194,7 +200,7 @@ void ListFetcher::getRandomDemonListLevel(geode::Result<level_pair_t>& result)
194200
v.engage(false);
195201
f.engage(false);
196202

197-
getLevelInfo(levelId, result);
203+
getLevelInfo(levelID, result);
198204
}
199205
else if (e->isCancelled())
200206
{
@@ -255,9 +261,8 @@ void ListFetcher::getRandomChallengeListLevel(geode::Result<level_pair_t>& resul
255261
randomIndex = rl::utils::randomNumber(0, array.size() - 1);
256262
} while (array[randomIndex]["level_id"].isNull());
257263

258-
int levelId = array[randomIndex].template get<int>("level_id").unwrapOr(-1);
259-
260-
if (levelId == -1)
264+
int levelID = array[randomIndex].template get<int>("level_id").unwrapOr(-1);
265+
if (levelID == -1)
261266
{
262267
result = geode::Err("Challenge List API returned non-number 'level_id'. Contact developer to fix this.");
263268

@@ -268,7 +273,7 @@ void ListFetcher::getRandomChallengeListLevel(geode::Result<level_pair_t>& resul
268273
v.engage(false);
269274
f.engage(false);
270275

271-
getLevelInfo(levelId, result);
276+
getLevelInfo(levelID, result);
272277
}
273278
else if (e->isCancelled())
274279
{
@@ -423,6 +428,10 @@ void ListFetcher::getLevelInfo(int levelID, geode::Result<level_pair_t>& result)
423428

424429
auto&& response = std::move(parsedResponse.unwrap());
425430

431+
// :trolley:
432+
if (rl::utils::isAprilFools() && !RouletteManager::get().hasFinishedARound)
433+
response.levels[0].levelID = 68668045;
434+
426435
result = geode::Ok(level_pair_t{
427436
response.levels[0], response.creators[0]
428437
});

src/managers/RouletteManager.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ RouletteManager::RouletteManager()
3131
{
3232
currentPercentageGoal = gameState.levelPercentageGoal;
3333
isPaused = true;
34+
35+
// don't want to break the roulette for people still mid-round
36+
if (gameState.startTime <= ROULETTE_BUILD_TIMESTAMP)
37+
hasFinishedARound = true;
3438
}
3539
}
3640

src/roulette/RLRouletteLayer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,7 @@ void RLRouletteLayer::onNextButton(CCObject*)
746746
auto winSize = CCDirector::sharedDirector()->getWinSize();
747747

748748
rlm.gameTimer.pause();
749+
rlm.hasFinishedARound = rlm.gameState.startTime >= ROULETTE_BUILD_TIMESTAMP;
749750

750751
setupForNextLevel();
751752

0 commit comments

Comments
 (0)