Refactor window_scroll_to_viewport to use rct_window::ScrollToViewport

This commit is contained in:
Matt 2019-06-15 17:12:14 +02:00
parent b046d45c01
commit 2053ecb688
No known key found for this signature in database
GPG Key ID: 6D4C24A61C93E208
8 changed files with 35 additions and 37 deletions

View File

@ -719,7 +719,7 @@ void window_guest_overview_mouse_up(rct_window* w, rct_widgetindex widgetIndex)
break;
}
case WIDX_LOCATE:
window_scroll_to_viewport(w);
w->ScrollToViewport();
break;
case WIDX_TRACK:
{

View File

@ -655,7 +655,7 @@ static void window_park_entrance_mouseup(rct_window* w, rct_widgetindex widgetIn
context_open_window(WC_LAND_RIGHTS);
break;
case WIDX_LOCATE:
window_scroll_to_viewport(w);
w->ScrollToViewport();
break;
case WIDX_RENAME:
{

View File

@ -2047,7 +2047,7 @@ static void window_ride_main_mouseup(rct_window* w, rct_widgetindex widgetIndex)
window_ride_rename(w);
break;
case WIDX_LOCATE:
window_scroll_to_viewport(w);
w->ScrollToViewport();
break;
case WIDX_DEMOLISH:
context_open_detail_window(WD_DEMOLISH_RIDE, w->number);

View File

@ -459,7 +459,7 @@ void window_staff_overview_mouseup(rct_window* w, rct_widgetindex widgetIndex)
window_staff_set_page(w, widgetIndex - WIDX_TAB_1);
break;
case WIDX_LOCATE:
window_scroll_to_viewport(w);
w->ScrollToViewport();
break;
case WIDX_PICKUP:
{

View File

@ -804,38 +804,6 @@ rct_window* window_get_main()
return nullptr;
}
/**
* Based on
* rct2: 0x696ee9, 0x66842F, 0x006AF3B3
*/
void window_scroll_to_viewport(rct_window* w)
{
int32_t x, y, z;
rct_window* mainWindow;
assert(w != nullptr);
// In original checked to make sure x and y were not -1 as well.
if (w->viewport == nullptr || w->viewport_focus_coordinates.y == -1)
return;
if (w->viewport_focus_sprite.type & VIEWPORT_FOCUS_TYPE_SPRITE)
{
rct_sprite* sprite = get_sprite(w->viewport_focus_sprite.sprite_id);
x = sprite->generic.x;
y = sprite->generic.y;
z = sprite->generic.z;
}
else
{
x = w->viewport_focus_coordinates.x;
y = w->viewport_focus_coordinates.y & VIEWPORT_FOCUS_Y_MASK;
z = w->viewport_focus_coordinates.z;
}
mainWindow = window_get_main();
if (mainWindow != nullptr)
window_scroll_to_location(mainWindow, x, y, z);
}
/**
*
* rct2: 0x006E7C9C

View File

@ -631,7 +631,6 @@ void window_push_others_below(rct_window* w1);
rct_window* window_get_main();
void window_scroll_to_viewport(rct_window* w);
void window_scroll_to_location(rct_window* w, int32_t x, int32_t y, int32_t z);
void window_rotate_camera(rct_window* w, int32_t direction);
void window_viewport_get_map_coords_by_cursor(

View File

@ -1,7 +1,37 @@
#include "Window_internal.h"
#include "../world/Sprite.h"
void rct_window::SetLocation(int32_t newX, int32_t newY, int32_t newZ)
{
window_scroll_to_location(this, newX, newY, newZ);
flags &= ~WF_SCROLLING_TO_LOCATION;
}
void rct_window::ScrollToViewport()
{
int32_t newX, newY, newZ;
rct_window* mainWindow;
// In original checked to make sure x and y were not -1 as well.
if (viewport == nullptr || viewport_focus_coordinates.y == -1)
return;
if (viewport_focus_sprite.type & VIEWPORT_FOCUS_TYPE_SPRITE)
{
rct_sprite* sprite = get_sprite(viewport_focus_sprite.sprite_id);
newX = sprite->generic.x;
newY = sprite->generic.y;
newZ = sprite->generic.z;
}
else
{
newX = viewport_focus_coordinates.x;
newY = viewport_focus_coordinates.y & VIEWPORT_FOCUS_Y_MASK;
newZ = viewport_focus_coordinates.z;
}
mainWindow = window_get_main();
if (mainWindow != nullptr)
window_scroll_to_location(mainWindow, newX, newY, newZ);
}

View File

@ -103,6 +103,7 @@ struct rct_window
uint16_t viewport_smart_follow_sprite; // Smart following of sprites. Handles setting viewport target sprite etc
void SetLocation(int32_t x, int32_t y, int32_t z);
void ScrollToViewport();
};
// rct2: 0x01420078