mirror of https://github.com/OpenRCT2/OpenRCT2.git
Disable closer zoom levels for software rendering
This commit is contained in:
parent
609cde2304
commit
a1cd02c61c
|
@ -535,6 +535,8 @@ namespace OpenRCT2
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
window_check_all_valid_zoom();
|
||||
}
|
||||
|
||||
void DisposeDrawingEngine() final override
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "../core/Guard.hpp"
|
||||
#include "../core/JobPool.hpp"
|
||||
#include "../drawing/Drawing.h"
|
||||
#include "../drawing/IDrawingEngine.h"
|
||||
#include "../paint/Paint.h"
|
||||
#include "../peep/Staff.h"
|
||||
#include "../ride/Ride.h"
|
||||
|
@ -1926,3 +1927,15 @@ void viewport_set_saved_view()
|
|||
gSavedViewRotation = get_current_rotation();
|
||||
}
|
||||
}
|
||||
|
||||
ZoomLevel ZoomLevel::min()
|
||||
{
|
||||
if (drawing_engine_get_type() == DRAWING_ENGINE_OPENGL)
|
||||
{
|
||||
return -2;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1001,6 +1001,19 @@ void window_viewport_centre_tile_around_cursor(rct_window* w, int16_t map_x, int
|
|||
centreLoc->y + rebased_y + (offset_y / w->viewport->zoom) };
|
||||
}
|
||||
|
||||
/**
|
||||
* For all windows with viewports, ensure they do not have a zoom level less than the minimum.
|
||||
*/
|
||||
void window_check_all_valid_zoom()
|
||||
{
|
||||
window_visit_each([](rct_window* w) {
|
||||
if (w->viewport != nullptr && w->viewport->zoom < ZoomLevel::min())
|
||||
{
|
||||
window_zoom_set(w, ZoomLevel::min(), false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void window_zoom_set(rct_window* w, ZoomLevel zoomLevel, bool atCursor)
|
||||
{
|
||||
rct_viewport* v = w->viewport;
|
||||
|
|
|
@ -724,6 +724,7 @@ void window_rotate_camera(rct_window* w, int32_t direction);
|
|||
void window_viewport_get_map_coords_by_cursor(
|
||||
rct_window* w, int16_t* map_x, int16_t* map_y, int16_t* offset_x, int16_t* offset_y);
|
||||
void window_viewport_centre_tile_around_cursor(rct_window* w, int16_t map_x, int16_t map_y, int16_t offset_x, int16_t offset_y);
|
||||
void window_check_all_valid_zoom();
|
||||
void window_zoom_set(rct_window* w, ZoomLevel zoomLevel, bool atCursor);
|
||||
void window_zoom_in(rct_window* w, bool atCursor);
|
||||
void window_zoom_out(rct_window* w, bool atCursor);
|
||||
|
|
|
@ -136,10 +136,7 @@ public:
|
|||
return lhs >> rhs._level;
|
||||
}
|
||||
|
||||
static constexpr ZoomLevel min()
|
||||
{
|
||||
return -2;
|
||||
}
|
||||
static ZoomLevel min();
|
||||
|
||||
static constexpr ZoomLevel max()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue