Skip to content

Commit 96a153e

Browse files
committed
fix leaking rng for floats
1 parent 72dc50c commit 96a153e

10 files changed

Lines changed: 32 additions & 26 deletions

File tree

src/Utils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
// Additional utility methods for Horrible Menu
3131
namespace horrible {
3232
// Pointer to this Geode mod
33-
inline Mod* thisMod = geode::Mod::get();
33+
inline static Mod* thisMod = geode::Mod::get();
3434

3535
/**
3636
* Convert a chance setting number to a cooldown percentage decimal

src/hooks/obstructive/BlackScreen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class $modify(BlackScreenPlayLayer, PlayLayer) {
4848
};
4949

5050
void removeBlackScreen(CCNode* sender) {
51-
if (sender) sender->removeFromParent();
51+
cue::resetNode(sender);
5252

5353
float delay = randng::get(3.f); // random delay between 0 and 3 seconds
5454
log::debug("Black screen will appear again after {} seconds", delay);

src/hooks/obstructive/Confetti.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ using namespace horrible::prelude;
1010
#define THIS_ID "confetti"
1111

1212
static auto const o = Option::create(THIS_ID)
13-
->setName("Confetti Explosion")
13+
->setName("Confetti Explosions")
1414
->setDescription("While playing a level, the screen will sometimes cause an explosion of random textures.\n<cl>created by Cheeseworks</c>")
1515
->setCategory(category::obstructive)
1616
->setSillyTier(SillyTier::Medium)
@@ -56,14 +56,14 @@ class $modify(ConfettiPlayLayer, PlayLayer) {
5656
sfx::play(sfx::file::bad);
5757
shakeCamera(1.25f, 2.5f, 0.00875f);
5858

59-
for (int i = 0; i < randng::get(125, 75); i++) createConfetti();
59+
for (int i = 0; i < randng::get(150, 75); i++) createConfetti();
6060

6161
scheduleOnce(schedule_selector(ConfettiPlayLayer::nextConfetti), randng::get(0.125f));
6262
};
6363

6464
void createConfetti() {
6565
auto conf = CCSprite::createWithSpriteFrameName(s_confettis[randng::get(s_confettis.size() - 1)]);
66-
conf->setScale(0.875f * randng::pc());
66+
conf->setScale(0.5f * randng::pc());
6767

6868
auto useY = randng::get(1) > 0;
6969
auto const endPos = ccp(
@@ -82,6 +82,6 @@ class $modify(ConfettiPlayLayer, PlayLayer) {
8282
};
8383

8484
void cleanConfetti(CCNode* sender) {
85-
if (sender) sender->removeFromParent();
85+
cue::resetNode(sender);
8686
};
8787
};

src/hooks/obstructive/Earthquake.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class $modify(EarthquakePlayLayer, PlayLayer) {
2525
};
2626

2727
void nextQuake(float) {
28-
auto delay = randng::get(3.f, 1.f);
28+
auto delay = randng::get(5.f, 1.f);
2929
log::trace("scheduling quake in {}s", delay);
3030

3131
scheduleOnce(schedule_selector(EarthquakePlayLayer::quake), delay);
@@ -35,7 +35,7 @@ class $modify(EarthquakePlayLayer, PlayLayer) {
3535
// shake the camera randomly based on intensity
3636
auto rnd = randng::fast();
3737

38-
shakeCamera(randng::get(5.f, 1.f), randng::get(10.f, 1.f), 0.00875F);
38+
shakeCamera(randng::get(5.f, 1.f), randng::get(10.f, 1.f), 0.00125f);
3939

4040
scheduleOnce(schedule_selector(EarthquakePlayLayer::nextQuake), 0.125f);
4141
};

src/hooks/obstructive/Friends.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,32 +37,34 @@ class $modify(FriendsPlayLayer, PlayLayer) {
3737
void setupHasCompleted() {
3838
PlayLayer::setupHasCompleted();
3939

40-
auto delay = randng::get(3.f);
40+
auto delay = randng::get(1.25f);
4141
log::trace("Friend will visit after {} seconds", delay);
4242

4343
scheduleOnce(schedule_selector(FriendsPlayLayer::showAFriend), delay);
4444
};
4545

4646
void showAFriend(float) {
47-
auto rnd = randng::fast();
47+
auto const uiSize = m_uiLayer->getScaledContentSize();
4848

49-
float xA = -125.f; // starting x pos
50-
float xB = getScaledContentWidth() + 125.f; // ending x pos
49+
auto xA = -125.f; // starting x pos
50+
auto xB = uiSize.width + 125.f; // ending x pos
5151

52-
if ((static_cast<float>(rnd) / 2) <= 50.0) {
52+
if ((static_cast<float>(randng::fast()) / 2.f) <= 50.f) {
5353
xA = xB;
5454
xB = -125.f;
5555
}; // swap sides
5656

5757
auto rA = randng::pc();
5858
auto rB = randng::pc();
5959

60-
float yA = getScaledContentHeight() * rA; // starting height pos
61-
float yB = getScaledContentHeight() * rB; // ending height pos
60+
log::trace("friend starts at height percent {} and ends at {}", rA, rB);
61+
62+
auto yA = uiSize.height * rA; // starting height pos
63+
auto yB = uiSize.height * rB; // ending height pos
6264

6365
auto friendSpr = CCSprite::createWithSpriteFrameName(s_friends[randng::get(s_friends.size() - 1)]);
6466
friendSpr->setPosition({xA, yA});
65-
friendSpr->setScale(1.25 * (rB + rA));
67+
friendSpr->setScale(0.875f * (rB + rA));
6668
friendSpr->setRotation(180.f * (yA * yB)); // random rotation
6769

6870
auto dur = 12.5f * rA;
@@ -80,11 +82,11 @@ class $modify(FriendsPlayLayer, PlayLayer) {
8082
};
8183

8284
void cleanupFriend(CCNode* sender) {
83-
if (sender) sender->removeFromParent();
85+
cue::resetNode(sender);
8486
};
8587

8688
void scheduleNextFriend() {
87-
auto delay = randng::get(5.f);
89+
auto delay = randng::get(2.5f);
8890
log::trace("Friend will visit again after {} seconds", delay);
8991

9092
scheduleOnce(schedule_selector(FriendsPlayLayer::showAFriend), delay);

src/hooks/obstructive/Motivation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ class $modify(MotivationPlayLayer, PlayLayer) {
147147
};
148148

149149
void scheduleNextMessage(CCNode* sender) {
150-
if (sender) sender->removeFromParent();
150+
cue::resetNode(sender);
151151

152152
auto delay = randng::get(15.f, 5.f);
153153
log::debug("Motivational message will show again after {} seconds", delay);

src/hooks/obstructive/TOS.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,14 @@ class $modify(TOSGJBaseGameLayer, GJBaseGameLayer) {
4242

4343
if (!accepted) {
4444
Notification::create("You declined our terms and conditions!", NotificationIcon::Error)->show();
45-
46-
sfx::play(sfx::file::bad);
4745
if (auto pl = PlayLayer::get()) pl->resetLevelFromStart();
48-
} else {
49-
sfx::play(sfx::file::good);
5046
};
5147
})) {
5248
popup->show();
5349
f->currentTos = popup;
5450

51+
cursor::show();
52+
5553
updateTimeWarp(0.125f);
5654
};
5755
};

src/util/Randng.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ namespace horrible {
1616
typename T = int,
1717
typename = std::enable_if_t<std::is_arithmetic_v<T>>>
1818
inline T get(T max, T min = static_cast<T>(0)) {
19-
return geode::utils::random::generate<T>(min, max + static_cast<T>(1));
19+
if constexpr (std::is_integral_v<T>) {
20+
return geode::utils::random::generate<T>(min, max + static_cast<T>(1));
21+
} else {
22+
return geode::utils::random::generate<T>(min, max);
23+
};
2024
};
2125

2226
/**

src/util/ui/src/MathQuiz.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ class MathQuiz::Impl final {
1313
public:
1414
Richard* richard = nullptr;
1515

16-
int8_t numFirst = 0;
17-
int8_t numSecond = 0;
16+
uint8_t numFirst = 0;
17+
uint8_t numSecond = 0;
1818

1919
MathOperation operation = MathOperation::Addition;
2020

src/util/ui/src/TermsAndConditions.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ bool TermsAndConditions::init(Callback&& cb) {
5454
"bigFont.fnt",
5555
themes::getButtonSquareSprite(theme)),
5656
[this, cb](auto) {
57+
sfx::play(sfx::file::good);
5758
if (cb) cb(true);
5859
removeFromParent();
5960
});
@@ -65,6 +66,7 @@ bool TermsAndConditions::init(Callback&& cb) {
6566
"goldFont.fnt",
6667
themes::getButtonSquareSprite(theme)),
6768
[this, cb](auto) {
69+
sfx::play(sfx::file::bad);
6870
if (cb) cb(false);
6971
removeFromParent();
7072
});

0 commit comments

Comments
 (0)