diff options
-rw-r--r-- | src/main_gui.cpp | 4 | ||||
-rw-r--r-- | src/openttd.cpp | 2 | ||||
-rw-r--r-- | src/sound.cpp | 3 | ||||
-rw-r--r-- | src/viewport.cpp | 18 |
4 files changed, 15 insertions, 12 deletions
diff --git a/src/main_gui.cpp b/src/main_gui.cpp index 5fc4b3f97..613ea7dce 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -2425,8 +2425,8 @@ static void MainWindowWndProc(Window *w, WindowEvent *e) _scrolling_viewport = false; } - WP(w, vp_d).scrollpos_x += e->we.scroll.delta.x << vp->zoom; - WP(w, vp_d).scrollpos_y += e->we.scroll.delta.y << vp->zoom; + WP(w, vp_d).scrollpos_x += ScaleByZoom(e->we.scroll.delta.x, vp->zoom); + WP(w, vp_d).scrollpos_y += ScaleByZoom(e->we.scroll.delta.y, vp->zoom); } break; case WE_MOUSEWHEEL: diff --git a/src/openttd.cpp b/src/openttd.cpp index b4353612b..26119e9e3 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -505,6 +505,8 @@ int ttd_main(int argc, char *argv[]) LoadDriver(MUSIC_DRIVER, _ini_musicdriver); LoadDriver(VIDEO_DRIVER, _ini_videodriver); // load video last, to prevent an empty window while sound and music loads _savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING; + /* Initialize the zoom level of the screen to normal */ + _screen.zoom = ZOOM_LVL_NORMAL; /* restore saved music volume */ _music_driver->set_volume(msf.music_vol); diff --git a/src/sound.cpp b/src/sound.cpp index 2245e8c0e..fdc6c8451 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -152,7 +152,8 @@ static void StartSound(uint sound, int panning, uint volume) } -static const byte _vol_factor_by_zoom[ZOOM_LVL_END] = {255, 190, 134}; +static const byte _vol_factor_by_zoom[] = {255, 190, 134, 87, 49}; +assert_compile(lengthof(_vol_factor_by_zoom) == ZOOM_LVL_END); static const byte _sound_base_vol[] = { 128, 90, 128, 128, 128, 128, 128, 128, diff --git a/src/viewport.cpp b/src/viewport.cpp index 82a9ebb1b..68b9a947f 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -164,8 +164,8 @@ void AssignWindowViewport(Window *w, int x, int y, vp->zoom = zoom; - vp->virtual_width = width << zoom; - vp->virtual_height = height << zoom; + vp->virtual_width = ScaleByZoom(width, zoom); + vp->virtual_height = ScaleByZoom(height, zoom); if (follow_flags & 0x80000000) { const Vehicle *veh; @@ -1196,17 +1196,17 @@ static void ViewportDrawStrings(DrawPixelInfo *dpi, const StringSpriteToDraw *ss zoom = dp.zoom; dp.zoom = ZOOM_LVL_NORMAL; - dp.left >>= zoom; - dp.top >>= zoom; - dp.width >>= zoom; - dp.height >>= zoom; + dp.left = UnScaleByZoom(dp.left, zoom); + dp.top = UnScaleByZoom(dp.top, zoom); + dp.width = UnScaleByZoom(dp.width, zoom); + dp.height = UnScaleByZoom(dp.height, zoom); do { uint16 colour; if (ss->width != 0) { - int x = (ss->x >> zoom) - 1; - int y = (ss->y >> zoom) - 1; + int x = UnScaleByZoom(ss->x, zoom) - 1; + int y = UnScaleByZoom(ss->y, zoom) - 1; int bottom = y + 11; int w = ss->width; @@ -1239,7 +1239,7 @@ static void ViewportDrawStrings(DrawPixelInfo *dpi, const StringSpriteToDraw *ss colour = 16; } DrawString( - ss->x >> zoom, (ss->y >> zoom) - (ss->width & 0x8000 ? 2 : 0), + UnScaleByZoom(ss->x, zoom), UnScaleByZoom(ss->y, zoom) - (ss->width & 0x8000 ? 2 : 0), ss->string, colour ); |