mirror of https://github.com/OpenTTD/OpenTTD
Add: Implement 2D map scrolling under SDL2 (#13167)
Use a base multiplier to keep the existing option range (1-15). SDL2 >= 2.18 allows for considerably smoother scrolling, but basic support for earlier versions is included.pull/13172/head
parent
32dfb37b9d
commit
69ee8a8480
|
@ -404,13 +404,25 @@ bool VideoDriver_SDL_Base::PollEvent()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case SDL_MOUSEWHEEL:
|
case SDL_MOUSEWHEEL: {
|
||||||
if (ev.wheel.y > 0) {
|
if (ev.wheel.y > 0) {
|
||||||
_cursor.wheel--;
|
_cursor.wheel--;
|
||||||
} else if (ev.wheel.y < 0) {
|
} else if (ev.wheel.y < 0) {
|
||||||
_cursor.wheel++;
|
_cursor.wheel++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Handle 2D scrolling. */
|
||||||
|
const float SCROLL_BUILTIN_MULTIPLIER = 14.0f;
|
||||||
|
#if SDL_VERSION_ATLEAST(2, 18, 0)
|
||||||
|
_cursor.v_wheel -= ev.wheel.preciseY * SCROLL_BUILTIN_MULTIPLIER * _settings_client.gui.scrollwheel_multiplier;
|
||||||
|
_cursor.h_wheel += ev.wheel.preciseX * SCROLL_BUILTIN_MULTIPLIER * _settings_client.gui.scrollwheel_multiplier;
|
||||||
|
#else
|
||||||
|
_cursor.v_wheel -= static_cast<float>(ev.wheel.y * SCROLL_BUILTIN_MULTIPLIER * _settings_client.gui.scrollwheel_multiplier);
|
||||||
|
_cursor.h_wheel += static_cast<float>(ev.wheel.x * SCROLL_BUILTIN_MULTIPLIER * _settings_client.gui.scrollwheel_multiplier);
|
||||||
|
#endif
|
||||||
|
_cursor.wheel_moved = true;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
if (_rightclick_emulate && SDL_GetModState() & KMOD_CTRL) {
|
if (_rightclick_emulate && SDL_GetModState() & KMOD_CTRL) {
|
||||||
|
|
Loading…
Reference in New Issue