Skip to content

Commit 6508378

Browse files
committed
Added scroll sensitivity option
1 parent 80d79ac commit 6508378

File tree

4 files changed

+31
-7
lines changed

4 files changed

+31
-7
lines changed

mod.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@
3636
"utility"
3737
],
3838
"settings": {
39+
"zoom-sensitivity": {
40+
"name": "Zoom Speed",
41+
"description": "The zoom sensitivity. Higher values zoom in faster.",
42+
"type": "float",
43+
"default": 1,
44+
"min": 0.1,
45+
"max": 10,
46+
"control": {
47+
"slider": true
48+
},
49+
"platforms": ["win"]
50+
},
3951
"auto-hide-menu": {
4052
"name": "Auto Hide Menu",
4153
"description": "Automatically hides the menu when you zoom in.",

src/settings.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ void SettingsManager::init() {
3131
altDisablesZoom = enable;
3232
});
3333

34+
zoomSensitivity = Mod::get()->getSettingValue<float>("zoom-sensitivity");
35+
listenForSettingChanges("zoom-sensitivity", [&](float sensitivity) {
36+
zoomSensitivity = sensitivity;
37+
});
38+
3439
BindManager::get()->registerBindable({
3540
"toggle_menu"_spr,
3641
"Toggle Pause Menu",

src/settings.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ class SettingsManager {
99
bool autoHideMenu;
1010
bool autoShowMenu;
1111
bool altDisablesZoom;
12+
float zoomSensitivity;
1213
#endif
1314
};

src/windows.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,9 @@ void WindowsZoomManager::onPause() {
130130

131131
void WindowsZoomManager::onScroll(float y, float x) {
132132
if (!isPaused) return;
133-
if (SettingsManager::get()->autoHideMenu) setPauseMenuVisible(false);
133+
134+
CCNode* playLayer = CCScene::get()->getChildByID("PlayLayer");
135+
if (!playLayer) return;
134136

135137
if (SettingsManager::get()->altDisablesZoom) {
136138
auto kb = CCKeyboardDispatcher::get();
@@ -139,15 +141,23 @@ void WindowsZoomManager::onScroll(float y, float x) {
139141
}
140142
}
141143

142-
float zoomDelta = 0.1f;
144+
float zoomDelta = SettingsManager::get()->zoomSensitivity * 0.1f;
143145

144146
if (Loader::get()->isModLoaded("prevter.smooth-scroll")) {
145-
zoom(-y * 0.01f);
147+
zoom(-y * zoomDelta * 0.1f);
146148
} else if (y > 0) {
147149
zoom(-zoomDelta);
148150
} else {
149151
zoom(zoomDelta);
150152
}
153+
154+
if (y > 0) {
155+
if (SettingsManager::get()->autoShowMenu && playLayer->getScale() <= 1.01f) {
156+
setPauseMenuVisible(true);
157+
}
158+
} else {
159+
if (SettingsManager::get()->autoHideMenu) setPauseMenuVisible(false);
160+
}
151161
}
152162

153163
void WindowsZoomManager::onScreenModified() {
@@ -156,10 +166,6 @@ void WindowsZoomManager::onScreenModified() {
156166

157167
clampPlayLayerPos(playLayer);
158168
if (!isPaused) return;
159-
160-
if (SettingsManager::get()->autoShowMenu && playLayer->getScale() <= 1.05f) {
161-
setPauseMenuVisible(true);
162-
}
163169
}
164170

165171
class $modify(PauseLayer) {

0 commit comments

Comments
 (0)