mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-20 13:33:02 +01:00
Add SetMainView to WindowManager
This commit is contained in:
@@ -18,7 +18,9 @@
|
||||
#include <openrct2-ui/windows/Window.h>
|
||||
#include <openrct2/core/Console.hpp>
|
||||
#include <openrct2/config/Config.h>
|
||||
#include <openrct2/interface/Viewport.h>
|
||||
#include <openrct2/Input.h>
|
||||
#include <openrct2/world/Sprite.h>
|
||||
#include "input/Input.h"
|
||||
#include "input/KeyboardShortcuts.h"
|
||||
#include "WindowManager.h"
|
||||
@@ -439,6 +441,33 @@ public:
|
||||
keyboard_shortcuts_format_string(buffer, sizeof(buffer), shortcut);
|
||||
return std::string(buffer);
|
||||
}
|
||||
|
||||
void SetMainView(sint32 x, sint32 y, sint32 zoom, sint32 rotation) override
|
||||
{
|
||||
auto mainWindow = window_get_main();
|
||||
if (mainWindow != nullptr)
|
||||
{
|
||||
auto viewport = window_get_viewport(mainWindow);
|
||||
mainWindow->viewport_target_sprite = SPRITE_INDEX_NULL;
|
||||
mainWindow->saved_view_x = x;
|
||||
mainWindow->saved_view_y = y;
|
||||
viewport->zoom = zoom;
|
||||
gCurrentRotation = rotation;
|
||||
auto zoomDifference = zoom - viewport->zoom;
|
||||
if (zoomDifference != 0)
|
||||
{
|
||||
viewport->view_width <<= zoomDifference;
|
||||
viewport->view_height <<= zoomDifference;
|
||||
}
|
||||
mainWindow->saved_view_x -= viewport->view_width >> 1;
|
||||
mainWindow->saved_view_y -= viewport->view_height >> 1;
|
||||
|
||||
// Make sure the viewport has correct coordinates set.
|
||||
viewport_update_position(mainWindow);
|
||||
|
||||
window_invalidate(mainWindow);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
IWindowManager * OpenRCT2::Ui::CreateWindowManager()
|
||||
|
||||
Reference in New Issue
Block a user