1
0
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:
Ted John
2018-06-02 00:07:14 +01:00
parent 05a671a319
commit 85dc161c5a
5 changed files with 43 additions and 55 deletions

View File

@@ -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()