summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main_gui.cpp4
-rw-r--r--src/openttd.cpp2
-rw-r--r--src/sound.cpp3
-rw-r--r--src/viewport.cpp18
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
);