Make rct_window use ScreenCoordsXY

This commit is contained in:
Tulio Leao 2020-03-01 16:32:35 -03:00
parent 2cfac98342
commit 724a6d4dcf
78 changed files with 1340 additions and 1212 deletions

View File

@ -809,7 +809,7 @@ private:
}
w = it->get();
if (right <= w->x || bottom <= w->y)
if (right <= w->windowPos.x || bottom <= w->windowPos.y)
{
continue;
}
@ -819,14 +819,14 @@ private:
continue;
}
if (left >= w->x)
if (left >= w->windowPos.x)
{
break;
}
DrawRainWindow(rainDrawer, original_w, left, w->x, top, bottom, drawFunc);
DrawRainWindow(rainDrawer, original_w, left, w->windowPos.x, top, bottom, drawFunc);
left = w->x;
left = w->windowPos.x;
DrawRainWindow(rainDrawer, original_w, left, right, top, bottom, drawFunc);
return;
}
@ -841,11 +841,11 @@ private:
return;
}
if (top < w->y)
if (top < w->windowPos.y)
{
DrawRainWindow(rainDrawer, original_w, left, right, top, w->y, drawFunc);
DrawRainWindow(rainDrawer, original_w, left, right, top, w->windowPos.y, drawFunc);
top = w->y;
top = w->windowPos.y;
DrawRainWindow(rainDrawer, original_w, left, right, top, bottom, drawFunc);
return;
}

View File

@ -497,8 +497,7 @@ public:
auto zoomDifference = zoom - viewport->zoom;
mainWindow->viewport_target_sprite = SPRITE_INDEX_NULL;
mainWindow->saved_view_x = viewPos.x;
mainWindow->saved_view_y = viewPos.y;
mainWindow->savedViewPos = viewPos;
viewport->zoom = zoom;
gCurrentRotation = rotation;
@ -507,8 +506,8 @@ public:
viewport->view_width <<= zoomDifference;
viewport->view_height <<= zoomDifference;
}
mainWindow->saved_view_x -= viewport->view_width >> 1;
mainWindow->saved_view_y -= viewport->view_height >> 1;
mainWindow->savedViewPos.x -= viewport->view_width >> 1;
mainWindow->savedViewPos.y -= viewport->view_height >> 1;
// Make sure the viewport has correct coordinates set.
viewport_update_position(mainWindow);

View File

@ -447,7 +447,7 @@ static void game_handle_input_mouse(const ScreenCoordsXY& screenCoords, int32_t
void input_window_position_begin(rct_window* w, rct_widgetindex widgetIndex, const ScreenCoordsXY& screenCoords)
{
_inputState = INPUT_STATE_POSITIONING_WINDOW;
gInputDragLast = screenCoords - ScreenCoordsXY{ w->x, w->y };
gInputDragLast = screenCoords - w->windowPos;
_dragWidget.window_classification = w->classification;
_dragWidget.window_number = w->number;
_dragWidget.widget_index = widgetIndex;
@ -559,13 +559,11 @@ static void input_viewport_drag_continue()
differentialCoords.y *= 1 << (viewport->zoom + 1);
if (gConfigGeneral.invert_viewport_drag)
{
w->saved_view_x -= differentialCoords.x;
w->saved_view_y -= differentialCoords.y;
w->savedViewPos -= differentialCoords;
}
else
{
w->saved_view_x += differentialCoords.x;
w->saved_view_y += differentialCoords.y;
w->savedViewPos += differentialCoords;
}
}
}
@ -1026,7 +1024,8 @@ static void input_widget_left(const ScreenCoordsXY& screenCoords, rct_window* w,
{
case WWT_FRAME:
case WWT_RESIZE:
if (window_can_resize(w) && (screenCoords.x >= w->x + w->width - 19 && screenCoords.y >= w->y + w->height - 19))
if (window_can_resize(w)
&& (screenCoords.x >= w->windowPos.x + w->width - 19 && screenCoords.y >= w->windowPos.y + w->height - 19))
input_window_resize_begin(w, widgetIndex, screenCoords);
break;
case WWT_VIEWPORT:
@ -1053,7 +1052,7 @@ static void input_widget_left(const ScreenCoordsXY& screenCoords, rct_window* w,
default:
if (widget_is_enabled(w, widgetIndex) && !widget_is_disabled(w, widgetIndex))
{
audio_play_sound(SoundId::Click1, 0, w->x + ((widget->left + widget->right) / 2));
audio_play_sound(SoundId::Click1, 0, w->windowPos.x + ((widget->left + widget->right) / 2));
// Set new cursor down widget
gPressedWidget.window_classification = windowClass;
@ -1131,10 +1130,10 @@ void process_mouse_over(const ScreenCoordsXY& screenCoords)
if (window->min_width == window->max_width && window->min_height == window->max_height)
break;
if (screenCoords.x < window->x + window->width - 0x13)
if (screenCoords.x < window->windowPos.x + window->width - 0x13)
break;
if (screenCoords.y < window->y + window->height - 0x13)
if (screenCoords.y < window->windowPos.y + window->height - 0x13)
break;
cursorId = CURSOR_DIAGONAL_ARROWS;
@ -1334,7 +1333,7 @@ void input_state_widget_pressed(
break;
{
int32_t mid_point_x = (widget->left + widget->right) / 2 + w->x;
int32_t mid_point_x = (widget->left + widget->right) / 2 + w->windowPos.x;
audio_play_sound(SoundId::Click2, 0, mid_point_x);
}
if (cursor_w_class != w->classification || cursor_w_number != w->number || widgetIndex != cursor_widgetIndex)
@ -1599,9 +1598,9 @@ void input_scroll_viewport(const ScreenCoordsXY& scrollScreenCoords)
{
// Speed up scrolling horizontally when at the edge of the map
// so that the speed is consistent with vertical edge scrolling.
int32_t x = mainWindow->saved_view_x + viewport->view_width / 2 + dx;
int32_t y = mainWindow->saved_view_y + viewport->view_height / 2;
int32_t y_dy = mainWindow->saved_view_y + viewport->view_height / 2 + dy;
int32_t x = mainWindow->savedViewPos.x + viewport->view_width / 2 + dx;
int32_t y = mainWindow->savedViewPos.y + viewport->view_height / 2;
int32_t y_dy = mainWindow->savedViewPos.y + viewport->view_height / 2 + dy;
auto mapCoord = viewport_coord_to_map_coord(x, y, 0);
auto mapCoord_dy = viewport_coord_to_map_coord(x, y_dy, 0);
@ -1635,12 +1634,12 @@ void input_scroll_viewport(const ScreenCoordsXY& scrollScreenCoords)
dx *= 2;
}
mainWindow->saved_view_x += dx;
mainWindow->savedViewPos.x += dx;
_inputFlags |= INPUT_FLAG_VIEWPORT_SCROLLING;
}
if (scrollScreenCoords.y != 0)
{
mainWindow->saved_view_y += dy;
mainWindow->savedViewPos.y += dy;
_inputFlags |= INPUT_FLAG_VIEWPORT_SCROLLING;
}
}

View File

@ -83,8 +83,8 @@ void land_tool_show_surface_style_dropdown(rct_window* w, rct_widget* widget, ui
auto surfaceCount = itemIndex;
window_dropdown_show_image(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top, w->colours[2], 0, surfaceCount, 47, 36,
gAppropriateImageDropdownItemsPerRow[surfaceCount]);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top, w->colours[2], 0,
surfaceCount, 47, 36, gAppropriateImageDropdownItemsPerRow[surfaceCount]);
gDropdownDefaultIndex = defaultIndex;
}
@ -112,8 +112,8 @@ void land_tool_show_edge_style_dropdown(rct_window* w, rct_widget* widget, uint8
auto edgeCount = itemIndex;
window_dropdown_show_image(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top, w->colours[2], 0, edgeCount, 47, 36,
gAppropriateImageDropdownItemsPerRow[edgeCount]);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top, w->colours[2], 0, edgeCount,
47, 36, gAppropriateImageDropdownItemsPerRow[edgeCount]);
gDropdownDefaultIndex = defaultIndex;
}

View File

@ -116,10 +116,10 @@ static void widget_frame_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgeti
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
//
uint8_t press = ((w->flags & WF_10) ? INSET_RECT_FLAG_FILL_MID_LIGHT : 0);
@ -137,8 +137,8 @@ static void widget_frame_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgeti
return;
// Draw the resize sprite at the bottom right corner
l = w->x + widget->right - 18;
t = w->y + widget->bottom - 18;
l = w->windowPos.x + widget->right - 18;
t = w->windowPos.y + widget->bottom - 18;
gfx_draw_sprite(dpi, SPR_RESIZE | IMAGE_TYPE_REMAP | ((colour & 0x7F) << 19), l, t, 0);
}
@ -152,10 +152,10 @@ static void widget_resize_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widget
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
// Get the colour
uint8_t colour = w->colours[widget->colour];
@ -170,8 +170,8 @@ static void widget_resize_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widget
return;
// Draw the resize sprite at the bottom right corner
l = w->x + widget->right - 18;
t = w->y + widget->bottom - 18;
l = w->windowPos.x + widget->right - 18;
t = w->windowPos.y + widget->bottom - 18;
gfx_draw_sprite(dpi, SPR_RESIZE | IMAGE_TYPE_REMAP | ((colour & 0x7F) << 19), l, t, 0);
}
@ -185,10 +185,10 @@ static void widget_button_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widget
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
// Check if the button is pressed down
uint8_t press = widget_is_pressed(w, widgetIndex) || widget_is_active_tool(w, widgetIndex) ? INSET_RECT_FLAG_BORDER_INSET
@ -240,8 +240,8 @@ static void widget_tab_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetind
}
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
// Get the colour and disabled image
uint8_t colour = w->colours[widget->colour] & 0x7F;
@ -267,10 +267,10 @@ static void widget_flat_button_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_w
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
// Get the colour
uint8_t colour = w->colours[widget->colour];
@ -303,10 +303,10 @@ static void widget_text_button(rct_drawpixelinfo* dpi, rct_window* w, rct_widget
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
// Get the colour
uint8_t colour = w->colours[widget->colour];
@ -346,20 +346,20 @@ static void widget_text_centred(rct_drawpixelinfo* dpi, rct_window* w, rct_widge
colour |= COLOUR_FLAG_INSET;
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t r = w->x + widget->right;
int32_t l = w->windowPos.x + widget->left;
int32_t r = w->windowPos.x + widget->right;
int32_t t;
if (widget->type == WWT_BUTTON || widget->type == WWT_TABLE_HEADER)
{
int32_t height = (widget->bottom - widget->top);
if (height >= 10)
t = w->y + std::max<int32_t>(widget->top, widget->top + (height / 2) - 5);
t = w->windowPos.y + std::max<int32_t>(widget->top, widget->top + (height / 2) - 5);
else
t = w->y + widget->top - 1;
t = w->windowPos.y + widget->top - 1;
}
else
t = w->y + widget->top;
t = w->windowPos.y + widget->top;
gfx_draw_string_centred_clipped(
dpi, widget->text, gCommonFormatArgs, colour, (l + r + 1) / 2 - 1, t, widget->right - widget->left - 2);
@ -383,20 +383,20 @@ static void widget_text(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetindex w
colour |= COLOUR_FLAG_INSET;
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t r = w->x + widget->right;
int32_t l = w->windowPos.x + widget->left;
int32_t r = w->windowPos.x + widget->right;
int32_t t;
if (widget->type == WWT_BUTTON || widget->type == WWT_TABLE_HEADER)
{
int32_t height = (widget->bottom - widget->top);
if (height >= 10)
t = w->y + std::max<int32_t>(widget->top, widget->top + (height / 2) - 5);
t = w->windowPos.y + std::max<int32_t>(widget->top, widget->top + (height / 2) - 5);
else
t = w->y + widget->top - 1;
t = w->windowPos.y + widget->top - 1;
}
else
t = w->y + widget->top;
t = w->windowPos.y + widget->top;
gfx_draw_string_left_clipped(dpi, widget->text, gCommonFormatArgs, colour, l + 1, t, r - l);
}
@ -411,10 +411,10 @@ static void widget_text_inset(rct_drawpixelinfo* dpi, rct_window* w, rct_widgeti
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
// Get the colour
uint8_t colour = w->colours[widget->colour];
@ -433,10 +433,10 @@ static void widget_groupbox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left + 5;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left + 5;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
int32_t textRight = l;
// Text
@ -456,10 +456,10 @@ static void widget_groupbox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
// Border
// Resolve the absolute ltrb
l = w->x + widget->left;
t = w->y + widget->top + 4;
r = w->x + widget->right;
b = w->y + widget->bottom;
l = w->windowPos.x + widget->left;
t = w->windowPos.y + widget->top + 4;
r = w->windowPos.x + widget->right;
b = w->windowPos.y + widget->bottom;
// Get the colour
uint8_t colour = w->colours[widget->colour] & 0x7F;
@ -495,10 +495,10 @@ static void widget_caption_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widge
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
// Get the colour
uint8_t colour = w->colours[widget->colour];
@ -519,8 +519,8 @@ static void widget_caption_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widge
if (widget->text == STR_NONE)
return;
l = widget->left + w->x + 2;
t = widget->top + w->y + 1;
l = widget->left + w->windowPos.x + 2;
t = widget->top + w->windowPos.y + 1;
int32_t width = widget->right - widget->left - 4;
if ((widget + 1)->type == WWT_CLOSEBOX)
{
@ -542,10 +542,10 @@ static void widget_closebox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
// Check if the button is pressed down
uint8_t press = 0;
@ -563,8 +563,8 @@ static void widget_closebox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
if (widget->text == STR_NONE)
return;
l = w->x + (widget->left + widget->right) / 2 - 1;
t = w->y + std::max<int32_t>(widget->top, (widget->top + widget->bottom) / 2 - 5);
l = w->windowPos.x + (widget->left + widget->right) / 2 - 1;
t = w->windowPos.y + std::max<int32_t>(widget->top, (widget->top + widget->bottom) / 2 - 5);
if (widget_is_disabled(w, widgetIndex))
colour |= COLOUR_FLAG_INSET;
@ -582,9 +582,9 @@ static void widget_checkbox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t b = w->windowPos.y + widget->bottom;
int32_t yMid = (b + t) / 2;
// Get the colour
@ -624,10 +624,10 @@ static void widget_scroll_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widget
rct_scroll* scroll = &w->scrolls[scrollIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
// Get the colour
uint8_t colour = w->colours[widget->colour];
@ -764,8 +764,8 @@ static void widget_draw_image(rct_drawpixelinfo* dpi, rct_window* w, rct_widgeti
return;
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
// Get the colour
uint8_t colour = NOT_TRANSLUCENT(w->colours[widget->colour]);
@ -881,12 +881,12 @@ void widget_scroll_get_part(
}
}
if ((w->scrolls[*scroll_id].flags & HSCROLLBAR_VISIBLE) && screenCoords.y >= (w->y + widget->bottom - 11))
if ((w->scrolls[*scroll_id].flags & HSCROLLBAR_VISIBLE) && screenCoords.y >= (w->windowPos.y + widget->bottom - 11))
{
// horizontal scrollbar
int32_t rightOffset = 0;
int32_t iteratorLeft = widget->left + w->x + 10;
int32_t iteratorRight = widget->right + w->x - 10;
int32_t iteratorLeft = widget->left + w->windowPos.x + 10;
int32_t iteratorRight = widget->right + w->windowPos.x - 10;
if (!(w->scrolls[*scroll_id].flags & VSCROLLBAR_VISIBLE))
{
rightOffset = 11;
@ -904,11 +904,11 @@ void widget_scroll_get_part(
{
*output_scroll_area = SCROLL_PART_HSCROLLBAR_RIGHT;
}
else if (screenCoords.x < (widget->left + w->x + w->scrolls[*scroll_id].h_thumb_left))
else if (screenCoords.x < (widget->left + w->windowPos.x + w->scrolls[*scroll_id].h_thumb_left))
{
*output_scroll_area = SCROLL_PART_HSCROLLBAR_LEFT_TROUGH;
}
else if (screenCoords.x > (widget->left + w->x + w->scrolls[*scroll_id].h_thumb_right))
else if (screenCoords.x > (widget->left + w->windowPos.x + w->scrolls[*scroll_id].h_thumb_right))
{
*output_scroll_area = SCROLL_PART_HSCROLLBAR_RIGHT_TROUGH;
}
@ -917,12 +917,12 @@ void widget_scroll_get_part(
*output_scroll_area = SCROLL_PART_HSCROLLBAR_THUMB;
}
}
else if ((w->scrolls[*scroll_id].flags & VSCROLLBAR_VISIBLE) && (screenCoords.x >= w->x + widget->right - 11))
else if ((w->scrolls[*scroll_id].flags & VSCROLLBAR_VISIBLE) && (screenCoords.x >= w->windowPos.x + widget->right - 11))
{
// vertical scrollbar
int32_t bottomOffset = 0;
int32_t iteratorTop = widget->top + w->y + 10;
int32_t iteratorBottom = widget->bottom + w->y;
int32_t iteratorTop = widget->top + w->windowPos.y + 10;
int32_t iteratorBottom = widget->bottom + w->windowPos.y;
if (w->scrolls[*scroll_id].flags & HSCROLLBAR_VISIBLE)
{
bottomOffset = 11;
@ -940,11 +940,11 @@ void widget_scroll_get_part(
{
*output_scroll_area = SCROLL_PART_VSCROLLBAR_BOTTOM;
}
else if (screenCoords.y < (widget->top + w->y + w->scrolls[*scroll_id].v_thumb_top))
else if (screenCoords.y < (widget->top + w->windowPos.y + w->scrolls[*scroll_id].v_thumb_top))
{
*output_scroll_area = SCROLL_PART_VSCROLLBAR_TOP_TROUGH;
}
else if (screenCoords.y > (widget->top + w->y + w->scrolls[*scroll_id].v_thumb_bottom))
else if (screenCoords.y > (widget->top + w->windowPos.y + w->scrolls[*scroll_id].v_thumb_bottom))
{
*output_scroll_area = SCROLL_PART_VSCROLLBAR_BOTTOM_TROUGH;
}
@ -959,8 +959,7 @@ void widget_scroll_get_part(
*output_scroll_area = SCROLL_PART_VIEW;
retScreenCoords.x = screenCoords.x - widget->left;
retScreenCoords.y = screenCoords.y - widget->top;
retScreenCoords.x -= w->x;
retScreenCoords.y -= w->y;
retScreenCoords -= w->windowPos;
if (retScreenCoords.x <= 0 || retScreenCoords.y <= 0)
{
*output_scroll_area = SCROLL_PART_NONE;
@ -1005,10 +1004,10 @@ static void widget_text_box_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
rct_widget* widget = &w->widgets[widgetIndex];
// Resolve the absolute ltrb
int32_t l = w->x + widget->left;
int32_t t = w->y + widget->top;
int32_t r = w->x + widget->right;
int32_t b = w->y + widget->bottom;
int32_t l = w->windowPos.x + widget->left;
int32_t t = w->windowPos.y + widget->top;
int32_t r = w->windowPos.x + widget->right;
int32_t b = w->windowPos.y + widget->bottom;
// Get the colour
uint8_t colour = w->colours[widget->colour];

View File

@ -38,13 +38,13 @@ static bool window_fits_between_others(int32_t x, int32_t y, int32_t width, int3
if (w->flags & WF_STICK_TO_BACK)
continue;
if (x + width <= w->x)
if (x + width <= w->windowPos.x)
continue;
if (x >= w->x + w->width)
if (x >= w->windowPos.x + w->width)
continue;
if (y + height <= w->y)
if (y + height <= w->windowPos.y)
continue;
if (y >= w->y + w->height)
if (y >= w->windowPos.y + w->height)
continue;
return false;
}
@ -145,8 +145,7 @@ rct_window* window_create(
}
w->number = 0;
w->x = screenCoords.x;
w->y = screenCoords.y;
w->windowPos = screenCoords;
w->width = width;
w->height = height;
w->viewport = nullptr;
@ -227,43 +226,43 @@ rct_window* window_create_auto_pos(
if (w->flags & WF_STICK_TO_BACK)
continue;
x = w->x + w->width + 2;
y = w->y;
x = w->windowPos.x + w->width + 2;
y = w->windowPos.y;
if (window_fits_within_space(x, y, width, height))
goto foundSpace;
x = w->x - w->width - 2;
y = w->y;
x = w->windowPos.x - w->width - 2;
y = w->windowPos.y;
if (window_fits_within_space(x, y, width, height))
goto foundSpace;
x = w->x;
y = w->y + w->height + 2;
x = w->windowPos.x;
y = w->windowPos.y + w->height + 2;
if (window_fits_within_space(x, y, width, height))
goto foundSpace;
x = w->x;
y = w->y - w->height - 2;
x = w->windowPos.x;
y = w->windowPos.y - w->height - 2;
if (window_fits_within_space(x, y, width, height))
goto foundSpace;
x = w->x + w->width + 2;
y = w->y - w->height - 2;
x = w->windowPos.x + w->width + 2;
y = w->windowPos.y - w->height - 2;
if (window_fits_within_space(x, y, width, height))
goto foundSpace;
x = w->x - w->width - 2;
y = w->y - w->height - 2;
x = w->windowPos.x - w->width - 2;
y = w->windowPos.y - w->height - 2;
if (window_fits_within_space(x, y, width, height))
goto foundSpace;
x = w->x + w->width + 2;
y = w->y + w->height + 2;
x = w->windowPos.x + w->width + 2;
y = w->windowPos.y + w->height + 2;
if (window_fits_within_space(x, y, width, height))
goto foundSpace;
x = w->x - w->width - 2;
y = w->y + w->height + 2;
x = w->windowPos.x - w->width - 2;
y = w->windowPos.y + w->height + 2;
if (window_fits_within_space(x, y, width, height))
goto foundSpace;
}
@ -274,23 +273,23 @@ rct_window* window_create_auto_pos(
if (w->flags & WF_STICK_TO_BACK)
continue;
x = w->x + w->width + 2;
y = w->y;
x = w->windowPos.x + w->width + 2;
y = w->windowPos.y;
if (window_fits_on_screen(x, y, width, height))
goto foundSpace;
x = w->x - w->width - 2;
y = w->y;
x = w->windowPos.x - w->width - 2;
y = w->windowPos.y;
if (window_fits_on_screen(x, y, width, height))
goto foundSpace;
x = w->x;
y = w->y + w->height + 2;
x = w->windowPos.x;
y = w->windowPos.y + w->height + 2;
if (window_fits_on_screen(x, y, width, height))
goto foundSpace;
x = w->x;
y = w->y - w->height - 2;
x = w->windowPos.x;
y = w->windowPos.y - w->height - 2;
if (window_fits_on_screen(x, y, width, height))
goto foundSpace;
}
@ -300,7 +299,7 @@ rct_window* window_create_auto_pos(
y = 30;
for (auto& w : g_window_list)
{
if (x == w->x && y == w->y)
if (x == w->windowPos.x && y == w->windowPos.y)
{
x += 5;
y += 5;
@ -639,7 +638,8 @@ void window_draw_widgets(rct_window* w, rct_drawpixelinfo* dpi)
rct_widgetindex widgetIndex;
if ((w->flags & WF_TRANSPARENT) && !(w->flags & WF_NO_BACKGROUND))
gfx_filter_rect(dpi, w->x, w->y, w->x + w->width - 1, w->y + w->height - 1, PALETTE_51);
gfx_filter_rect(
dpi, w->windowPos.x, w->windowPos.y, w->windowPos.x + w->width - 1, w->windowPos.y + w->height - 1, PALETTE_51);
// todo: some code missing here? Between 006EB18C and 006EB260
@ -647,8 +647,8 @@ void window_draw_widgets(rct_window* w, rct_drawpixelinfo* dpi)
for (widget = w->widgets; widget->type != WWT_LAST; widget++)
{
// Check if widget is outside the draw region
if (w->x + widget->left < dpi->x + dpi->width && w->x + widget->right >= dpi->x)
if (w->y + widget->top < dpi->y + dpi->height && w->y + widget->bottom >= dpi->y)
if (w->windowPos.x + widget->left < dpi->x + dpi->width && w->windowPos.x + widget->right >= dpi->x)
if (w->windowPos.y + widget->top < dpi->y + dpi->height && w->windowPos.y + widget->bottom >= dpi->y)
widget_draw(dpi, w, widgetIndex);
widgetIndex++;
@ -659,7 +659,8 @@ void window_draw_widgets(rct_window* w, rct_drawpixelinfo* dpi)
if (w->flags & WF_WHITE_BORDER_MASK)
{
gfx_fill_rect_inset(
dpi, w->x, w->y, w->x + w->width - 1, w->y + w->height - 1, COLOUR_WHITE, INSET_RECT_FLAG_FILL_NONE);
dpi, w->windowPos.x, w->windowPos.y, w->windowPos.x + w->width - 1, w->windowPos.y + w->height - 1, COLOUR_WHITE,
INSET_RECT_FLAG_FILL_NONE);
}
}
@ -679,7 +680,7 @@ static void window_invalidate_pressed_image_buttons(rct_window* w)
continue;
if (widget_is_pressed(w, widgetIndex) || widget_is_active_tool(w, widgetIndex))
gfx_set_dirty_blocks(w->x, w->y, w->x + w->width, w->y + w->height);
gfx_set_dirty_blocks(w->windowPos.x, w->windowPos.y, w->windowPos.x + w->width, w->windowPos.y + w->height);
}
}

View File

@ -204,9 +204,10 @@ static void window_about_openrct2_common_paint(rct_window* w, rct_drawpixelinfo*
int32_t x1, x2, y;
x1 = w->x + (&w->widgets[WIDX_TAB_ABOUT_OPENRCT2])->left + 45;
x2 = w->x + (&w->widgets[WIDX_TAB_ABOUT_RCT2])->left + 45;
y = w->y + (((&w->widgets[WIDX_TAB_ABOUT_OPENRCT2])->top + (&w->widgets[WIDX_TAB_ABOUT_OPENRCT2])->bottom) / 2) - 3;
x1 = w->windowPos.x + (&w->widgets[WIDX_TAB_ABOUT_OPENRCT2])->left + 45;
x2 = w->windowPos.x + (&w->widgets[WIDX_TAB_ABOUT_RCT2])->left + 45;
y = w->windowPos.y + (((&w->widgets[WIDX_TAB_ABOUT_OPENRCT2])->top + (&w->widgets[WIDX_TAB_ABOUT_OPENRCT2])->bottom) / 2)
- 3;
set_format_arg(0, rct_string_id, STR_TITLE_SEQUENCE_OPENRCT2);
gfx_draw_string_centred_wrapped(dpi, gCommonFormatArgs, x1, y, 87, STR_WINDOW_COLOUR_2_STRINGID, COLOUR_AQUAMARINE);
@ -224,8 +225,8 @@ static void window_about_openrct2_paint(rct_window* w, rct_drawpixelinfo* dpi)
int32_t lineHeight = font_get_line_height(gCurrentFontSpriteBase);
x = w->x + (w->width / 2);
y = w->y + w->widgets[WIDX_PAGE_BACKGROUND].top + lineHeight;
x = w->windowPos.x + (w->width / 2);
y = w->windowPos.y + w->widgets[WIDX_PAGE_BACKGROUND].top + lineHeight;
width = w->width - 20;
y += gfx_draw_string_centred_wrapped(dpi, nullptr, x, y, width, STR_ABOUT_OPENRCT2_DESCRIPTION, w->colours[2]) + lineHeight;
@ -249,7 +250,7 @@ static void window_about_openrct2_paint(rct_window* w, rct_drawpixelinfo* dpi)
utf8 buffer[256];
utf8* ch = buffer;
openrct2_write_full_version_info(ch, sizeof(buffer) - (ch - buffer));
gfx_draw_string_centred_wrapped(dpi, &ch, x, w->y + WH - 25, width, STR_STRING, w->colours[2]);
gfx_draw_string_centred_wrapped(dpi, &ch, x, w->windowPos.y + WH - 25, width, STR_STRING, w->colours[2]);
}
#pragma endregion OpenRCT2
@ -287,9 +288,9 @@ static void window_about_rct2_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_about_openrct2_common_paint(w, dpi);
yPage = w->y + w->widgets[WIDX_PAGE_BACKGROUND].top + 5;
yPage = w->windowPos.y + w->widgets[WIDX_PAGE_BACKGROUND].top + 5;
x = w->x + 200;
x = w->windowPos.x + 200;
y = yPage + 5;
int32_t lineHeight = font_get_line_height(gCurrentFontSpriteBase);
@ -314,7 +315,7 @@ static void window_about_rct2_paint(rct_window* w, rct_drawpixelinfo* dpi)
gfx_draw_string_centred(dpi, STR_LICENSED_TO_INFOGRAMES_INTERACTIVE_INC, x, y, COLOUR_BLACK, nullptr);
// Images
gfx_draw_sprite(dpi, SPR_CREDITS_CHRIS_SAWYER_SMALL, w->x + 92, yPage + 24, 0);
gfx_draw_sprite(dpi, SPR_CREDITS_CHRIS_SAWYER_SMALL, w->windowPos.x + 92, yPage + 24, 0);
// Licence
}

View File

@ -154,7 +154,7 @@ rct_window* window_banner_open(rct_windownumber number)
// Create viewport
viewportWidget = &window_banner_widgets[WIDX_VIEWPORT];
viewport_create(
w, { w->x + viewportWidget->left + 1, w->y + viewportWidget->top + 1 },
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 2, (viewportWidget->bottom - viewportWidget->top) - 2, 0,
{ bannerViewPos, view_z }, 0, SPRITE_INDEX_NULL);
@ -236,7 +236,7 @@ static void window_banner_mousedown(rct_window* w, rct_widgetindex widgetIndex,
widget--;
window_dropdown_show_text_custom_width(
widget->left + w->x, widget->top + w->y, widget->bottom - widget->top + 1, w->colours[1], 0,
widget->left + w->windowPos.x, widget->top + w->windowPos.y, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, 13, widget->right - widget->left - 3);
dropdown_set_checked(banner->text_colour - 1, true);
@ -349,7 +349,7 @@ static void window_banner_viewport_rotate(rct_window* w)
// Create viewport
rct_widget* viewportWidget = &window_banner_widgets[WIDX_VIEWPORT];
viewport_create(
w, { w->x + viewportWidget->left + 1, w->y + viewportWidget->top + 1 },
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 1, (viewportWidget->bottom - viewportWidget->top) - 1, 0,
bannerViewPos, 0, SPRITE_INDEX_NULL);

View File

@ -734,8 +734,9 @@ static void window_cheats_misc_mousedown(rct_window* w, rct_widgetindex widgetIn
gDropdownItemsArgs[i] = WeatherTypes[i];
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 6, dropdownWidget->right - dropdownWidget->left - 3);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 6,
dropdownWidget->right - dropdownWidget->left - 3);
currentWeather = gClimateCurrent.Weather;
dropdown_set_checked(currentWeather, true);
@ -754,8 +755,9 @@ static void window_cheats_misc_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 3, dropdownWidget->right - dropdownWidget->left - 3);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 3,
dropdownWidget->right - dropdownWidget->left - 3);
dropdown_set_checked(_selectedStaffSpeed, true);
}
}
@ -1190,36 +1192,56 @@ static void window_cheats_paint(rct_window* w, rct_drawpixelinfo* dpi)
}
int32_t actual_month = _monthSpinnerValue - 1;
gfx_draw_string_left(
dpi, STR_BOTTOM_TOOLBAR_CASH, gCommonFormatArgs, colour, w->x + XPL(0) + TXTO, w->y + YPL(2) + TXTO);
gfx_draw_string_left(dpi, STR_YEAR, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(7) + TXTO);
gfx_draw_string_left(dpi, STR_MONTH, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(8) + TXTO);
gfx_draw_string_left(dpi, STR_DAY, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(9) + TXTO);
dpi, STR_BOTTOM_TOOLBAR_CASH, gCommonFormatArgs, colour, w->windowPos.x + XPL(0) + TXTO,
w->windowPos.y + YPL(2) + TXTO);
gfx_draw_string_left(
dpi, STR_YEAR, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(7) + TXTO);
gfx_draw_string_left(
dpi, STR_MONTH, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(8) + TXTO);
gfx_draw_string_left(
dpi, STR_DAY, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(9) + TXTO);
gfx_draw_string_right(
dpi, STR_FORMAT_INTEGER, &_yearSpinnerValue, w->colours[1], w->x + WPL(1) - 34 - TXTO, w->y + YPL(7) + TXTO);
dpi, STR_FORMAT_INTEGER, &_yearSpinnerValue, w->colours[1], w->windowPos.x + WPL(1) - 34 - TXTO,
w->windowPos.y + YPL(7) + TXTO);
gfx_draw_string_right(
dpi, STR_FORMAT_MONTH, &actual_month, w->colours[1], w->x + WPL(1) - 34 - TXTO, w->y + YPL(8) + TXTO);
dpi, STR_FORMAT_MONTH, &actual_month, w->colours[1], w->windowPos.x + WPL(1) - 34 - TXTO,
w->windowPos.y + YPL(8) + TXTO);
gfx_draw_string_right(
dpi, STR_FORMAT_INTEGER, &_daySpinnerValue, w->colours[1], w->x + WPL(1) - 34 - TXTO, w->y + YPL(9) + TXTO);
dpi, STR_FORMAT_INTEGER, &_daySpinnerValue, w->colours[1], w->windowPos.x + WPL(1) - 34 - TXTO,
w->windowPos.y + YPL(9) + TXTO);
}
else if (w->page == WINDOW_CHEATS_PAGE_MISC)
{
gfx_draw_string_left(dpi, STR_CHEAT_STAFF_SPEED, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(17) + TXTO);
gfx_draw_string_left(dpi, STR_FORCE_WEATHER, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(10) + TXTO);
gfx_draw_string_left(
dpi, STR_CHEAT_STAFF_SPEED, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(17) + TXTO);
gfx_draw_string_left(
dpi, STR_FORCE_WEATHER, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(10) + TXTO);
gfx_draw_string_right(
dpi, STR_FORMAT_INTEGER, &_parkRatingSpinnerValue, w->colours[1], w->x + WPL(1) - 34 - TXTO, w->y + YPL(5) + TXTO);
dpi, STR_FORMAT_INTEGER, &_parkRatingSpinnerValue, w->colours[1], w->windowPos.x + WPL(1) - 34 - TXTO,
w->windowPos.y + YPL(5) + TXTO);
}
else if (w->page == WINDOW_CHEATS_PAGE_GUESTS)
{
gfx_draw_string_left(dpi, STR_CHEAT_GUEST_HAPPINESS, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(1) + TXTO);
gfx_draw_string_left(dpi, STR_CHEAT_GUEST_ENERGY, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(2) + TXTO);
gfx_draw_string_left(dpi, STR_CHEAT_GUEST_HUNGER, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(3) + TXTO);
gfx_draw_string_left(dpi, STR_CHEAT_GUEST_THIRST, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(4) + TXTO);
gfx_draw_string_left(dpi, STR_CHEAT_GUEST_NAUSEA, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(5) + TXTO);
gfx_draw_string_left(
dpi, STR_CHEAT_GUEST_NAUSEA_TOLERANCE, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(6) + TXTO);
gfx_draw_string_left(dpi, STR_CHEAT_GUEST_BATHROOM, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(7) + TXTO);
dpi, STR_CHEAT_GUEST_HAPPINESS, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO,
w->windowPos.y + YPL(1) + TXTO);
gfx_draw_string_left(
dpi, STR_CHEAT_GUEST_PREFERRED_INTENSITY, nullptr, COLOUR_BLACK, w->x + XPL(0) + TXTO, w->y + YPL(8) + TXTO);
dpi, STR_CHEAT_GUEST_ENERGY, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(2) + TXTO);
gfx_draw_string_left(
dpi, STR_CHEAT_GUEST_HUNGER, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(3) + TXTO);
gfx_draw_string_left(
dpi, STR_CHEAT_GUEST_THIRST, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(4) + TXTO);
gfx_draw_string_left(
dpi, STR_CHEAT_GUEST_NAUSEA, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(5) + TXTO);
gfx_draw_string_left(
dpi, STR_CHEAT_GUEST_NAUSEA_TOLERANCE, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO,
w->windowPos.y + YPL(6) + TXTO);
gfx_draw_string_left(
dpi, STR_CHEAT_GUEST_BATHROOM, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO,
w->windowPos.y + YPL(7) + TXTO);
gfx_draw_string_left(
dpi, STR_CHEAT_GUEST_PREFERRED_INTENSITY, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO,
w->windowPos.y + YPL(8) + TXTO);
}
}
@ -1233,7 +1255,8 @@ static void window_cheats_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx = SPR_TAB_FINANCES_SUMMARY_0;
if (w->page == WINDOW_CHEATS_PAGE_MONEY)
sprite_idx += (w->frame_no / 2) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_1].left, w->y + w->widgets[WIDX_TAB_1].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_1].left, w->windowPos.y + w->widgets[WIDX_TAB_1].top, 0);
}
// Guests tab
@ -1242,14 +1265,16 @@ static void window_cheats_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx = SPR_TAB_GUESTS_0;
if (w->page == WINDOW_CHEATS_PAGE_GUESTS)
sprite_idx += (w->frame_no / 3) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_2].left, w->y + w->widgets[WIDX_TAB_2].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_2].left, w->windowPos.y + w->widgets[WIDX_TAB_2].top, 0);
}
// Misc tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_3)))
{
sprite_idx = SPR_TAB_PARK;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_3].left, w->y + w->widgets[WIDX_TAB_3].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_3].left, w->windowPos.y + w->widgets[WIDX_TAB_3].top, 0);
}
// Rides tab
@ -1258,7 +1283,8 @@ static void window_cheats_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx = SPR_TAB_RIDE_0;
if (w->page == WINDOW_CHEATS_PAGE_RIDES)
sprite_idx += (w->frame_no / 4) % 16;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_4].left, w->y + w->widgets[WIDX_TAB_4].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_4].left, w->windowPos.y + w->widgets[WIDX_TAB_4].top, 0);
}
}

View File

@ -238,8 +238,10 @@ static void window_clear_scenery_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_draw_widgets(w, dpi);
// Draw number for tool sizes bigger than 7
x = w->x + (window_clear_scenery_widgets[WIDX_PREVIEW].left + window_clear_scenery_widgets[WIDX_PREVIEW].right) / 2;
y = w->y + (window_clear_scenery_widgets[WIDX_PREVIEW].top + window_clear_scenery_widgets[WIDX_PREVIEW].bottom) / 2;
x = w->windowPos.x
+ (window_clear_scenery_widgets[WIDX_PREVIEW].left + window_clear_scenery_widgets[WIDX_PREVIEW].right) / 2;
y = w->windowPos.y
+ (window_clear_scenery_widgets[WIDX_PREVIEW].top + window_clear_scenery_widgets[WIDX_PREVIEW].bottom) / 2;
if (gLandToolSize > MAX_TOOL_SIZE_WITH_SPRITE)
{
gfx_draw_string_centred(dpi, STR_LAND_TOOL_SIZE_VALUE, x, y - 2, COLOUR_BLACK, &gLandToolSize);
@ -248,8 +250,9 @@ static void window_clear_scenery_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw cost amount
if (gClearSceneryCost != MONEY32_UNDEFINED && gClearSceneryCost != 0 && !(gParkFlags & PARK_FLAGS_NO_MONEY))
{
x = (window_clear_scenery_widgets[WIDX_PREVIEW].left + window_clear_scenery_widgets[WIDX_PREVIEW].right) / 2 + w->x;
y = window_clear_scenery_widgets[WIDX_PREVIEW].bottom + w->y + 5 + 27;
x = (window_clear_scenery_widgets[WIDX_PREVIEW].left + window_clear_scenery_widgets[WIDX_PREVIEW].right) / 2
+ w->windowPos.x;
y = window_clear_scenery_widgets[WIDX_PREVIEW].bottom + w->windowPos.y + 5 + 27;
gfx_draw_string_centred(dpi, STR_COST_AMOUNT, x, y, COLOUR_BLACK, &gClearSceneryCost);
}
}

View File

@ -138,7 +138,7 @@ static void custom_currency_window_mousedown(rct_window* w, rct_widgetindex widg
gDropdownItemsArgs[1] = STR_SUFFIX;
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, 2, widget->right - widget->left - 3);
if (CurrencyDescriptors[CURRENCY_CUSTOM].affix_unicode == CURRENCY_PREFIX)
@ -237,8 +237,8 @@ static void custom_currency_window_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_draw_widgets(w, dpi);
x = w->x + 10;
y = w->y + 30;
x = w->windowPos.x + 10;
y = w->windowPos.y + 30;
gfx_draw_string_left(dpi, STR_RATE, nullptr, w->colours[1], x, y);
@ -252,19 +252,19 @@ static void custom_currency_window_paint(rct_window* w, rct_drawpixelinfo* dpi)
gfx_draw_string(
dpi, CurrencyDescriptors[CURRENCY_CUSTOM].symbol_unicode, w->colours[1],
w->x + window_custom_currency_widgets[WIDX_SYMBOL_TEXT].left + 1,
w->y + window_custom_currency_widgets[WIDX_SYMBOL_TEXT].top);
w->windowPos.x + window_custom_currency_widgets[WIDX_SYMBOL_TEXT].left + 1,
w->windowPos.y + window_custom_currency_widgets[WIDX_SYMBOL_TEXT].top);
if (CurrencyDescriptors[CURRENCY_CUSTOM].affix_unicode == CURRENCY_PREFIX)
{
gfx_draw_string_left(
dpi, STR_PREFIX, w, w->colours[1], w->x + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1,
w->y + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].top);
dpi, STR_PREFIX, w, w->colours[1], w->windowPos.x + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1,
w->windowPos.y + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].top);
}
else
{
gfx_draw_string_left(
dpi, STR_SUFFIX, w, w->colours[1], w->x + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1,
w->y + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].top);
dpi, STR_SUFFIX, w, w->colours[1], w->windowPos.x + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1,
w->windowPos.y + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].top);
}
}

View File

@ -127,7 +127,7 @@ rct_window* window_ride_demolish_prompt_open(Ride* ride)
w = window_find_by_class(WC_DEMOLISH_RIDE_PROMPT);
if (w != nullptr)
{
auto windowPos = ScreenCoordsXY{ w->x, w->y };
auto windowPos = w->windowPos;
window_close(w);
w = window_create(windowPos, WW, WH, &window_ride_demolish_events, WC_DEMOLISH_RIDE_PROMPT, WF_TRANSPARENT);
}
@ -152,7 +152,7 @@ rct_window* window_ride_refurbish_prompt_open(Ride* ride)
w = window_find_by_class(WC_DEMOLISH_RIDE_PROMPT);
if (w != nullptr)
{
auto windowPos = ScreenCoordsXY{ w->x, w->y };
auto windowPos = w->windowPos;
window_close(w);
w = window_create(windowPos, WW, WH, &window_ride_refurbish_events, WC_DEMOLISH_RIDE_PROMPT, WF_TRANSPARENT);
}
@ -223,8 +223,8 @@ static void window_ride_demolish_paint(rct_window* w, rct_drawpixelinfo* dpi)
auto nameArgLen = ride->FormatNameTo(gCommonFormatArgs);
set_format_arg(nameArgLen, money32, _demolishRideCost);
int32_t x = w->x + WW / 2;
int32_t y = w->y + (WH / 2) - 3;
int32_t x = w->windowPos.x + WW / 2;
int32_t y = w->windowPos.y + (WH / 2) - 3;
gfx_draw_string_centred_wrapped(dpi, gCommonFormatArgs, x, y, WW - 4, stringId, COLOUR_BLACK);
}
}
@ -240,8 +240,8 @@ static void window_ride_refurbish_paint(rct_window* w, rct_drawpixelinfo* dpi)
auto nameArgLen = ride->FormatNameTo(gCommonFormatArgs);
set_format_arg(nameArgLen, money32, _demolishRideCost / 2);
int32_t x = w->x + WW / 2;
int32_t y = w->y + (WH / 2) - 3;
int32_t x = w->windowPos.x + WW / 2;
int32_t y = w->windowPos.y + (WH / 2) - 3;
gfx_draw_string_centred_wrapped(dpi, gCommonFormatArgs, x, y, WW - 4, stringId, COLOUR_BLACK);
}
}

View File

@ -331,8 +331,8 @@ static void window_dropdown_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (gDropdownItemsFormat[i] == DROPDOWN_SEPARATOR)
{
l = w->x + 2 + (cell_x * _dropdown_item_width);
t = w->y + 2 + (cell_y * _dropdown_item_height);
l = w->windowPos.x + 2 + (cell_x * _dropdown_item_width);
t = w->windowPos.y + 2 + (cell_y * _dropdown_item_height);
r = l + _dropdown_item_width - 1;
t += (_dropdown_item_height / 2);
b = t;
@ -354,8 +354,8 @@ static void window_dropdown_paint(rct_window* w, rct_drawpixelinfo* dpi)
//
if (i == highlightedIndex)
{
l = w->x + 2 + (cell_x * _dropdown_item_width);
t = w->y + 2 + (cell_y * _dropdown_item_height);
l = w->windowPos.x + 2 + (cell_x * _dropdown_item_width);
t = w->windowPos.y + 2 + (cell_y * _dropdown_item_height);
r = l + _dropdown_item_width - 1;
b = t + _dropdown_item_height - 1;
gfx_filter_rect(dpi, l, t, r, b, PALETTE_DARKEN_3);
@ -370,7 +370,8 @@ static void window_dropdown_paint(rct_window* w, rct_drawpixelinfo* dpi)
image++;
gfx_draw_sprite(
dpi, image, w->x + 2 + (cell_x * _dropdown_item_width), w->y + 2 + (cell_y * _dropdown_item_height), 0);
dpi, image, w->windowPos.x + 2 + (cell_x * _dropdown_item_width),
w->windowPos.y + 2 + (cell_y * _dropdown_item_height), 0);
}
else
{
@ -393,8 +394,8 @@ static void window_dropdown_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw item string
gfx_draw_string_left_clipped(
dpi, item, (void*)(&gDropdownItemsArgs[i]), colour, w->x + 2 + (cell_x * _dropdown_item_width),
w->y + 2 + (cell_y * _dropdown_item_height), w->width - 5);
dpi, item, (void*)(&gDropdownItemsArgs[i]), colour, w->windowPos.x + 2 + (cell_x * _dropdown_item_width),
w->windowPos.y + 2 + (cell_y * _dropdown_item_height), w->width - 5);
}
}
}
@ -406,11 +407,11 @@ static void window_dropdown_paint(rct_window* w, rct_drawpixelinfo* dpi)
*/
int32_t dropdown_index_from_point(int32_t x, int32_t y, rct_window* w)
{
int32_t top = y - w->y - 2;
int32_t top = y - w->windowPos.y - 2;
if (top < 0)
return -1;
int32_t left = x - w->x;
int32_t left = x - w->windowPos.x;
if (left >= w->width)
return -1;
left -= 2;
@ -455,8 +456,8 @@ void window_dropdown_show_colour(rct_window* w, rct_widget* widget, uint8_t drop
// Show dropdown
window_dropdown_show_image(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, dropdownColour, DROPDOWN_FLAG_STAY_OPEN,
COLOUR_COUNT, 12, 12, gAppropriateImageDropdownItemsPerRow[COLOUR_COUNT]);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, dropdownColour,
DROPDOWN_FLAG_STAY_OPEN, COLOUR_COUNT, 12, 12, gAppropriateImageDropdownItemsPerRow[COLOUR_COUNT]);
gDropdownIsColour = true;
gDropdownLastColourHover = -1;

View File

@ -419,19 +419,19 @@ void window_editor_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (drawPreviousButton)
{
gfx_filter_rect(
dpi, window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + w->x,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + w->y,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].right + w->x,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].bottom + w->y, PALETTE_51);
dpi, window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + w->windowPos.x,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + w->windowPos.y,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].right + w->windowPos.x,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].bottom + w->windowPos.y, PALETTE_51);
}
if ((drawPreviousButton || drawNextButton) && gS6Info.editor_step != EDITOR_STEP_ROLLERCOASTER_DESIGNER)
{
gfx_filter_rect(
dpi, window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].left + w->x,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + w->y,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right + w->x,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].bottom + w->y, PALETTE_51);
dpi, window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].left + w->windowPos.x,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + w->windowPos.y,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right + w->windowPos.x,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].bottom + w->windowPos.y, PALETTE_51);
}
}
@ -442,26 +442,28 @@ void window_editor_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (drawPreviousButton)
{
gfx_fill_rect_inset(
dpi, window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + 1 + w->x,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 1 + w->y,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].right - 1 + w->x,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].bottom - 1 + w->y, w->colours[1], INSET_RECT_F_30);
dpi, window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + 1 + w->windowPos.x,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 1 + w->windowPos.y,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].right - 1 + w->windowPos.x,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].bottom - 1 + w->windowPos.y, w->colours[1],
INSET_RECT_F_30);
}
if ((drawPreviousButton || drawNextButton) && gS6Info.editor_step != EDITOR_STEP_ROLLERCOASTER_DESIGNER)
{
gfx_fill_rect_inset(
dpi, window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].left + 1 + w->x,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + 1 + w->y,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right - 1 + w->x,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].bottom - 1 + w->y, w->colours[1], INSET_RECT_F_30);
dpi, window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].left + 1 + w->windowPos.x,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + 1 + w->windowPos.y,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right - 1 + w->windowPos.x,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].bottom - 1 + w->windowPos.y, w->colours[1],
INSET_RECT_F_30);
}
int16_t stateX = (window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].right
+ window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].left)
/ 2
+ w->x;
int16_t stateY = w->height - 0x0C + w->y;
+ w->windowPos.x;
int16_t stateY = w->height - 0x0C + w->windowPos.y;
gfx_draw_string_centred(
dpi, EditorStepNames[gS6Info.editor_step], stateX, stateY, NOT_TRANSLUCENT(w->colours[2]) | COLOUR_FLAG_OUTLINE,
nullptr);
@ -469,8 +471,8 @@ void window_editor_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (drawPreviousButton)
{
gfx_draw_sprite(
dpi, SPR_PREVIOUS, window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + 6 + w->x,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 6 + w->y, 0);
dpi, SPR_PREVIOUS, window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + 6 + w->windowPos.x,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 6 + w->windowPos.y, 0);
int32_t textColour = NOT_TRANSLUCENT(w->colours[1]);
if (gHoverWidget.window_classification == WC_BOTTOM_TOOLBAR
@ -482,8 +484,8 @@ void window_editor_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
int16_t textX = (window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + 30
+ window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].right)
/ 2
+ w->x;
int16_t textY = window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 6 + w->y;
+ w->windowPos.x;
int16_t textY = window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 6 + w->windowPos.y;
rct_string_id stringId = EditorStepNames[gS6Info.editor_step - 1];
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER)
@ -496,8 +498,8 @@ void window_editor_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
if ((drawPreviousButton || drawNextButton) && gS6Info.editor_step != EDITOR_STEP_ROLLERCOASTER_DESIGNER)
{
gfx_draw_sprite(
dpi, SPR_NEXT, window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right - 29 + w->x,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + 6 + w->y, 0);
dpi, SPR_NEXT, window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right - 29 + w->windowPos.x,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + 6 + w->windowPos.y, 0);
int32_t textColour = NOT_TRANSLUCENT(w->colours[1]);
@ -509,8 +511,8 @@ void window_editor_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
int16_t textX = (window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].left
+ window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right - 30)
/ 2
+ w->x;
int16_t textY = window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + 6 + w->y;
+ w->windowPos.x;
int16_t textY = window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + 6 + w->windowPos.y;
rct_string_id stringId = EditorStepNames[gS6Info.editor_step + 1];
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER)

View File

@ -264,8 +264,8 @@ static ResearchItem* window_editor_inventions_list_get_item_from_scroll_y_includ
static ResearchItem* get_research_item_at(const ScreenCoordsXY& screenCoords, int32_t* outScrollId)
{
rct_window* w = window_find_by_class(WC_EDITOR_INVENTION_LIST);
if (w != nullptr && w->x <= screenCoords.x && w->y < screenCoords.y && w->x + w->width > screenCoords.x
&& w->y + w->height > screenCoords.y)
if (w != nullptr && w->windowPos.x <= screenCoords.x && w->windowPos.y < screenCoords.y
&& w->windowPos.x + w->width > screenCoords.x && w->windowPos.y + w->height > screenCoords.y)
{
rct_widgetindex widgetIndex = window_find_widget_from_point(w, screenCoords);
rct_widget* widget = &w->widgets[widgetIndex];
@ -553,25 +553,25 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo
window_draw_widgets(w, dpi);
// Tab image
x = w->x + w->widgets[WIDX_TAB_1].left;
y = w->y + w->widgets[WIDX_TAB_1].top;
x = w->windowPos.x + w->widgets[WIDX_TAB_1].left;
y = w->windowPos.y + w->widgets[WIDX_TAB_1].top;
gfx_draw_sprite(dpi, SPR_TAB_FINANCES_RESEARCH_0 + (w->frame_no / 2) % 8, x, y, 0);
// Pre-researched items label
x = w->x + w->widgets[WIDX_PRE_RESEARCHED_SCROLL].left;
y = w->y + w->widgets[WIDX_PRE_RESEARCHED_SCROLL].top - 11;
x = w->windowPos.x + w->widgets[WIDX_PRE_RESEARCHED_SCROLL].left;
y = w->windowPos.y + w->widgets[WIDX_PRE_RESEARCHED_SCROLL].top - 11;
gfx_draw_string_left(dpi, STR_INVENTION_PREINVENTED_ITEMS, nullptr, COLOUR_BLACK, x, y - 1);
// Research order label
x = w->x + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].left;
y = w->y + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].top - 11;
x = w->windowPos.x + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].left;
y = w->windowPos.y + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].top - 11;
gfx_draw_string_left(dpi, STR_INVENTION_TO_BE_INVENTED_ITEMS, nullptr, COLOUR_BLACK, x, y - 1);
// Preview background
widget = &w->widgets[WIDX_PREVIEW];
gfx_fill_rect(
dpi, w->x + widget->left + 1, w->y + widget->top + 1, w->x + widget->right - 1, w->y + widget->bottom - 1,
ColourMapA[w->colours[1]].darkest);
dpi, w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1, w->windowPos.x + widget->right - 1,
w->windowPos.y + widget->bottom - 1, ColourMapA[w->colours[1]].darkest);
researchItem = &_editorInventionsListDraggedItem;
if (researchItem->IsNull())
@ -598,8 +598,8 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo
if (object != nullptr)
{
rct_drawpixelinfo clipDPI;
x = w->x + widget->left + 1;
y = w->y + widget->top + 1;
x = w->windowPos.x + widget->left + 1;
y = w->windowPos.y + widget->top + 1;
width = widget->right - widget->left - 1;
int32_t height = widget->bottom - widget->top - 1;
if (clip_drawpixelinfo(&clipDPI, dpi, x, y, width, height))
@ -609,8 +609,8 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo
}
// Item name
x = w->x + ((widget->left + widget->right) / 2) + 1;
y = w->y + widget->bottom + 3;
x = w->windowPos.x + ((widget->left + widget->right) / 2) + 1;
y = w->windowPos.y + widget->bottom + 3;
width = w->width - w->widgets[WIDX_RESEARCH_ORDER_SCROLL].right - 6;
rct_string_id drawString = window_editor_inventions_list_prepare_name(researchItem, false);
@ -618,7 +618,7 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo
y += 15;
// Item category
x = w->x + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].right + 4;
x = w->windowPos.x + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].right + 4;
stringId = EditorInventionsResearchCategories[researchItem->category];
gfx_draw_string_left(dpi, STR_INVENTION_RESEARCH_GROUP, &stringId, COLOUR_BLACK, x, y);
}
@ -820,8 +820,8 @@ static void window_editor_inventions_list_drag_paint(rct_window* w, rct_drawpixe
rct_string_id drawString;
int32_t x, y;
x = w->x;
y = w->y + 2;
x = w->windowPos.x;
y = w->windowPos.y + 2;
drawString = window_editor_inventions_list_prepare_name(&_editorInventionsListDraggedItem, true);
gfx_draw_string_left(dpi, drawString, gCommonFormatArgs, COLOUR_BLACK | COLOUR_FLAG_OUTLINE, x, y);
}

View File

@ -66,8 +66,7 @@ rct_window* window_editor_main_open()
&window_editor_main_events, WC_MAIN_WINDOW, WF_STICK_TO_BACK);
window->widgets = window_editor_main_widgets;
viewport_create(
window, { window->x, window->y }, window->width, window->height, 0, { 0x0FFF, 0x0FFF, 0 }, 0x1, SPRITE_INDEX_NULL);
viewport_create(window, window->windowPos, window->width, window->height, 0, { 0x0FFF, 0x0FFF, 0 }, 0x1, SPRITE_INDEX_NULL);
window->viewport->flags |= 0x0400;
gCurrentRotation = 0;

View File

@ -613,8 +613,8 @@ void window_editor_object_selection_mousedown(rct_window* w, rct_widgetindex wid
}
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[widget->colour],
DROPDOWN_FLAG_STAY_OPEN, _numSourceGameItems + numSelectionItems);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
w->colours[widget->colour], DROPDOWN_FLAG_STAY_OPEN, _numSourceGameItems + numSelectionItems);
for (int32_t i = 0; i < _numSourceGameItems; i++)
{
@ -967,8 +967,8 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
if (widget->type != WWT_EMPTY)
{
auto image = ObjectSelectionPages[i].Image;
x = w->x + widget->left;
y = w->y + widget->top;
x = w->windowPos.x + widget->left;
y = w->windowPos.y + widget->top;
gfx_draw_sprite(dpi, image, x, y, 0);
}
}
@ -996,8 +996,8 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
}
spriteIndex += (i == 4 ? ThrillRidesTabAnimationSequence[frame] : frame);
x = w->x + widget->left;
y = w->y + widget->top;
x = w->windowPos.x + widget->left;
y = w->windowPos.y + widget->top;
gfx_draw_sprite(dpi, spriteIndex | (w->colours[1] << 19), x, y, 0);
}
}
@ -1005,14 +1005,14 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
// Preview background
widget = &w->widgets[WIDX_PREVIEW];
gfx_fill_rect(
dpi, w->x + widget->left + 1, w->y + widget->top + 1, w->x + widget->right - 1, w->y + widget->bottom - 1,
ColourMapA[w->colours[1]].darkest);
dpi, w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1, w->windowPos.x + widget->right - 1,
w->windowPos.y + widget->bottom - 1, ColourMapA[w->colours[1]].darkest);
// Draw number of selected items
if (!(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER))
{
x = w->x + 3;
y = w->y + w->height - 13;
x = w->windowPos.x + 3;
y = w->windowPos.y + w->height - 13;
int32_t numSelected = _numSelectedObjectsForType[get_selected_object_type(w)];
int32_t totalSelectable = object_entry_group_counts[get_selected_object_type(w)];
@ -1031,8 +1031,8 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
stringId = _listSortType == RIDE_SORT_TYPE ? (rct_string_id)(_listSortDescending ? STR_DOWN : STR_UP)
: (rct_string_id)STR_NONE;
gfx_draw_string_left_clipped(
dpi, STR_OBJECTS_SORT_TYPE, &stringId, w->colours[1], w->x + widget->left + 1, w->y + widget->top + 1,
widget->right - widget->left);
dpi, STR_OBJECTS_SORT_TYPE, &stringId, w->colours[1], w->windowPos.x + widget->left + 1,
w->windowPos.y + widget->top + 1, widget->right - widget->left);
}
widget = &w->widgets[WIDX_LIST_SORT_RIDE];
if (widget->type != WWT_EMPTY)
@ -1040,8 +1040,8 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
stringId = _listSortType == RIDE_SORT_RIDE ? (rct_string_id)(_listSortDescending ? STR_DOWN : STR_UP)
: (rct_string_id)STR_NONE;
gfx_draw_string_left_clipped(
dpi, STR_OBJECTS_SORT_RIDE, &stringId, w->colours[1], w->x + widget->left + 1, w->y + widget->top + 1,
widget->right - widget->left);
dpi, STR_OBJECTS_SORT_RIDE, &stringId, w->colours[1], w->windowPos.x + widget->left + 1,
w->windowPos.y + widget->top + 1, widget->right - widget->left);
}
if (w->selected_list_item == -1 || _loadedObject == nullptr)
@ -1053,8 +1053,8 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
widget = &w->widgets[WIDX_PREVIEW];
{
rct_drawpixelinfo clipDPI;
x = w->x + widget->left + 1;
y = w->y + widget->top + 1;
x = w->windowPos.x + widget->left + 1;
y = w->windowPos.y + widget->top + 1;
width = widget->right - widget->left - 1;
int32_t height = widget->bottom - widget->top - 1;
if (clip_drawpixelinfo(&clipDPI, dpi, x, y, width, height))
@ -1064,8 +1064,8 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
}
// Draw name of object
x = w->x + (widget->left + widget->right) / 2 + 1;
y = w->y + widget->bottom + 3;
x = w->windowPos.x + (widget->left + widget->right) / 2 + 1;
y = w->windowPos.y + widget->bottom + 3;
width = w->width - w->widgets[WIDX_LIST].right - 6;
set_format_arg(0, rct_string_id, STR_STRING);
set_format_arg(2, const char*, listItem->repositoryItem->Name.c_str());
@ -1078,34 +1078,34 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
set_format_arg(0, rct_string_id, STR_STRING);
set_format_arg(2, const char*, description.c_str());
x = w->x + w->widgets[WIDX_LIST].right + 4;
x = w->windowPos.x + w->widgets[WIDX_LIST].right + 4;
y += 15;
width = w->x + w->width - x - 4;
width = w->windowPos.x + w->width - x - 4;
gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, x, y + 5, width, STR_WINDOW_COLOUR_2_STRINGID, COLOUR_BLACK);
}
y = w->y + w->height - (12 * 4);
y = w->windowPos.y + w->height - (12 * 4);
// Draw ride type.
if (get_selected_object_type(w) == OBJECT_TYPE_RIDE)
{
stringId = get_ride_type_string_id(listItem->repositoryItem);
gfx_draw_string_right(dpi, stringId, nullptr, COLOUR_WHITE, w->x + w->width - 5, y);
gfx_draw_string_right(dpi, stringId, nullptr, COLOUR_WHITE, w->windowPos.x + w->width - 5, y);
}
y += 12;
// Draw object source
stringId = object_manager_get_source_game_string(listItem->repositoryItem->GetFirstSourceGame());
gfx_draw_string_right(dpi, stringId, nullptr, COLOUR_WHITE, w->x + w->width - 5, y);
gfx_draw_string_right(dpi, stringId, nullptr, COLOUR_WHITE, w->windowPos.x + w->width - 5, y);
y += 12;
// Draw object dat name
const char* path = path_get_filename(listItem->repositoryItem->Path.c_str());
set_format_arg(0, rct_string_id, STR_STRING);
set_format_arg(2, const char*, path);
gfx_draw_string_right(dpi, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, COLOUR_BLACK, w->x + w->width - 5, y);
gfx_draw_string_right(dpi, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + w->width - 5, y);
}
/**

View File

@ -303,7 +303,7 @@ static void window_editor_objective_options_draw_tab_images(rct_window* w, rct_d
if (w->page == WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_MAIN)
spriteIndex += (w->frame_no / 4) % 16;
gfx_draw_sprite(dpi, spriteIndex, w->x + widget->left, w->y + widget->top, 0);
gfx_draw_sprite(dpi, spriteIndex, w->windowPos.x + widget->left, w->windowPos.y + widget->top, 0);
// Tab 2
if (!(w->disabled_widgets & (1 << WIDX_TAB_2)))
@ -313,7 +313,7 @@ static void window_editor_objective_options_draw_tab_images(rct_window* w, rct_d
if (w->page == WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_RIDES)
spriteIndex += (w->frame_no / 4) % 16;
gfx_draw_sprite(dpi, spriteIndex, w->x + widget->left, w->y + widget->top, 0);
gfx_draw_sprite(dpi, spriteIndex, w->windowPos.x + widget->left, w->windowPos.y + widget->top, 0);
}
}
@ -485,8 +485,9 @@ static void window_editor_objective_options_show_objective_dropdown(rct_window*
numItems++;
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, dropdownWidget->right - dropdownWidget->left - 3);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
dropdownWidget->right - dropdownWidget->left - 3);
objectiveType = gScenarioObjectiveType;
for (int32_t j = 0; j < numItems; j++)
@ -512,8 +513,9 @@ static void window_editor_objective_options_show_category_dropdown(rct_window* w
gDropdownItemsArgs[i] = ScenarioCategoryStringIds[i];
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 5, dropdownWidget->right - dropdownWidget->left - 3);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 5,
dropdownWidget->right - dropdownWidget->left - 3);
dropdown_set_checked(gS6Info.category, true);
}
@ -863,21 +865,21 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi
window_editor_objective_options_draw_tab_images(w, dpi);
// Objective label
x = w->x + 8;
y = w->y + w->widgets[WIDX_OBJECTIVE].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE].top;
gfx_draw_string_left(dpi, STR_OBJECTIVE_WINDOW, nullptr, COLOUR_BLACK, x, y);
// Objective value
x = w->x + w->widgets[WIDX_OBJECTIVE].left + 1;
y = w->y + w->widgets[WIDX_OBJECTIVE].top;
x = w->windowPos.x + w->widgets[WIDX_OBJECTIVE].left + 1;
y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE].top;
stringId = ObjectiveDropdownOptionNames[gScenarioObjectiveType];
gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, x, y);
if (w->widgets[WIDX_OBJECTIVE_ARG_1].type != WWT_EMPTY)
{
// Objective argument 1 label
x = w->x + 28;
y = w->y + w->widgets[WIDX_OBJECTIVE_ARG_1].top;
x = w->windowPos.x + 28;
y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE_ARG_1].top;
switch (gScenarioObjectiveType)
{
case OBJECTIVE_GUESTS_BY:
@ -904,8 +906,8 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi
gfx_draw_string_left(dpi, stringId, nullptr, COLOUR_BLACK, x, y);
// Objective argument 1 value
x = w->x + w->widgets[WIDX_OBJECTIVE_ARG_1].left + 1;
y = w->y + w->widgets[WIDX_OBJECTIVE_ARG_1].top;
x = w->windowPos.x + w->widgets[WIDX_OBJECTIVE_ARG_1].left + 1;
y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE_ARG_1].top;
switch (gScenarioObjectiveType)
{
case OBJECTIVE_GUESTS_BY:
@ -935,20 +937,20 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi
if (w->widgets[WIDX_OBJECTIVE_ARG_2].type != WWT_EMPTY)
{
// Objective argument 2 label
x = w->x + 28;
y = w->y + w->widgets[WIDX_OBJECTIVE_ARG_2].top;
x = w->windowPos.x + 28;
y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE_ARG_2].top;
gfx_draw_string_left(dpi, STR_WINDOW_OBJECTIVE_DATE, nullptr, COLOUR_BLACK, x, y);
// Objective argument 2 value
x = w->x + w->widgets[WIDX_OBJECTIVE_ARG_2].left + 1;
y = w->y + w->widgets[WIDX_OBJECTIVE_ARG_2].top;
x = w->windowPos.x + w->widgets[WIDX_OBJECTIVE_ARG_2].left + 1;
y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE_ARG_2].top;
arg = (gScenarioObjectiveYear * MONTH_COUNT) - 1;
gfx_draw_string_left(dpi, STR_WINDOW_OBJECTIVE_VALUE_DATE, &arg, COLOUR_BLACK, x, y);
}
// Park name
x = w->x + 8;
y = w->y + w->widgets[WIDX_PARK_NAME].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_PARK_NAME].top;
width = w->widgets[WIDX_PARK_NAME].left - 16;
{
@ -961,8 +963,8 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi
}
// Scenario name
x = w->x + 8;
y = w->y + w->widgets[WIDX_SCENARIO_NAME].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_SCENARIO_NAME].top;
width = w->widgets[WIDX_SCENARIO_NAME].left - 16;
set_format_arg(0, rct_string_id, STR_STRING);
@ -971,13 +973,13 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi
gfx_draw_string_left_clipped(dpi, STR_WINDOW_SCENARIO_NAME, gCommonFormatArgs, COLOUR_BLACK, x, y, width);
// Scenario details label
x = w->x + 8;
y = w->y + w->widgets[WIDX_DETAILS].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_DETAILS].top;
gfx_draw_string_left(dpi, STR_WINDOW_PARK_DETAILS, nullptr, COLOUR_BLACK, x, y);
// Scenario details value
x = w->x + 16;
y = w->y + w->widgets[WIDX_DETAILS].top + 10;
x = w->windowPos.x + 16;
y = w->windowPos.y + w->widgets[WIDX_DETAILS].top + 10;
width = w->widgets[WIDX_DETAILS].left - 4;
set_format_arg(0, rct_string_id, STR_STRING);
@ -986,13 +988,13 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi
gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, x, y, width, STR_BLACK_STRING, COLOUR_BLACK);
// Scenario category label
x = w->x + 8;
y = w->y + w->widgets[WIDX_CATEGORY].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_CATEGORY].top;
gfx_draw_string_left(dpi, STR_WINDOW_SCENARIO_GROUP, nullptr, COLOUR_BLACK, x, y);
// Scenario category value
x = w->x + w->widgets[WIDX_CATEGORY].left + 1;
y = w->y + w->widgets[WIDX_CATEGORY].top;
x = w->windowPos.x + w->widgets[WIDX_CATEGORY].left + 1;
y = w->windowPos.y + w->widgets[WIDX_CATEGORY].top;
stringId = ScenarioCategoryStringIds[gS6Info.category];
gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, x, y);
}
@ -1135,7 +1137,8 @@ static void window_editor_objective_options_rides_paint(rct_window* w, rct_drawp
window_editor_objective_options_draw_tab_images(w, dpi);
gfx_draw_string_left(
dpi, STR_WINDOW_PRESERVATION_ORDER, nullptr, COLOUR_BLACK, w->x + 6, w->y + w->widgets[WIDX_PAGE_BACKGROUND].top + 3);
dpi, STR_WINDOW_PRESERVATION_ORDER, nullptr, COLOUR_BLACK, w->windowPos.x + 6,
w->windowPos.y + w->widgets[WIDX_PAGE_BACKGROUND].top + 3);
}
/**

View File

@ -439,7 +439,7 @@ static void window_editor_scenario_options_draw_tab_images(rct_window* w, rct_dr
if (w->page == WINDOW_EDITOR_SCENARIO_OPTIONS_PAGE_FINANCIAL)
spriteIndex += (w->frame_no / 2) % 8;
gfx_draw_sprite(dpi, spriteIndex, w->x + widget->left, w->y + widget->top, 0);
gfx_draw_sprite(dpi, spriteIndex, w->windowPos.x + widget->left, w->windowPos.y + widget->top, 0);
// Tab 2
widget = &w->widgets[WIDX_TAB_2];
@ -447,12 +447,12 @@ static void window_editor_scenario_options_draw_tab_images(rct_window* w, rct_dr
if (w->page == WINDOW_EDITOR_SCENARIO_OPTIONS_PAGE_GUESTS)
spriteIndex += (w->frame_no / 4) % 8;
gfx_draw_sprite(dpi, spriteIndex, w->x + widget->left, w->y + widget->top, 0);
gfx_draw_sprite(dpi, spriteIndex, w->windowPos.x + widget->left, w->windowPos.y + widget->top, 0);
// Tab 3
widget = &w->widgets[WIDX_TAB_3];
spriteIndex = SPR_TAB_PARK;
gfx_draw_sprite(dpi, spriteIndex, w->x + widget->left, w->y + widget->top, 0);
gfx_draw_sprite(dpi, spriteIndex, w->windowPos.x + widget->left, w->windowPos.y + widget->top, 0);
}
/**
@ -547,8 +547,9 @@ static void window_editor_scenario_options_show_climate_dropdown(rct_window* w)
gDropdownItemsArgs[i] = ClimateNames[i];
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, CLIMATE_COUNT, dropdownWidget->right - dropdownWidget->left - 3);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, CLIMATE_COUNT,
dropdownWidget->right - dropdownWidget->left - 3);
dropdown_set_checked(gClimate, true);
}
@ -747,45 +748,45 @@ static void window_editor_scenario_options_financial_paint(rct_window* w, rct_dr
if (w->widgets[WIDX_INITIAL_CASH].type != WWT_EMPTY)
{
x = w->x + 8;
y = w->y + w->widgets[WIDX_INITIAL_CASH].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_INITIAL_CASH].top;
gfx_draw_string_left(dpi, STR_INIT_CASH_LABEL, nullptr, COLOUR_BLACK, x, y);
x = w->x + w->widgets[WIDX_INITIAL_CASH].left + 1;
y = w->y + w->widgets[WIDX_INITIAL_CASH].top;
x = w->windowPos.x + w->widgets[WIDX_INITIAL_CASH].left + 1;
y = w->windowPos.y + w->widgets[WIDX_INITIAL_CASH].top;
gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &gInitialCash, COLOUR_BLACK, x, y);
}
if (w->widgets[WIDX_INITIAL_LOAN].type != WWT_EMPTY)
{
x = w->x + 8;
y = w->y + w->widgets[WIDX_INITIAL_LOAN].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_INITIAL_LOAN].top;
gfx_draw_string_left(dpi, STR_INIT_LOAN_LABEL, nullptr, COLOUR_BLACK, x, y);
x = w->x + w->widgets[WIDX_INITIAL_LOAN].left + 1;
y = w->y + w->widgets[WIDX_INITIAL_LOAN].top;
x = w->windowPos.x + w->widgets[WIDX_INITIAL_LOAN].left + 1;
y = w->windowPos.y + w->widgets[WIDX_INITIAL_LOAN].top;
gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &gBankLoan, COLOUR_BLACK, x, y);
}
if (w->widgets[WIDX_MAXIMUM_LOAN].type != WWT_EMPTY)
{
x = w->x + 8;
y = w->y + w->widgets[WIDX_MAXIMUM_LOAN].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_MAXIMUM_LOAN].top;
gfx_draw_string_left(dpi, STR_MAX_LOAN_LABEL, nullptr, COLOUR_BLACK, x, y);
x = w->x + w->widgets[WIDX_MAXIMUM_LOAN].left + 1;
y = w->y + w->widgets[WIDX_MAXIMUM_LOAN].top;
x = w->windowPos.x + w->widgets[WIDX_MAXIMUM_LOAN].left + 1;
y = w->windowPos.y + w->widgets[WIDX_MAXIMUM_LOAN].top;
gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &gMaxBankLoan, COLOUR_BLACK, x, y);
}
if (w->widgets[WIDX_INTEREST_RATE].type != WWT_EMPTY)
{
x = w->x + 8;
y = w->y + w->widgets[WIDX_INTEREST_RATE].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_INTEREST_RATE].top;
gfx_draw_string_left(dpi, STR_INTEREST_RATE_LABEL, nullptr, COLOUR_BLACK, x, y);
x = w->x + w->widgets[WIDX_INTEREST_RATE].left + 1;
y = w->y + w->widgets[WIDX_INTEREST_RATE].top;
x = w->windowPos.x + w->widgets[WIDX_INTEREST_RATE].left + 1;
y = w->windowPos.y + w->widgets[WIDX_INTEREST_RATE].top;
int16_t interestRate = std::clamp<int16_t>((int16_t)gBankLoanInterestRate, INT16_MIN, INT16_MAX);
gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &interestRate, COLOUR_BLACK, x, y);
@ -1028,47 +1029,47 @@ static void window_editor_scenario_options_guests_paint(rct_window* w, rct_drawp
if (w->widgets[WIDX_CASH_PER_GUEST].type != WWT_EMPTY)
{
// Cash per guest label
x = w->x + 8;
y = w->y + w->widgets[WIDX_CASH_PER_GUEST].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_CASH_PER_GUEST].top;
gfx_draw_string_left(dpi, STR_CASH_PER_GUEST_LABEL, nullptr, COLOUR_BLACK, x, y);
// Cash per guest value
x = w->x + w->widgets[WIDX_CASH_PER_GUEST].left + 1;
y = w->y + w->widgets[WIDX_CASH_PER_GUEST].top;
x = w->windowPos.x + w->widgets[WIDX_CASH_PER_GUEST].left + 1;
y = w->windowPos.y + w->widgets[WIDX_CASH_PER_GUEST].top;
arg = gGuestInitialCash;
gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y);
}
// Guest initial happiness label
x = w->x + 8;
y = w->y + w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].top;
gfx_draw_string_left(dpi, STR_GUEST_INIT_HAPPINESS, nullptr, COLOUR_BLACK, x, y);
// Guest initial happiness value
x = w->x + w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].left + 1;
y = w->y + w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].top;
x = w->windowPos.x + w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].left + 1;
y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].top;
arg = (gGuestInitialHappiness * 100) / 255;
gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y);
// Guest initial hunger label
x = w->x + 8;
y = w->y + w->widgets[WIDX_GUEST_INITIAL_HUNGER].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_HUNGER].top;
gfx_draw_string_left(dpi, STR_GUEST_INIT_HUNGER, nullptr, COLOUR_BLACK, x, y);
// Guest initial hunger value
x = w->x + w->widgets[WIDX_GUEST_INITIAL_HUNGER].left + 1;
y = w->y + w->widgets[WIDX_GUEST_INITIAL_HUNGER].top;
x = w->windowPos.x + w->widgets[WIDX_GUEST_INITIAL_HUNGER].left + 1;
y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_HUNGER].top;
arg = ((255 - gGuestInitialHunger) * 100) / 255;
gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y);
// Guest initial thirst label
x = w->x + 8;
y = w->y + w->widgets[WIDX_GUEST_INITIAL_THIRST].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_THIRST].top;
gfx_draw_string_left(dpi, STR_GUEST_INIT_THIRST, nullptr, COLOUR_BLACK, x, y);
// Guest initial thirst value
x = w->x + w->widgets[WIDX_GUEST_INITIAL_THIRST].left + 1;
y = w->y + w->widgets[WIDX_GUEST_INITIAL_THIRST].top;
x = w->windowPos.x + w->widgets[WIDX_GUEST_INITIAL_THIRST].left + 1;
y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_THIRST].top;
arg = ((255 - gGuestInitialThirst) * 100) / 255;
gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y);
}
@ -1245,8 +1246,9 @@ static void window_editor_scenario_options_park_mousedown(rct_window* w, rct_wid
gDropdownItemsArgs[2] = STR_PAID_ENTRY_PAID_RIDES;
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top - 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 3, dropdownWidget->right - dropdownWidget->left - 3);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top - 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 3,
dropdownWidget->right - dropdownWidget->left - 3);
if (gParkFlags & PARK_FLAGS_UNLOCK_ALL_PRICES)
dropdown_set_checked(2, true);
@ -1392,13 +1394,13 @@ static void window_editor_scenario_options_park_paint(rct_window* w, rct_drawpix
if (w->widgets[WIDX_LAND_COST].type != WWT_EMPTY)
{
// Cost to buy land label
x = w->x + 8;
y = w->y + w->widgets[WIDX_LAND_COST].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_LAND_COST].top;
gfx_draw_string_left(dpi, STR_LAND_COST_LABEL, nullptr, COLOUR_BLACK, x, y);
// Cost to buy land value
x = w->x + w->widgets[WIDX_LAND_COST].left + 1;
y = w->y + w->widgets[WIDX_LAND_COST].top;
x = w->windowPos.x + w->widgets[WIDX_LAND_COST].left + 1;
y = w->windowPos.y + w->widgets[WIDX_LAND_COST].top;
arg = gLandPrice;
gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y);
}
@ -1406,13 +1408,13 @@ static void window_editor_scenario_options_park_paint(rct_window* w, rct_drawpix
if (w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].type != WWT_EMPTY)
{
// Cost to buy construction rights label
x = w->x + 8;
y = w->y + w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].top;
gfx_draw_string_left(dpi, STR_RIGHTS_COST_LABEL, nullptr, COLOUR_BLACK, x, y);
// Cost to buy construction rights value
x = w->x + w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].left + 1;
y = w->y + w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].top;
x = w->windowPos.x + w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].left + 1;
y = w->windowPos.y + w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].top;
arg = gConstructionRightsPrice;
gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y);
}
@ -1420,8 +1422,8 @@ static void window_editor_scenario_options_park_paint(rct_window* w, rct_drawpix
if (w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].type != WWT_EMPTY)
{
// Pay for park or rides label
x = w->x + w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].left + 1;
y = w->y + w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].top;
x = w->windowPos.x + w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].left + 1;
y = w->windowPos.y + w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].top;
gfx_draw_string_left(dpi, STR_FREE_PARK_ENTER, nullptr, COLOUR_BLACK, x, y);
// Pay for park and/or rides value
@ -1438,25 +1440,25 @@ static void window_editor_scenario_options_park_paint(rct_window* w, rct_drawpix
if (w->widgets[WIDX_ENTRY_PRICE].type != WWT_EMPTY)
{
// Entry price label
x = w->x + w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].right + 8;
y = w->y + w->widgets[WIDX_ENTRY_PRICE].top;
x = w->windowPos.x + w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].right + 8;
y = w->windowPos.y + w->widgets[WIDX_ENTRY_PRICE].top;
gfx_draw_string_left(dpi, STR_ENTRY_PRICE_LABEL, nullptr, COLOUR_BLACK, x, y);
// Entry price value
x = w->x + w->widgets[WIDX_ENTRY_PRICE].left + 1;
y = w->y + w->widgets[WIDX_ENTRY_PRICE].top;
x = w->windowPos.x + w->widgets[WIDX_ENTRY_PRICE].left + 1;
y = w->windowPos.y + w->widgets[WIDX_ENTRY_PRICE].top;
arg = gParkEntranceFee;
gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y);
}
// Climate label
x = w->x + 8;
y = w->y + w->widgets[WIDX_CLIMATE].top;
x = w->windowPos.x + 8;
y = w->windowPos.y + w->widgets[WIDX_CLIMATE].top;
gfx_draw_string_left(dpi, STR_CLIMATE_LABEL, nullptr, COLOUR_BLACK, x, y);
// Climate value
x = w->x + w->widgets[WIDX_CLIMATE].left + 1;
y = w->y + w->widgets[WIDX_CLIMATE].top;
x = w->windowPos.x + w->widgets[WIDX_CLIMATE].left + 1;
y = w->windowPos.y + w->widgets[WIDX_CLIMATE].top;
stringId = ClimateNames[gClimate];
gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, x, y);
}

View File

@ -141,7 +141,7 @@ rct_window* window_error_open(rct_string_id title, rct_string_id message)
w->error.var_480 = 0;
if (!gDisableErrorWindowSound)
{
audio_play_sound(SoundId::Error, 0, w->x + (w->width / 2));
audio_play_sound(SoundId::Error, 0, w->windowPos.x + (w->width / 2));
}
return w;
@ -166,10 +166,10 @@ static void window_error_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
int32_t t, l, r, b;
l = w->x;
t = w->y;
r = w->x + w->width - 1;
b = w->y + w->height - 1;
l = w->windowPos.x;
t = w->windowPos.y;
r = w->windowPos.x + w->width - 1;
b = w->windowPos.y + w->height - 1;
gfx_filter_rect(dpi, l + 1, t + 1, r - 1, b - 1, PALETTE_45);
gfx_filter_rect(dpi, l, t, r, b, PALETTE_GLASS_SATURATED_RED);
@ -184,7 +184,7 @@ static void window_error_paint(rct_window* w, rct_drawpixelinfo* dpi)
gfx_filter_rect(dpi, l + 1, b - 1, l + 1, b - 1, PALETTE_DARKEN_3);
gfx_filter_rect(dpi, r - 1, b - 1, r - 1, b - 1, PALETTE_DARKEN_3);
l = w->x + (w->width + 1) / 2 - 1;
t = w->y + 1;
l = w->windowPos.x + (w->width + 1) / 2 - 1;
t = w->windowPos.y + 1;
draw_string_centred_raw(dpi, l, t, _window_error_num_lines, _window_error_text);
}

View File

@ -670,8 +670,8 @@ static void window_finances_summary_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_draw_widgets(w, dpi);
window_finances_draw_tab_images(dpi, w);
int32_t x = w->x + 8;
int32_t y = w->y + 51;
int32_t x = w->windowPos.x + 8;
int32_t y = w->windowPos.y + 51;
// Expenditure / Income heading
draw_string_left_underline(dpi, STR_FINANCES_SUMMARY_EXPENDITURE_INCOME, nullptr, COLOUR_BLACK, x, y);
@ -689,16 +689,19 @@ static void window_finances_summary_paint(rct_window* w, rct_drawpixelinfo* dpi)
}
// Horizontal rule below expenditure / income table
gfx_fill_rect_inset(dpi, w->x + 8, w->y + 272, w->x + 8 + 513, w->y + 272 + 1, w->colours[1], INSET_RECT_FLAG_BORDER_INSET);
gfx_fill_rect_inset(
dpi, w->windowPos.x + 8, w->windowPos.y + 272, w->windowPos.x + 8 + 513, w->windowPos.y + 272 + 1, w->colours[1],
INSET_RECT_FLAG_BORDER_INSET);
// Loan and interest rate
gfx_draw_string_left(dpi, STR_FINANCES_SUMMARY_LOAN, nullptr, COLOUR_BLACK, w->x + 8, w->y + 279);
gfx_draw_string_left(dpi, STR_FINANCES_SUMMARY_LOAN, nullptr, COLOUR_BLACK, w->windowPos.x + 8, w->windowPos.y + 279);
set_format_arg(0, uint16_t, gBankLoanInterestRate);
gfx_draw_string_left(dpi, STR_FINANCES_SUMMARY_AT_X_PER_YEAR, gCommonFormatArgs, COLOUR_BLACK, w->x + 167, w->y + 279);
gfx_draw_string_left(
dpi, STR_FINANCES_SUMMARY_AT_X_PER_YEAR, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + 167, w->windowPos.y + 279);
// Current cash
rct_string_id stringId = gCash >= 0 ? STR_CASH_LABEL : STR_CASH_NEGATIVE_LABEL;
gfx_draw_string_left(dpi, stringId, &gCash, COLOUR_BLACK, w->x + 8, w->y + 294);
gfx_draw_string_left(dpi, stringId, &gCash, COLOUR_BLACK, w->windowPos.x + 8, w->windowPos.y + 294);
// Objective related financial information
if (gScenarioObjectiveType == OBJECTIVE_MONTHLY_FOOD_INCOME)
@ -706,14 +709,15 @@ static void window_finances_summary_paint(rct_window* w, rct_drawpixelinfo* dpi)
money32 lastMonthProfit = finance_get_last_month_shop_profit();
set_format_arg(0, money32, lastMonthProfit);
gfx_draw_string_left(
dpi, STR_LAST_MONTH_PROFIT_FROM_FOOD_DRINK_MERCHANDISE_SALES_LABEL, gCommonFormatArgs, COLOUR_BLACK, w->x + 280,
w->y + 279);
dpi, STR_LAST_MONTH_PROFIT_FROM_FOOD_DRINK_MERCHANDISE_SALES_LABEL, gCommonFormatArgs, COLOUR_BLACK,
w->windowPos.x + 280, w->windowPos.y + 279);
}
else
{
// Park value and company value
gfx_draw_string_left(dpi, STR_PARK_VALUE_LABEL, &gParkValue, COLOUR_BLACK, w->x + 280, w->y + 279);
gfx_draw_string_left(dpi, STR_COMPANY_VALUE_LABEL, &gCompanyValue, COLOUR_BLACK, w->x + 280, w->y + 294);
gfx_draw_string_left(dpi, STR_PARK_VALUE_LABEL, &gParkValue, COLOUR_BLACK, w->windowPos.x + 280, w->windowPos.y + 279);
gfx_draw_string_left(
dpi, STR_COMPANY_VALUE_LABEL, &gCompanyValue, COLOUR_BLACK, w->windowPos.x + 280, w->windowPos.y + 294);
}
}
@ -837,10 +841,10 @@ static void window_finances_financial_graph_paint(rct_window* w, rct_drawpixelin
window_finances_draw_tab_images(dpi, w);
rct_widget* pageWidget = &_windowFinancesCashWidgets[WIDX_PAGE_BACKGROUND];
graphLeft = w->x + pageWidget->left + 4;
graphTop = w->y + pageWidget->top + 15;
graphRight = w->x + pageWidget->right - 4;
graphBottom = w->y + pageWidget->bottom - 4;
graphLeft = w->windowPos.x + pageWidget->left + 4;
graphTop = w->windowPos.y + pageWidget->top + 15;
graphRight = w->windowPos.x + pageWidget->right - 4;
graphBottom = w->windowPos.y + pageWidget->bottom - 4;
// Cash (less loan)
money32 cashLessLoan = gCash - gBankLoan;
@ -944,10 +948,10 @@ static void window_finances_park_value_graph_paint(rct_window* w, rct_drawpixeli
window_finances_draw_tab_images(dpi, w);
rct_widget* pageWidget = &_windowFinancesCashWidgets[WIDX_PAGE_BACKGROUND];
graphLeft = w->x + pageWidget->left + 4;
graphTop = w->y + pageWidget->top + 15;
graphRight = w->x + pageWidget->right - 4;
graphBottom = w->y + pageWidget->bottom - 4;
graphLeft = w->windowPos.x + pageWidget->left + 4;
graphTop = w->windowPos.y + pageWidget->top + 15;
graphRight = w->windowPos.x + pageWidget->right - 4;
graphBottom = w->windowPos.y + pageWidget->bottom - 4;
// Park value
money32 parkValue = gParkValue;
@ -1046,10 +1050,10 @@ static void window_finances_profit_graph_paint(rct_window* w, rct_drawpixelinfo*
window_finances_draw_tab_images(dpi, w);
rct_widget* pageWidget = &_windowFinancesCashWidgets[WIDX_PAGE_BACKGROUND];
graphLeft = w->x + pageWidget->left + 4;
graphTop = w->y + pageWidget->top + 15;
graphRight = w->x + pageWidget->right - 4;
graphBottom = w->y + pageWidget->bottom - 4;
graphLeft = w->windowPos.x + pageWidget->left + 4;
graphTop = w->windowPos.y + pageWidget->top + 15;
graphRight = w->windowPos.x + pageWidget->right - 4;
graphBottom = w->windowPos.y + pageWidget->bottom - 4;
// Weekly profit
money32 weeklyPofit = gCurrentProfit;
@ -1176,8 +1180,8 @@ static void window_finances_marketing_paint(rct_window* w, rct_drawpixelinfo* dp
window_draw_widgets(w, dpi);
window_finances_draw_tab_images(dpi, w);
int32_t x = w->x + 8;
int32_t y = w->y + 62;
int32_t x = w->windowPos.x + 8;
int32_t y = w->windowPos.y + 62;
int32_t noCampaignsActive = 1;
for (int32_t i = 0; i < ADVERTISING_CAMPAIGN_COUNT; i++)
{
@ -1311,8 +1315,9 @@ static void window_finances_research_mousedown(rct_window* w, rct_widgetindex wi
gDropdownItemsArgs[i] = ResearchFundingLevelNames[i];
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4, dropdownWidget->right - dropdownWidget->left - 3);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4,
dropdownWidget->right - dropdownWidget->left - 3);
int32_t currentResearchLevel = gResearchFundingLevel;
dropdown_set_checked(currentResearchLevel, true);
@ -1479,7 +1484,8 @@ static void window_finances_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w
spriteIndex += frame;
}
gfx_draw_sprite(dpi, spriteIndex, w->x + w->widgets[widgetIndex].left, w->y + w->widgets[widgetIndex].top, 0);
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
}
}

View File

@ -616,19 +616,21 @@ static void window_footpath_paint(rct_window* w, rct_drawpixelinfo* dpi)
image += pathType->image;
// Draw construction image
int32_t x = w->x + (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2;
int32_t y = w->y + window_footpath_widgets[WIDX_CONSTRUCT].bottom - 60;
int32_t x = w->windowPos.x
+ (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2;
int32_t y = w->windowPos.y + window_footpath_widgets[WIDX_CONSTRUCT].bottom - 60;
gfx_draw_sprite(dpi, image, x, y, 0);
// Draw build this... label
x = w->x + (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2;
y = w->y + window_footpath_widgets[WIDX_CONSTRUCT].bottom - 23;
x = w->windowPos.x + (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2;
y = w->windowPos.y + window_footpath_widgets[WIDX_CONSTRUCT].bottom - 23;
gfx_draw_string_centred(dpi, STR_BUILD_THIS, x, y, COLOUR_BLACK, nullptr);
}
// Draw cost
int32_t x = w->x + (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2;
int32_t y = w->y + window_footpath_widgets[WIDX_CONSTRUCT].bottom - 12;
int32_t x = w->windowPos.x
+ (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2;
int32_t y = w->windowPos.y + window_footpath_widgets[WIDX_CONSTRUCT].bottom - 12;
if (_window_footpath_cost != MONEY32_UNDEFINED)
{
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
@ -676,8 +678,8 @@ static void window_footpath_show_footpath_types_dialog(rct_window* w, rct_widget
}
window_dropdown_show_image(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0, numPathTypes, 47, 36,
gAppropriateImageDropdownItemsPerRow[numPathTypes]);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
numPathTypes, 47, 36, gAppropriateImageDropdownItemsPerRow[numPathTypes]);
}
/**

View File

@ -244,7 +244,7 @@ static void window_game_bottom_toolbar_invalidate(rct_window* w)
// Reset dimensions as appropriate -- in case we're switching languages.
w->height = line_height * 2 + 12;
w->y = context_get_height() - w->height;
w->windowPos.y = context_get_height() - w->height;
// Change height of widgets in accordance with line height.
w->widgets[WIDX_LEFT_OUTSET].bottom = w->widgets[WIDX_MIDDLE_OUTSET].bottom = w->widgets[WIDX_RIGHT_OUTSET].bottom
@ -370,24 +370,24 @@ static void window_game_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* d
{
// Draw panel grey backgrounds
gfx_filter_rect(
dpi, w->x + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].left,
w->y + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].top,
w->x + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].right,
w->y + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].bottom, PALETTE_51);
dpi, w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].left,
w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].top,
w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].right,
w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].bottom, PALETTE_51);
gfx_filter_rect(
dpi, w->x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].left,
w->y + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].top,
w->x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].right,
w->y + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].bottom, PALETTE_51);
dpi, w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].left,
w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].top,
w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].right,
w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].bottom, PALETTE_51);
if (theme_get_flags() & UITHEME_FLAG_USE_FULL_BOTTOM_TOOLBAR)
{
// Draw grey background
gfx_filter_rect(
dpi, w->x + window_game_bottom_toolbar_widgets[WIDX_MIDDLE_OUTSET].left,
w->y + window_game_bottom_toolbar_widgets[WIDX_MIDDLE_OUTSET].top,
w->x + window_game_bottom_toolbar_widgets[WIDX_MIDDLE_OUTSET].right,
w->y + window_game_bottom_toolbar_widgets[WIDX_MIDDLE_OUTSET].bottom, PALETTE_51);
dpi, w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_MIDDLE_OUTSET].left,
w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_MIDDLE_OUTSET].top,
w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_MIDDLE_OUTSET].right,
w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_MIDDLE_OUTSET].bottom, PALETTE_51);
}
window_draw_widgets(w, dpi);
@ -409,10 +409,10 @@ static void window_game_bottom_toolbar_draw_left_panel(rct_drawpixelinfo* dpi, r
{
// Draw green inset rectangle on panel
gfx_fill_rect_inset(
dpi, w->x + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].left + 1,
w->y + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].top + 1,
w->x + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].right - 1,
w->y + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].bottom - 1, w->colours[1], INSET_RECT_F_30);
dpi, w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].left + 1,
w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].top + 1,
w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].right - 1,
w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_LEFT_OUTSET].bottom - 1, w->colours[1], INSET_RECT_F_30);
// Figure out how much line height we have to work with.
uint32_t line_height = font_get_line_height(FONT_SPRITE_BASE_MEDIUM);
@ -421,8 +421,8 @@ static void window_game_bottom_toolbar_draw_left_panel(rct_drawpixelinfo* dpi, r
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
{
rct_widget widget = window_game_bottom_toolbar_widgets[WIDX_MONEY];
int32_t x = w->x + (widget.left + widget.right) / 2;
int32_t y = w->y + (widget.top + widget.bottom) / 2 - (line_height == 10 ? 5 : 6);
int32_t x = w->windowPos.x + (widget.left + widget.right) / 2;
int32_t y = w->windowPos.y + (widget.top + widget.bottom) / 2 - (line_height == 10 ? 5 : 6);
set_format_arg(0, money32, gCash);
gfx_draw_string_centred(
@ -448,8 +448,8 @@ static void window_game_bottom_toolbar_draw_left_panel(rct_drawpixelinfo* dpi, r
// Draw guests
{
rct_widget widget = window_game_bottom_toolbar_widgets[WIDX_GUESTS];
int32_t x = w->x + (widget.left + widget.right) / 2;
int32_t y = w->y + (widget.top + widget.bottom) / 2 - 6;
int32_t x = w->windowPos.x + (widget.left + widget.right) / 2;
int32_t y = w->windowPos.y + (widget.top + widget.bottom) / 2 - 6;
gfx_draw_string_centred(
dpi,
@ -464,8 +464,8 @@ static void window_game_bottom_toolbar_draw_left_panel(rct_drawpixelinfo* dpi, r
// Draw park rating
{
rct_widget widget = window_game_bottom_toolbar_widgets[WIDX_PARK_RATING];
int32_t x = w->x + widget.left + 11;
int32_t y = w->y + (widget.top + widget.bottom) / 2 - 5;
int32_t x = w->windowPos.x + widget.left + 11;
int32_t y = w->windowPos.y + (widget.top + widget.bottom) / 2 - 5;
window_game_bottom_toolbar_draw_park_rating(dpi, w, w->colours[3], x, y, std::max(10, ((gParkRating / 4) * 263) / 256));
}
@ -497,16 +497,16 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi,
{
// Draw green inset rectangle on panel
gfx_fill_rect_inset(
dpi, w->x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].left + 1,
w->y + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].top + 1,
w->x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].right - 1,
w->y + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].bottom - 1, w->colours[1], INSET_RECT_F_30);
dpi, w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].left + 1,
w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].top + 1,
w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].right - 1,
w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].bottom - 1, w->colours[1], INSET_RECT_F_30);
int32_t x = (window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].left
+ window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].right)
/ 2
+ w->x;
int32_t y = window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].top + w->y + 2;
+ w->windowPos.x;
int32_t y = window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].top + w->windowPos.y + 2;
// Date
int32_t year = date_get_year(gDateMonthsElapsed) + 1;
@ -528,7 +528,7 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi,
uint32_t line_height = font_get_line_height(FONT_SPRITE_BASE_MEDIUM);
// Temperature
x = w->x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].left + 15;
x = w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].left + 15;
y += line_height + 1;
int32_t temperature = gClimateCurrent.Temperature;
@ -573,19 +573,20 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rc
// Current news item
gfx_fill_rect_inset(
dpi, w->x + middleOutsetWidget->left + 1, w->y + middleOutsetWidget->top + 1, w->x + middleOutsetWidget->right - 1,
w->y + middleOutsetWidget->bottom - 1, w->colours[2], INSET_RECT_F_30);
dpi, w->windowPos.x + middleOutsetWidget->left + 1, w->windowPos.y + middleOutsetWidget->top + 1,
w->windowPos.x + middleOutsetWidget->right - 1, w->windowPos.y + middleOutsetWidget->bottom - 1, w->colours[2],
INSET_RECT_F_30);
// Text
utf8* newsItemText = newsItem->Text;
x = w->x + (middleOutsetWidget->left + middleOutsetWidget->right) / 2;
y = w->y + middleOutsetWidget->top + 11;
x = w->windowPos.x + (middleOutsetWidget->left + middleOutsetWidget->right) / 2;
y = w->windowPos.y + middleOutsetWidget->top + 11;
width = middleOutsetWidget->right - middleOutsetWidget->left - 62;
gfx_draw_string_centred_wrapped_partial(
dpi, x, y, width, COLOUR_BRIGHT_GREEN, STR_BOTTOM_TOOLBAR_NEWS_TEXT, &newsItemText, newsItem->Ticks);
x = w->x + window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].left;
y = w->y + window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].top;
x = w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].left;
y = w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].top;
switch (newsItem->Type)
{
case NEWS_ITEM_RIDE:
@ -666,14 +667,15 @@ static void window_game_bottom_toolbar_draw_middle_panel(rct_drawpixelinfo* dpi,
rct_widget* middleOutsetWidget = &window_game_bottom_toolbar_widgets[WIDX_MIDDLE_OUTSET];
gfx_fill_rect_inset(
dpi, w->x + middleOutsetWidget->left + 1, w->y + middleOutsetWidget->top + 1, w->x + middleOutsetWidget->right - 1,
w->y + middleOutsetWidget->bottom - 1, w->colours[1], INSET_RECT_F_30);
dpi, w->windowPos.x + middleOutsetWidget->left + 1, w->windowPos.y + middleOutsetWidget->top + 1,
w->windowPos.x + middleOutsetWidget->right - 1, w->windowPos.y + middleOutsetWidget->bottom - 1, w->colours[1],
INSET_RECT_F_30);
// Figure out how much line height we have to work with.
uint32_t line_height = font_get_line_height(FONT_SPRITE_BASE_MEDIUM);
int32_t x = w->x + (middleOutsetWidget->left + middleOutsetWidget->right) / 2;
int32_t y = w->y + middleOutsetWidget->top + line_height + 1;
int32_t x = w->windowPos.x + (middleOutsetWidget->left + middleOutsetWidget->right) / 2;
int32_t y = w->windowPos.y + middleOutsetWidget->top + line_height + 1;
int32_t width = middleOutsetWidget->right - middleOutsetWidget->left - 62;
// Check if there is a map tooltip to draw

View File

@ -824,7 +824,7 @@ void window_guest_viewport_init(rct_window* w)
if (peep->state != PEEP_STATE_PICKED && w->viewport == nullptr)
{
auto view_widget = &w->widgets[WIDX_VIEWPORT];
auto screenPos = ScreenCoordsXY{ view_widget->left + 1 + w->x, view_widget->top + 1 + w->y };
auto screenPos = ScreenCoordsXY{ view_widget->left + 1 + w->windowPos.x, view_widget->top + 1 + w->windowPos.y };
int32_t width = view_widget->right - view_widget->left - 1;
int32_t height = view_widget->bottom - view_widget->top - 1;
@ -856,8 +856,8 @@ static void window_guest_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dp
rct_widget* widget = &w->widgets[WIDX_TAB_1];
int32_t width = widget->right - widget->left - 1;
int32_t height = widget->bottom - widget->top - 1;
int32_t x = widget->left + 1 + w->x;
int32_t y = widget->top + 1 + w->y;
int32_t x = widget->left + 1 + w->windowPos.x;
int32_t y = widget->top + 1 + w->windowPos.y;
if (w->page == WINDOW_GUEST_OVERVIEW)
height++;
@ -924,8 +924,8 @@ static void window_guest_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
return;
rct_widget* widget = &w->widgets[WIDX_TAB_2];
int32_t x = widget->left + w->x;
int32_t y = widget->top + w->y;
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
Peep* peep = GET_PEEP(w->number);
int32_t image_id = get_peep_face_sprite_large(peep);
@ -959,8 +959,8 @@ static void window_guest_rides_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
return;
rct_widget* widget = &w->widgets[WIDX_TAB_3];
int32_t x = widget->left + w->x;
int32_t y = widget->top + w->y;
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t image_id = SPR_TAB_RIDE_0;
@ -982,8 +982,8 @@ static void window_guest_finance_tab_paint(rct_window* w, rct_drawpixelinfo* dpi
return;
rct_widget* widget = &w->widgets[WIDX_TAB_4];
int32_t x = widget->left + w->x;
int32_t y = widget->top + w->y;
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t image_id = SPR_TAB_FINANCES_SUMMARY_0;
@ -1005,8 +1005,8 @@ static void window_guest_thoughts_tab_paint(rct_window* w, rct_drawpixelinfo* dp
return;
rct_widget* widget = &w->widgets[WIDX_TAB_5];
int32_t x = widget->left + w->x;
int32_t y = widget->top + w->y;
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t image_id = SPR_TAB_THOUGHTS_0;
@ -1028,8 +1028,8 @@ static void window_guest_inventory_tab_paint(rct_window* w, rct_drawpixelinfo* d
return;
rct_widget* widget = &w->widgets[WIDX_TAB_6];
int32_t x = widget->left + w->x;
int32_t y = widget->top + w->y;
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t image_id = SPR_TAB_GUEST_INVENTORY;
@ -1042,8 +1042,8 @@ static void window_guest_debug_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
return;
rct_widget* widget = &w->widgets[WIDX_TAB_7];
int32_t x = widget->left + w->x;
int32_t y = widget->top + w->y;
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t image_id = SPR_TAB_GEARS_0;
if (w->page == WINDOW_GUEST_DEBUG)
@ -1076,7 +1076,7 @@ void window_guest_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
rct_viewport* viewport = w->viewport;
if (viewport->flags & VIEWPORT_FLAG_SOUND_ON)
{
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->x + 2, w->y + 2, 0);
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos.x + 2, w->windowPos.y + 2, 0);
}
}
@ -1084,16 +1084,16 @@ void window_guest_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
Peep* peep = GET_PEEP(w->number);
peep->FormatActionTo(gCommonFormatArgs);
rct_widget* widget = &w->widgets[WIDX_ACTION_LBL];
int32_t x = (widget->left + widget->right) / 2 + w->x;
int32_t y = w->y + widget->top - 1;
int32_t x = (widget->left + widget->right) / 2 + w->windowPos.x;
int32_t y = w->windowPos.y + widget->top - 1;
int32_t width = widget->right - widget->left;
gfx_draw_string_centred_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, x, y, width);
// Draw the marquee thought
widget = &w->widgets[WIDX_MARQUEE];
width = widget->right - widget->left - 3;
int32_t left = widget->left + 2 + w->x;
int32_t top = widget->top + w->y;
int32_t left = widget->left + 2 + w->windowPos.x;
int32_t top = widget->top + w->windowPos.y;
int32_t height = widget->bottom - widget->top;
rct_drawpixelinfo dpi_marquee;
if (!clip_drawpixelinfo(&dpi_marquee, dpi, left, top, width, height))
@ -1396,9 +1396,9 @@ void window_guest_stats_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Not sure why this is not stats widgets
// cx
int32_t x = w->x + window_guest_rides_widgets[WIDX_PAGE_BACKGROUND].left + 4;
int32_t x = w->windowPos.x + window_guest_rides_widgets[WIDX_PAGE_BACKGROUND].left + 4;
// dx
int32_t y = w->y + window_guest_rides_widgets[WIDX_PAGE_BACKGROUND].top + 4;
int32_t y = w->windowPos.y + window_guest_rides_widgets[WIDX_PAGE_BACKGROUND].top + 4;
// Happiness
gfx_draw_string_left(dpi, STR_GUEST_STAT_HAPPINESS_LABEL, gCommonFormatArgs, COLOUR_BLACK, x, y);
@ -1688,13 +1688,13 @@ void window_guest_rides_paint(rct_window* w, rct_drawpixelinfo* dpi)
Peep* peep = GET_PEEP(w->number);
// cx
int32_t x = w->x + window_guest_rides_widgets[WIDX_PAGE_BACKGROUND].left + 2;
int32_t x = w->windowPos.x + window_guest_rides_widgets[WIDX_PAGE_BACKGROUND].left + 2;
// dx
int32_t y = w->y + window_guest_rides_widgets[WIDX_PAGE_BACKGROUND].top + 2;
int32_t y = w->windowPos.y + window_guest_rides_widgets[WIDX_PAGE_BACKGROUND].top + 2;
gfx_draw_string_left(dpi, STR_GUEST_LABEL_RIDES_BEEN_ON, nullptr, COLOUR_BLACK, x, y);
y = w->y + window_guest_rides_widgets[WIDX_PAGE_BACKGROUND].bottom - 12;
y = w->windowPos.y + window_guest_rides_widgets[WIDX_PAGE_BACKGROUND].bottom - 12;
set_format_arg(0, rct_string_id, STR_PEEP_FAVOURITE_RIDE_NOT_AVAILABLE);
if (peep->favourite_ride != RIDE_ID_NULL)
@ -1771,9 +1771,9 @@ void window_guest_finance_paint(rct_window* w, rct_drawpixelinfo* dpi)
Peep* peep = GET_PEEP(w->number);
// cx
int32_t x = w->x + window_guest_finance_widgets[WIDX_PAGE_BACKGROUND].left + 4;
int32_t x = w->windowPos.x + window_guest_finance_widgets[WIDX_PAGE_BACKGROUND].left + 4;
// dx
int32_t y = w->y + window_guest_finance_widgets[WIDX_PAGE_BACKGROUND].top + 4;
int32_t y = w->windowPos.y + window_guest_finance_widgets[WIDX_PAGE_BACKGROUND].top + 4;
// Cash in pocket
set_format_arg(0, money32, peep->cash_in_pocket);
@ -1881,9 +1881,9 @@ void window_guest_thoughts_paint(rct_window* w, rct_drawpixelinfo* dpi)
Peep* peep = GET_PEEP(w->number);
// cx
int32_t x = w->x + window_guest_thoughts_widgets[WIDX_PAGE_BACKGROUND].left + 4;
int32_t x = w->windowPos.x + window_guest_thoughts_widgets[WIDX_PAGE_BACKGROUND].left + 4;
// dx
int32_t y = w->y + window_guest_thoughts_widgets[WIDX_PAGE_BACKGROUND].top + 4;
int32_t y = w->windowPos.y + window_guest_thoughts_widgets[WIDX_PAGE_BACKGROUND].top + 4;
gfx_draw_string_left(dpi, STR_GUEST_RECENT_THOUGHTS_LABEL, nullptr, COLOUR_BLACK, x, y);
@ -1902,7 +1902,7 @@ void window_guest_thoughts_paint(rct_window* w, rct_drawpixelinfo* dpi)
y += gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, x, y, width, STR_BLACK_STRING, COLOUR_BLACK);
// If this is the last visible line end drawing.
if (y > w->y + window_guest_thoughts_widgets[WIDX_PAGE_BACKGROUND].bottom - 32)
if (y > w->windowPos.y + window_guest_thoughts_widgets[WIDX_PAGE_BACKGROUND].bottom - 32)
return;
}
}
@ -2024,11 +2024,11 @@ void window_guest_inventory_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (guest != nullptr)
{
rct_widget* pageBackgroundWidget = &window_guest_inventory_widgets[WIDX_PAGE_BACKGROUND];
int32_t x = w->x + pageBackgroundWidget->left + 4;
int32_t y = w->y + pageBackgroundWidget->top + 2;
int32_t x = w->windowPos.x + pageBackgroundWidget->left + 4;
int32_t y = w->windowPos.y + pageBackgroundWidget->top + 2;
int32_t itemNameWidth = pageBackgroundWidget->right - pageBackgroundWidget->left - 8;
int32_t maxY = w->y + w->height - 22;
int32_t maxY = w->windowPos.y + w->height - 22;
int32_t numItems = 0;
gfx_draw_string_left(dpi, STR_CARRYING, nullptr, COLOUR_BLACK, x, y);
@ -2078,8 +2078,8 @@ void window_guest_debug_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_guest_debug_tab_paint(w, dpi);
auto peep = GET_PEEP(w->number);
auto x = w->x + window_guest_debug_widgets[WIDX_PAGE_BACKGROUND].left + 4;
auto y = w->y + window_guest_debug_widgets[WIDX_PAGE_BACKGROUND].top + 4;
auto x = w->windowPos.x + window_guest_debug_widgets[WIDX_PAGE_BACKGROUND].left + 4;
auto y = w->windowPos.y + window_guest_debug_widgets[WIDX_PAGE_BACKGROUND].top + 4;
{
set_format_arg(0, uint32_t, peep->sprite_index);
gfx_draw_string_left(dpi, STR_PEEP_DEBUG_SPRITE_INDEX, gCommonFormatArgs, 0, x, y);

View File

@ -415,7 +415,7 @@ static void window_guest_list_mousedown(rct_window* w, rct_widgetindex widgetInd
widget = &w->widgets[widgetIndex - 1];
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, _window_guest_list_num_pages, widget->right - widget->left - 3);
for (i = 0; i < _window_guest_list_num_pages; i++)
@ -435,7 +435,7 @@ static void window_guest_list_mousedown(rct_window* w, rct_widgetindex widgetInd
}
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, 2, widget->right - widget->left - 3);
dropdown_set_checked(_window_guest_list_selected_view, true);
@ -679,18 +679,18 @@ static void window_guest_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
i += g_peep_animation_entries[PEEP_SPRITE_TYPE_NORMAL].sprite_animation->base_image + 1;
i |= 0xA1600000;
gfx_draw_sprite(
dpi, i, (window_guest_list_widgets[WIDX_TAB_1].left + window_guest_list_widgets[WIDX_TAB_1].right) / 2 + w->x,
window_guest_list_widgets[WIDX_TAB_1].bottom - 6 + w->y, 0);
dpi, i, (window_guest_list_widgets[WIDX_TAB_1].left + window_guest_list_widgets[WIDX_TAB_1].right) / 2 + w->windowPos.x,
window_guest_list_widgets[WIDX_TAB_1].bottom - 6 + w->windowPos.y, 0);
// Tab 2 image
i = (_window_guest_list_selected_tab == 1 ? w->list_information_type / 4 : 0);
gfx_draw_sprite(
dpi, SPR_TAB_GUESTS_0 + i, window_guest_list_widgets[WIDX_TAB_2].left + w->x,
window_guest_list_widgets[WIDX_TAB_2].top + w->y, 0);
dpi, SPR_TAB_GUESTS_0 + i, window_guest_list_widgets[WIDX_TAB_2].left + w->windowPos.x,
window_guest_list_widgets[WIDX_TAB_2].top + w->windowPos.y, 0);
// Filter description
x = w->x + 6;
y = w->y + window_guest_list_widgets[WIDX_TAB_CONTENT_PANEL].top + 3;
x = w->windowPos.x + 6;
y = w->windowPos.y + window_guest_list_widgets[WIDX_TAB_CONTENT_PANEL].top + 3;
if (_window_guest_list_selected_tab == PAGE_INDIVIDUAL)
{
if (_window_guest_list_selected_filter != -1)
@ -718,8 +718,8 @@ static void window_guest_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Number of guests (list items)
if (_window_guest_list_selected_tab == PAGE_INDIVIDUAL)
{
x = w->x + 4;
y = w->y + window_guest_list_widgets[WIDX_GUEST_LIST].bottom + 2;
x = w->windowPos.x + 4;
y = w->windowPos.y + window_guest_list_widgets[WIDX_GUEST_LIST].bottom + 2;
set_format_arg(0, int16_t, w->var_492);
gfx_draw_string_left(
dpi, (w->var_492 == 1 ? STR_FORMAT_NUM_GUESTS_SINGULAR : STR_FORMAT_NUM_GUESTS_PLURAL), gCommonFormatArgs,

View File

@ -226,8 +226,8 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Track preview
rct_widget* widget = &window_install_track_widgets[WIDX_TRACK_PREVIEW];
int32_t x = w->x + widget->left + 1;
int32_t y = w->y + widget->top + 1;
int32_t x = w->windowPos.x + widget->left + 1;
int32_t y = w->windowPos.y + widget->top + 1;
int32_t colour = ColourMapA[w->colours[0]].darkest;
gfx_fill_rect(dpi, x, y, x + 369, y + 216, colour);
@ -240,8 +240,8 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi)
drawing_engine_invalidate_image(SPR_TEMP);
gfx_draw_sprite(dpi, SPR_TEMP, x, y, 0);
x = w->x + (widget->left + widget->right) / 2;
y = w->y + widget->bottom - 12;
x = w->windowPos.x + (widget->left + widget->right) / 2;
y = w->windowPos.y + widget->bottom - 12;
// Warnings
const TrackDesign* td6 = _trackDesign.get();
@ -257,8 +257,8 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi)
}
// Information
x = w->x + widget->left + 1;
y = w->y + widget->bottom + 4;
x = w->windowPos.x + widget->left + 1;
y = w->windowPos.y + widget->bottom + 4;
// 0x006D3CF1 -- 0x006d3d71 missing
// Track design name & type

View File

@ -346,22 +346,22 @@ static void window_land_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw number for tool sizes bigger than 7
if (gLandToolSize > MAX_TOOL_SIZE_WITH_SPRITE)
{
x = w->x + (previewWidget->left + previewWidget->right) / 2;
y = w->y + (previewWidget->top + previewWidget->bottom) / 2;
x = w->windowPos.x + (previewWidget->left + previewWidget->right) / 2;
y = w->windowPos.y + (previewWidget->top + previewWidget->bottom) / 2;
gfx_draw_string_centred(dpi, STR_LAND_TOOL_SIZE_VALUE, x, y - 2, COLOUR_BLACK, &gLandToolSize);
}
else if (gLandMountainMode)
{
x = w->x + previewWidget->left;
y = w->y + previewWidget->top;
x = w->windowPos.x + previewWidget->left;
y = w->windowPos.y + previewWidget->top;
int32_t sprite = gLandToolSize % 2 == 0 ? SPR_G2_MOUNTAIN_TOOL_EVEN : SPR_G2_MOUNTAIN_TOOL_ODD;
gfx_draw_sprite(dpi, sprite, x, y, 0);
widget_draw(dpi, w, WIDX_DECREMENT);
widget_draw(dpi, w, WIDX_INCREMENT);
}
x = w->x + (previewWidget->left + previewWidget->right) / 2;
y = w->y + previewWidget->bottom + 5;
x = w->windowPos.x + (previewWidget->left + previewWidget->right) / 2;
y = w->windowPos.y + previewWidget->bottom + 5;
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
{

View File

@ -271,8 +271,8 @@ static void window_land_rights_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
int32_t x, y;
x = w->x + (window_land_rights_widgets[WIDX_PREVIEW].left + window_land_rights_widgets[WIDX_PREVIEW].right) / 2;
y = w->y + (window_land_rights_widgets[WIDX_PREVIEW].top + window_land_rights_widgets[WIDX_PREVIEW].bottom) / 2;
x = w->windowPos.x + (window_land_rights_widgets[WIDX_PREVIEW].left + window_land_rights_widgets[WIDX_PREVIEW].right) / 2;
y = w->windowPos.y + (window_land_rights_widgets[WIDX_PREVIEW].top + window_land_rights_widgets[WIDX_PREVIEW].bottom) / 2;
window_draw_widgets(w, dpi);
// Draw number for tool sizes bigger than 7
@ -284,8 +284,9 @@ static void window_land_rights_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw cost amount
if (_landRightsCost != MONEY32_UNDEFINED && _landRightsCost != 0 && !(gParkFlags & PARK_FLAGS_NO_MONEY))
{
x = (window_land_rights_widgets[WIDX_PREVIEW].left + window_land_rights_widgets[WIDX_PREVIEW].right) / 2 + w->x;
y = window_land_rights_widgets[WIDX_PREVIEW].bottom + w->y + 32;
x = (window_land_rights_widgets[WIDX_PREVIEW].left + window_land_rights_widgets[WIDX_PREVIEW].right) / 2
+ w->windowPos.x;
y = window_land_rights_widgets[WIDX_PREVIEW].bottom + w->windowPos.y + 32;
gfx_draw_string_centred(dpi, STR_COST_AMOUNT, x, y, COLOUR_BLACK, &_landRightsCost);
}
}

View File

@ -702,7 +702,8 @@ static void window_loadsave_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw path text
set_format_arg(0, uintptr_t, Platform::StrDecompToPrecomp(buffer));
gfx_draw_string_left_clipped(dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->x + 4, w->y + 20, w->width - 8);
gfx_draw_string_left_clipped(
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + 4, w->windowPos.y + 20, w->width - 8);
// Name button text
rct_string_id id = STR_NONE;
@ -713,7 +714,9 @@ static void window_loadsave_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw name button indicator.
rct_widget sort_name_widget = window_loadsave_widgets[WIDX_SORT_NAME];
gfx_draw_string_left(dpi, STR_NAME, &id, COLOUR_GREY, w->x + sort_name_widget.left + 11, w->y + sort_name_widget.top + 1);
gfx_draw_string_left(
dpi, STR_NAME, &id, COLOUR_GREY, w->windowPos.x + sort_name_widget.left + 11,
w->windowPos.y + sort_name_widget.top + 1);
// Date button text
if (gConfigGeneral.load_save_sort == SORT_DATE_ASCENDING)
@ -724,7 +727,8 @@ static void window_loadsave_paint(rct_window* w, rct_drawpixelinfo* dpi)
id = STR_NONE;
rct_widget sort_date_widget = window_loadsave_widgets[WIDX_SORT_DATE];
gfx_draw_string_left(dpi, STR_DATE, &id, COLOUR_GREY, w->x + sort_date_widget.left + 5, w->y + sort_date_widget.top + 1);
gfx_draw_string_left(
dpi, STR_DATE, &id, COLOUR_GREY, w->windowPos.x + sort_date_widget.left + 5, w->windowPos.y + sort_date_widget.top + 1);
}
static void window_loadsave_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t scrollIndex)
@ -1221,8 +1225,8 @@ static void window_overwrite_prompt_paint(rct_window* w, rct_drawpixelinfo* dpi)
set_format_arg(0, rct_string_id, STR_STRING);
set_format_arg(2, char*, _window_overwrite_prompt_name);
int32_t x = w->x + w->width / 2;
int32_t y = w->y + (w->height / 2) - 3;
int32_t x = w->windowPos.x + w->width / 2;
int32_t y = w->windowPos.y + (w->height / 2) - 3;
gfx_draw_string_centred_wrapped(dpi, gCommonFormatArgs, x, y, w->width - 4, STR_FILEBROWSER_OVERWRITE_PROMPT, COLOUR_BLACK);
}

View File

@ -68,8 +68,7 @@ rct_window* window_main_open()
WF_STICK_TO_BACK);
window->widgets = window_main_widgets;
viewport_create(
window, { window->x, window->y }, window->width, window->height, 0, { 0x0FFF, 0x0FFF, 0 }, 0x1, SPRITE_INDEX_NULL);
viewport_create(window, window->windowPos, window->width, window->height, 0, { 0x0FFF, 0x0FFF, 0 }, 0x1, SPRITE_INDEX_NULL);
window->viewport->flags |= VIEWPORT_FLAG_SOUND_ON;
gCurrentRotation = 0;
gShowGridLinesRefCount = 0;

View File

@ -812,21 +812,21 @@ static void window_map_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_draw_widgets(w, dpi);
window_map_draw_tab_images(w, dpi);
int32_t x = w->x + (window_map_widgets[WIDX_LAND_TOOL].left + window_map_widgets[WIDX_LAND_TOOL].right) / 2;
int32_t y = w->y + (window_map_widgets[WIDX_LAND_TOOL].top + window_map_widgets[WIDX_LAND_TOOL].bottom) / 2;
int32_t x = w->windowPos.x + (window_map_widgets[WIDX_LAND_TOOL].left + window_map_widgets[WIDX_LAND_TOOL].right) / 2;
int32_t y = w->windowPos.y + (window_map_widgets[WIDX_LAND_TOOL].top + window_map_widgets[WIDX_LAND_TOOL].bottom) / 2;
// Draw land tool size
if (widget_is_active_tool(w, WIDX_SET_LAND_RIGHTS) && _landRightsToolSize > MAX_TOOL_SIZE_WITH_SPRITE)
{
gfx_draw_string_centred(dpi, STR_LAND_TOOL_SIZE_VALUE, x, y - 2, COLOUR_BLACK, &_landRightsToolSize);
}
y = w->y + window_map_widgets[WIDX_LAND_TOOL].bottom + 5;
y = w->windowPos.y + window_map_widgets[WIDX_LAND_TOOL].bottom + 5;
// People starting position (scenario editor only)
if (w->widgets[WIDX_PEOPLE_STARTING_POSITION].type != WWT_EMPTY)
{
x = w->x + w->widgets[WIDX_PEOPLE_STARTING_POSITION].left + 12;
y = w->y + w->widgets[WIDX_PEOPLE_STARTING_POSITION].top + 18;
x = w->windowPos.x + w->widgets[WIDX_PEOPLE_STARTING_POSITION].left + 12;
y = w->windowPos.y + w->widgets[WIDX_PEOPLE_STARTING_POSITION].top + 18;
gfx_draw_sprite(
dpi, IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS | (COLOUR_LIGHT_BROWN << 24) | (COLOUR_BRIGHT_RED << 19) | SPR_6410,
x, y, 0);
@ -837,8 +837,8 @@ static void window_map_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Render the map legend
if (w->selected_tab == PAGE_RIDES)
{
x = w->x + 4;
y = w->y + w->widgets[WIDX_MAP].bottom + 2;
x = w->windowPos.x + 4;
y = w->windowPos.y + w->widgets[WIDX_MAP].bottom + 2;
static rct_string_id mapLabels[] = {
STR_MAP_RIDE, STR_MAP_FOOD_STALL, STR_MAP_DRINK_STALL, STR_MAP_SOUVENIR_STALL,
@ -861,7 +861,8 @@ static void window_map_paint(rct_window* w, rct_drawpixelinfo* dpi)
else if (!widget_is_active_tool(w, WIDX_SET_LAND_RIGHTS))
{
gfx_draw_string_left(
dpi, STR_MAP_SIZE, nullptr, w->colours[1], w->x + 4, w->y + w->widgets[WIDX_MAP_SIZE_SPINNER].top + 1);
dpi, STR_MAP_SIZE, nullptr, w->colours[1], w->windowPos.x + 4,
w->windowPos.y + w->widgets[WIDX_MAP_SIZE_SPINNER].top + 1);
}
}
@ -999,14 +1000,16 @@ static void window_map_draw_tab_images(rct_window* w, rct_drawpixelinfo* dpi)
if (w->selected_tab == PAGE_PEEPS)
image += w->list_information_type / 4;
gfx_draw_sprite(dpi, image, w->x + w->widgets[WIDX_PEOPLE_TAB].left, w->y + w->widgets[WIDX_PEOPLE_TAB].top, 0);
gfx_draw_sprite(
dpi, image, w->windowPos.x + w->widgets[WIDX_PEOPLE_TAB].left, w->windowPos.y + w->widgets[WIDX_PEOPLE_TAB].top, 0);
// Ride/stall tab image (animated)
image = SPR_TAB_RIDE_0;
if (w->selected_tab == PAGE_RIDES)
image += w->list_information_type / 4;
gfx_draw_sprite(dpi, image, w->x + w->widgets[WIDX_RIDES_TAB].left, w->y + w->widgets[WIDX_RIDES_TAB].top, 0);
gfx_draw_sprite(
dpi, image, w->windowPos.x + w->widgets[WIDX_RIDES_TAB].left, w->windowPos.y + w->widgets[WIDX_RIDES_TAB].top, 0);
}
/**

View File

@ -775,28 +775,33 @@ static void window_mapgen_base_paint(rct_window* w, rct_drawpixelinfo* dpi)
const uint8_t textColour = w->colours[1];
gfx_draw_string_left(dpi, STR_MAP_SIZE, nullptr, textColour, w->x + 4, w->y + w->widgets[WIDX_MAP_SIZE].top + 1);
gfx_draw_string_left(
dpi, STR_BASE_HEIGHT_LABEL, nullptr, textColour, w->x + 4, w->y + w->widgets[WIDX_BASE_HEIGHT].top + 1);
dpi, STR_MAP_SIZE, nullptr, textColour, w->windowPos.x + 4, w->windowPos.y + w->widgets[WIDX_MAP_SIZE].top + 1);
gfx_draw_string_left(
dpi, STR_WATER_LEVEL_LABEL, nullptr, textColour, w->x + 4, w->y + w->widgets[WIDX_WATER_LEVEL].top + 1);
gfx_draw_string_left(dpi, STR_TERRAIN_LABEL, nullptr, textColour, w->x + 4, w->y + w->widgets[WIDX_FLOOR_TEXTURE].top + 1);
dpi, STR_BASE_HEIGHT_LABEL, nullptr, textColour, w->windowPos.x + 4,
w->windowPos.y + w->widgets[WIDX_BASE_HEIGHT].top + 1);
gfx_draw_string_left(
dpi, STR_WATER_LEVEL_LABEL, nullptr, textColour, w->windowPos.x + 4,
w->windowPos.y + w->widgets[WIDX_WATER_LEVEL].top + 1);
gfx_draw_string_left(
dpi, STR_TERRAIN_LABEL, nullptr, textColour, w->windowPos.x + 4,
w->windowPos.y + w->widgets[WIDX_FLOOR_TEXTURE].top + 1);
// The practical map size is 2 lower than the technical map size
TileCoordsXY mapSizeArgs = { _mapSize - 2, _mapSize - 2 };
gfx_draw_string_left(
dpi, STR_RESOLUTION_X_BY_Y, &mapSizeArgs, w->colours[1], w->x + w->widgets[WIDX_MAP_SIZE].left + 1,
w->y + w->widgets[WIDX_MAP_SIZE].top + 1);
dpi, STR_RESOLUTION_X_BY_Y, &mapSizeArgs, w->colours[1], w->windowPos.x + w->widgets[WIDX_MAP_SIZE].left + 1,
w->windowPos.y + w->widgets[WIDX_MAP_SIZE].top + 1);
arg = (_baseHeight - 12) / 2;
gfx_draw_string_left(
dpi, STR_COMMA16, &arg, w->colours[1], w->x + w->widgets[WIDX_BASE_HEIGHT].left + 1,
w->y + w->widgets[WIDX_BASE_HEIGHT].top + 1);
dpi, STR_COMMA16, &arg, w->colours[1], w->windowPos.x + w->widgets[WIDX_BASE_HEIGHT].left + 1,
w->windowPos.y + w->widgets[WIDX_BASE_HEIGHT].top + 1);
arg = (_waterLevel - 12) / 2;
gfx_draw_string_left(
dpi, STR_COMMA16, &arg, w->colours[1], w->x + w->widgets[WIDX_WATER_LEVEL].left + 1,
w->y + w->widgets[WIDX_WATER_LEVEL].top + 1);
dpi, STR_COMMA16, &arg, w->colours[1], w->windowPos.x + w->widgets[WIDX_WATER_LEVEL].left + 1,
w->windowPos.y + w->widgets[WIDX_WATER_LEVEL].top + 1);
}
#pragma endregion
@ -1089,46 +1094,53 @@ static void window_mapgen_simplex_paint(rct_window* w, rct_drawpixelinfo* dpi)
const uint8_t textColour = w->colours[1];
gfx_draw_string_left(
dpi, STR_MAPGEN_SIMPLEX_NOISE_LOW_, nullptr, textColour, w->x + 5, w->y + w->widgets[WIDX_SIMPLEX_LOW].top + 1);
dpi, STR_MAPGEN_SIMPLEX_NOISE_LOW_, nullptr, textColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_LOW].top + 1);
gfx_draw_string_left(
dpi, STR_MAPGEN_SIMPLEX_NOISE_HIGH, nullptr, textColour, w->x + 5, w->y + w->widgets[WIDX_SIMPLEX_HIGH].top + 1);
dpi, STR_MAPGEN_SIMPLEX_NOISE_HIGH, nullptr, textColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_HIGH].top + 1);
gfx_draw_string_left(
dpi, STR_MAPGEN_SIMPLEX_NOISE_BASE_FREQUENCY, nullptr, textColour, w->x + 5,
w->y + w->widgets[WIDX_SIMPLEX_BASE_FREQ].top + 1);
dpi, STR_MAPGEN_SIMPLEX_NOISE_BASE_FREQUENCY, nullptr, textColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_BASE_FREQ].top + 1);
gfx_draw_string_left(
dpi, STR_MAPGEN_SIMPLEX_NOISE_OCTAVES, nullptr, textColour, w->x + 5, w->y + w->widgets[WIDX_SIMPLEX_OCTAVES].top + 1);
gfx_draw_string_left(dpi, STR_MAP_SIZE, nullptr, textColour, w->x + 5, w->y + w->widgets[WIDX_SIMPLEX_MAP_SIZE].top + 1);
dpi, STR_MAPGEN_SIMPLEX_NOISE_OCTAVES, nullptr, textColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_OCTAVES].top + 1);
gfx_draw_string_left(
dpi, STR_WATER_LEVEL_LABEL, nullptr, textColour, w->x + 5, w->y + w->widgets[WIDX_SIMPLEX_WATER_LEVEL].top + 1);
dpi, STR_MAP_SIZE, nullptr, textColour, w->windowPos.x + 5, w->windowPos.y + w->widgets[WIDX_SIMPLEX_MAP_SIZE].top + 1);
gfx_draw_string_left(
dpi, STR_WATER_LEVEL_LABEL, nullptr, textColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_WATER_LEVEL].top + 1);
gfx_draw_string_left(
dpi, STR_COMMA16, &_simplex_low, textColour, w->x + w->widgets[WIDX_SIMPLEX_LOW].left + 1,
w->y + w->widgets[WIDX_SIMPLEX_LOW].top + 1);
dpi, STR_COMMA16, &_simplex_low, textColour, w->windowPos.x + w->widgets[WIDX_SIMPLEX_LOW].left + 1,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_LOW].top + 1);
gfx_draw_string_left(
dpi, STR_COMMA16, &_simplex_high, textColour, w->x + w->widgets[WIDX_SIMPLEX_HIGH].left + 1,
w->y + w->widgets[WIDX_SIMPLEX_HIGH].top + 1);
dpi, STR_COMMA16, &_simplex_high, textColour, w->windowPos.x + w->widgets[WIDX_SIMPLEX_HIGH].left + 1,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_HIGH].top + 1);
gfx_draw_string_left(
dpi, STR_WINDOW_OBJECTIVE_VALUE_RATING, &_simplex_base_freq, textColour,
w->x + w->widgets[WIDX_SIMPLEX_BASE_FREQ].left + 1, w->y + w->widgets[WIDX_SIMPLEX_BASE_FREQ].top + 1);
w->windowPos.x + w->widgets[WIDX_SIMPLEX_BASE_FREQ].left + 1,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_BASE_FREQ].top + 1);
gfx_draw_string_left(
dpi, STR_COMMA16, &_simplex_octaves, textColour, w->x + w->widgets[WIDX_SIMPLEX_OCTAVES].left + 1,
w->y + w->widgets[WIDX_SIMPLEX_OCTAVES].top + 1);
dpi, STR_COMMA16, &_simplex_octaves, textColour, w->windowPos.x + w->widgets[WIDX_SIMPLEX_OCTAVES].left + 1,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_OCTAVES].top + 1);
gfx_draw_string_left(
dpi, STR_TERRAIN_LABEL, nullptr, textColour, w->x + 5, w->y + w->widgets[WIDX_SIMPLEX_RANDOM_TERRAIN_CHECKBOX].top + 1);
dpi, STR_TERRAIN_LABEL, nullptr, textColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_RANDOM_TERRAIN_CHECKBOX].top + 1);
gfx_draw_string_left(
dpi, STR_MAPGEN_OPTION_PLACE_TREES, nullptr, textColour, w->x + 5,
w->y + w->widgets[WIDX_SIMPLEX_PLACE_TREES_CHECKBOX].top + 1);
dpi, STR_MAPGEN_OPTION_PLACE_TREES, nullptr, textColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_PLACE_TREES_CHECKBOX].top + 1);
// The practical map size is 2 lower than the technical map size
TileCoordsXY mapSizeArgs = { _mapSize - 2, _mapSize - 2 };
gfx_draw_string_left(
dpi, STR_RESOLUTION_X_BY_Y, &mapSizeArgs, textColour, w->x + w->widgets[WIDX_SIMPLEX_MAP_SIZE].left + 1,
w->y + w->widgets[WIDX_SIMPLEX_MAP_SIZE].top + 1);
dpi, STR_RESOLUTION_X_BY_Y, &mapSizeArgs, textColour, w->windowPos.x + w->widgets[WIDX_SIMPLEX_MAP_SIZE].left + 1,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_MAP_SIZE].top + 1);
arg = (_waterLevel - 12) / 2;
gfx_draw_string_left(
dpi, STR_COMMA16, &arg, textColour, w->x + w->widgets[WIDX_SIMPLEX_WATER_LEVEL].left + 1,
w->y + w->widgets[WIDX_SIMPLEX_WATER_LEVEL].top + 1);
dpi, STR_COMMA16, &arg, textColour, w->windowPos.x + w->widgets[WIDX_SIMPLEX_WATER_LEVEL].left + 1,
w->windowPos.y + w->widgets[WIDX_SIMPLEX_WATER_LEVEL].top + 1);
}
#pragma endregion
@ -1283,35 +1295,39 @@ static void window_mapgen_heightmap_paint(rct_window* w, rct_drawpixelinfo* dpi)
const uint8_t strengthColour = _heightmapSmoothMap ? enabledColour : disabledColour;
int16_t strength = _heightmapSmoothStrength;
gfx_draw_string_left(
dpi, STR_MAPGEN_SMOOTH_STRENGTH, nullptr, strengthColour, w->x + 5, w->y + w->widgets[WIDX_HEIGHTMAP_STRENGTH].top + 1);
dpi, STR_MAPGEN_SMOOTH_STRENGTH, nullptr, strengthColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_HEIGHTMAP_STRENGTH].top + 1);
gfx_draw_string_left(
dpi, STR_COMMA16, &strength, strengthColour, w->x + w->widgets[WIDX_HEIGHTMAP_STRENGTH].left + 1,
w->y + w->widgets[WIDX_HEIGHTMAP_STRENGTH].top + 1);
dpi, STR_COMMA16, &strength, strengthColour, w->windowPos.x + w->widgets[WIDX_HEIGHTMAP_STRENGTH].left + 1,
w->windowPos.y + w->widgets[WIDX_HEIGHTMAP_STRENGTH].top + 1);
// Low label and value
const uint8_t labelColour = _heightmapLoaded ? enabledColour : disabledColour;
int16_t low = _heightmapLow;
gfx_draw_string_left(
dpi, STR_MAPGEN_SIMPLEX_NOISE_LOW_, nullptr, labelColour, w->x + 5, w->y + w->widgets[WIDX_HEIGHTMAP_LOW].top + 1);
dpi, STR_MAPGEN_SIMPLEX_NOISE_LOW_, nullptr, labelColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_HEIGHTMAP_LOW].top + 1);
gfx_draw_string_left(
dpi, STR_COMMA16, &low, labelColour, w->x + w->widgets[WIDX_HEIGHTMAP_LOW].left + 1,
w->y + w->widgets[WIDX_HEIGHTMAP_LOW].top + 1);
dpi, STR_COMMA16, &low, labelColour, w->windowPos.x + w->widgets[WIDX_HEIGHTMAP_LOW].left + 1,
w->windowPos.y + w->widgets[WIDX_HEIGHTMAP_LOW].top + 1);
// High label and value
int16_t high = _heightmapHigh;
gfx_draw_string_left(
dpi, STR_MAPGEN_SIMPLEX_NOISE_HIGH, nullptr, labelColour, w->x + 5, w->y + w->widgets[WIDX_HEIGHTMAP_HIGH].top + 1);
dpi, STR_MAPGEN_SIMPLEX_NOISE_HIGH, nullptr, labelColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_HEIGHTMAP_HIGH].top + 1);
gfx_draw_string_left(
dpi, STR_COMMA16, &high, labelColour, w->x + w->widgets[WIDX_HEIGHTMAP_HIGH].left + 1,
w->y + w->widgets[WIDX_HEIGHTMAP_HIGH].top + 1);
dpi, STR_COMMA16, &high, labelColour, w->windowPos.x + w->widgets[WIDX_HEIGHTMAP_HIGH].left + 1,
w->windowPos.y + w->widgets[WIDX_HEIGHTMAP_HIGH].top + 1);
// Water level label and value
int16_t waterLevel = _waterLevel;
gfx_draw_string_left(
dpi, STR_WATER_LEVEL_LABEL, nullptr, labelColour, w->x + 5, w->y + w->widgets[WIDX_HEIGHTMAP_WATER_LEVEL].top + 1);
dpi, STR_WATER_LEVEL_LABEL, nullptr, labelColour, w->windowPos.x + 5,
w->windowPos.y + w->widgets[WIDX_HEIGHTMAP_WATER_LEVEL].top + 1);
gfx_draw_string_left(
dpi, STR_COMMA16, &waterLevel, labelColour, w->x + w->widgets[WIDX_HEIGHTMAP_WATER_LEVEL].left + 1,
w->y + w->widgets[WIDX_HEIGHTMAP_WATER_LEVEL].top + 1);
dpi, STR_COMMA16, &waterLevel, labelColour, w->windowPos.x + w->widgets[WIDX_HEIGHTMAP_WATER_LEVEL].left + 1,
w->windowPos.y + w->widgets[WIDX_HEIGHTMAP_WATER_LEVEL].top + 1);
}
#pragma endregion
@ -1379,7 +1395,8 @@ static void window_mapgen_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w,
spriteIndex += (frame % TabAnimationFrames[w->page]);
}
gfx_draw_sprite(dpi, spriteIndex, w->x + w->widgets[widgetIndex].left, w->y + w->widgets[widgetIndex].top, 0);
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
}
}

View File

@ -129,8 +129,7 @@ static void window_map_tooltip_open()
else
{
w->Invalidate();
w->x = pos.x;
w->y = pos.y;
w->windowPos = pos;
w->width = width;
w->height = height;
}
@ -159,6 +158,6 @@ static void window_map_tooltip_paint(rct_window* w, rct_drawpixelinfo* dpi)
}
gfx_draw_string_centred_wrapped(
dpi, gMapTooltipFormatArgs, w->x + (w->width / 2), w->y + (w->height / 2), w->width, STR_MAP_TOOLTIP_STRINGID,
COLOUR_BLACK);
dpi, gMapTooltipFormatArgs, w->windowPos.x + (w->width / 2), w->windowPos.y + (w->height / 2), w->width,
STR_MAP_TOOLTIP_STRINGID, COLOUR_BLACK);
}

View File

@ -367,8 +367,8 @@ static void window_multiplayer_groups_show_group_dropdown(rct_window* w, rct_wid
numItems = network_get_num_groups();
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
for (i = 0; i < network_get_num_groups(); i++)
{
@ -485,7 +485,7 @@ static void window_multiplayer_information_paint(rct_window* w, rct_drawpixelinf
window_multiplayer_draw_tab_images(w, dpi);
rct_drawpixelinfo clippedDPI;
if (clip_drawpixelinfo(&clippedDPI, dpi, w->x, w->y, w->width, w->height))
if (clip_drawpixelinfo(&clippedDPI, dpi, w->windowPos.x, w->windowPos.y, w->width, w->height))
{
dpi = &clippedDPI;
@ -636,8 +636,8 @@ static void window_multiplayer_players_paint(rct_window* w, rct_drawpixelinfo* d
// Number of players
stringId = w->no_list_items == 1 ? STR_MULTIPLAYER_PLAYER_COUNT : STR_MULTIPLAYER_PLAYER_COUNT_PLURAL;
x = w->x + 4;
y = w->y + w->widgets[WIDX_LIST].bottom + 2;
x = w->windowPos.x + 4;
y = w->windowPos.y + w->widgets[WIDX_LIST].bottom + 2;
gfx_draw_string_left(dpi, stringId, &w->no_list_items, w->colours[2], x, y);
}
@ -907,12 +907,12 @@ static void window_multiplayer_groups_paint(rct_window* w, rct_drawpixelinfo* dp
safe_strcpy(lineCh, network_get_group_name(group), sizeof(buffer) - (lineCh - buffer));
set_format_arg(0, const char*, buffer);
gfx_draw_string_centred_clipped(
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->x + (widget->left + widget->right - 11) / 2,
w->y + widget->top, widget->right - widget->left - 8);
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + (widget->left + widget->right - 11) / 2,
w->windowPos.y + widget->top, widget->right - widget->left - 8);
}
int32_t x = w->x + window_multiplayer_groups_widgets[WIDX_CONTENT_PANEL].left + 4;
int32_t y = w->y + window_multiplayer_groups_widgets[WIDX_CONTENT_PANEL].top + 4;
int32_t x = w->windowPos.x + window_multiplayer_groups_widgets[WIDX_CONTENT_PANEL].left + 4;
int32_t y = w->windowPos.y + window_multiplayer_groups_widgets[WIDX_CONTENT_PANEL].top + 4;
gfx_draw_string_left(dpi, STR_DEFAULT_GROUP, nullptr, w->colours[2], x, y);
@ -931,8 +931,8 @@ static void window_multiplayer_groups_paint(rct_window* w, rct_drawpixelinfo* dp
safe_strcpy(lineCh, network_get_group_name(group), sizeof(buffer) - (lineCh - buffer));
set_format_arg(0, const char*, buffer);
gfx_draw_string_centred_clipped(
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->x + (widget->left + widget->right - 11) / 2,
w->y + widget->top, widget->right - widget->left - 8);
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + (widget->left + widget->right - 11) / 2,
w->windowPos.y + widget->top, widget->right - widget->left - 8);
}
}
@ -1062,7 +1062,8 @@ static void window_multiplayer_draw_tab_image(rct_window* w, rct_drawpixelinfo*
}
}
gfx_draw_sprite(dpi, spriteIndex, w->x + w->widgets[widgetIndex].left, w->y + w->widgets[widgetIndex].top, 0);
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
}
}

View File

@ -391,7 +391,7 @@ static void window_network_information_paint(rct_window* w, rct_drawpixelinfo* d
const int32_t graphHeight = (totalHeight - totalHeightText - heightTab) / 2;
rct_drawpixelinfo clippedDPI;
if (clip_drawpixelinfo(&clippedDPI, dpi, w->x, w->y, w->width, w->height))
if (clip_drawpixelinfo(&clippedDPI, dpi, w->windowPos.x, w->windowPos.y, w->width, w->height))
{
dpi = &clippedDPI;
@ -470,7 +470,8 @@ static void window_network_draw_tab_image(rct_window* w, rct_drawpixelinfo* dpi,
}
}
gfx_draw_sprite(dpi, spriteIndex, w->x + w->widgets[widgetIndex].left, w->y + w->widgets[widgetIndex].top, 0);
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
}
}

View File

@ -182,8 +182,8 @@ static void window_network_status_paint(rct_window* w, rct_drawpixelinfo* dpi)
lineCh = utf8_write_codepoint(lineCh, FORMAT_BLACK);
safe_strcpy(lineCh, window_network_status_text, sizeof(buffer) - (lineCh - buffer));
gfx_clip_string(buffer, w->widgets[WIDX_BACKGROUND].right - 50);
int32_t x = w->x + (w->width / 2);
int32_t y = w->y + (w->height / 2);
int32_t x = w->windowPos.x + (w->width / 2);
int32_t y = w->windowPos.y + (w->height / 2);
x -= gfx_get_string_width(buffer) / 2;
gfx_draw_string(dpi, buffer, COLOUR_BLACK, x, y);
}

View File

@ -271,7 +271,7 @@ static void window_new_campaign_mousedown(rct_window* w, rct_widgetindex widgetI
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top,
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
dropdownWidget->right - dropdownWidget->left - 3);
}
@ -301,8 +301,9 @@ static void window_new_campaign_mousedown(rct_window* w, rct_widgetindex widgetI
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, dropdownWidget->right - dropdownWidget->left - 3);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
dropdownWidget->right - dropdownWidget->left - 3);
}
break;
// In RCT2, the maximum was 6 weeks
@ -404,10 +405,10 @@ static void window_new_campaign_paint(rct_window* w, rct_drawpixelinfo* dpi)
rct_widget* spinnerWidget = &window_new_campaign_widgets[WIDX_WEEKS_SPINNER];
gfx_draw_string_left(
dpi, w->campaign.no_weeks == 1 ? STR_MARKETING_1_WEEK : STR_X_WEEKS, &w->campaign.no_weeks, w->colours[0],
w->x + spinnerWidget->left + 1, w->y + spinnerWidget->top);
w->windowPos.x + spinnerWidget->left + 1, w->windowPos.y + spinnerWidget->top);
x = w->x + 14;
y = w->y + 60;
x = w->windowPos.x + 14;
y = w->windowPos.y + 60;
// Price per week
money32 pricePerWeek = AdvertisingCampaignPricePerWeek[w->campaign.campaign_type];

View File

@ -677,7 +677,8 @@ static void window_new_ride_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w
spriteIndex |= w->colours[1] << 19;
gfx_draw_sprite(dpi, spriteIndex, w->x + w->widgets[widgetIndex].left, w->y + w->widgets[widgetIndex].top, 0);
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
}
}
@ -774,7 +775,7 @@ static void window_new_ride_scrollmousedown(rct_window* w, int32_t scrollIndex,
_windowNewRideHighlightedItem[_windowNewRideCurrentTab] = item;
w->new_ride.selected_ride_id = item.ride_type_and_entry;
audio_play_sound(SoundId::Click1, 0, w->x + (w->width / 2));
audio_play_sound(SoundId::Click1, 0, w->windowPos.x + (w->width / 2));
w->new_ride.selected_ride_countdown = 8;
w->Invalidate();
}
@ -840,7 +841,8 @@ static void window_new_ride_paint(rct_window* w, rct_drawpixelinfo* dpi)
ride_list_item item;
item.ride_type_and_entry = static_cast<uint16_t>(w->new_ride.highlighted_ride_id);
if (item.type != RIDE_TYPE_NULL || item.entry_index != RIDE_ENTRY_INDEX_NULL)
window_new_ride_paint_ride_information(w, dpi, item, w->x + 3, w->y + w->height - 64, w->width - 6);
window_new_ride_paint_ride_information(
w, dpi, item, w->windowPos.x + 3, w->windowPos.y + w->height - 64, w->width - 6);
}
else
{

View File

@ -144,7 +144,7 @@ static void window_news_update(rct_window* w)
}
w->Invalidate();
audio_play_sound(SoundId::Click2, 0, w->x + (w->width / 2));
audio_play_sound(SoundId::Click2, 0, w->windowPos.x + (w->width / 2));
j = w->news.var_480;
w->news.var_480 = -1;
@ -240,7 +240,7 @@ static void window_news_scrollmousedown(rct_window* w, int32_t scrollIndex, cons
w->news.var_482 = buttonIndex;
w->news.var_484 = 4;
w->Invalidate();
audio_play_sound(SoundId::Click1, 0, w->x + (w->width / 2));
audio_play_sound(SoundId::Click1, 0, w->windowPos.x + (w->width / 2));
}
}

View File

@ -287,7 +287,8 @@ static void window_news_options_draw_tab_image(rct_window* w, rct_drawpixelinfo*
}
}
gfx_draw_sprite(dpi, spriteIndex, w->x + w->widgets[widgetIndex].left, w->y + w->widgets[widgetIndex].top, 0);
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
}
}

View File

@ -560,12 +560,14 @@ static void window_object_load_error_paint(rct_window* w, rct_drawpixelinfo* dpi
// Draw explanatory message
set_format_arg(0, rct_string_id, STR_OBJECT_ERROR_WINDOW_EXPLANATION);
gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, w->x + 5, w->y + 18, WW - 10, STR_BLACK_STRING, COLOUR_BLACK);
gfx_draw_string_left_wrapped(
dpi, gCommonFormatArgs, w->windowPos.x + 5, w->windowPos.y + 18, WW - 10, STR_BLACK_STRING, COLOUR_BLACK);
// Draw file name
set_format_arg(0, rct_string_id, STR_OBJECT_ERROR_WINDOW_FILE);
set_format_arg(2, utf8*, file_path.c_str());
gfx_draw_string_left_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, w->x + 5, w->y + 43, WW - 5);
gfx_draw_string_left_clipped(
dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + 5, w->windowPos.y + 43, WW - 5);
}
static void window_object_load_error_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t scrollIndex)

View File

@ -1286,8 +1286,8 @@ static void window_options_mousedown(rct_window* w, rct_widgetindex widgetIndex,
}
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, num_items, widget->right - widget->left - 3);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, num_items, widget->right - widget->left - 3);
dropdown_set_checked((int32_t)theme_manager_get_active_available_theme_index(), true);
widget_invalidate(w, WIDX_THEMES_DROPDOWN);
@ -1307,8 +1307,8 @@ static void window_options_mousedown(rct_window* w, rct_widgetindex widgetIndex,
}
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1],
DROPDOWN_FLAG_STAY_OPEN, num_items);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
w->colours[1], DROPDOWN_FLAG_STAY_OPEN, num_items);
dropdown_set_checked((int32_t)title_get_current_sequence(), true);
break;
@ -1321,8 +1321,8 @@ static void window_options_mousedown(rct_window* w, rct_widgetindex widgetIndex,
gDropdownItemsArgs[1] = STR_OPTIONS_SCENARIO_ORIGIN;
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, num_items, widget->right - widget->left - 3);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, num_items, widget->right - widget->left - 3);
dropdown_set_checked(gConfigGeneral.scenario_select_mode, true);
break;
@ -2037,8 +2037,8 @@ static void window_options_paint(rct_window* w, rct_drawpixelinfo* dpi)
case WINDOW_OPTIONS_PAGE_DISPLAY:
{
gfx_draw_string_left(
dpi, STR_FULLSCREEN_MODE, w, w->colours[1], w->x + 10,
w->y + window_options_display_widgets[WIDX_FULLSCREEN].top + 1);
dpi, STR_FULLSCREEN_MODE, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_display_widgets[WIDX_FULLSCREEN].top + 1);
// Disable resolution dropdown on "Windowed" and "Fullscreen (desktop)"
int32_t colour = w->colours[1];
@ -2047,20 +2047,20 @@ static void window_options_paint(rct_window* w, rct_drawpixelinfo* dpi)
colour |= COLOUR_FLAG_INSET;
}
gfx_draw_string_left(
dpi, STR_DISPLAY_RESOLUTION, w, colour, w->x + 10 + 15,
w->y + window_options_display_widgets[WIDX_RESOLUTION].top + 1);
dpi, STR_DISPLAY_RESOLUTION, w, colour, w->windowPos.x + 10 + 15,
w->windowPos.y + window_options_display_widgets[WIDX_RESOLUTION].top + 1);
gfx_draw_string_left(
dpi, STR_UI_SCALING_DESC, w, w->colours[1], w->x + 10,
w->y + window_options_display_widgets[WIDX_SCALE].top + 1);
dpi, STR_UI_SCALING_DESC, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_display_widgets[WIDX_SCALE].top + 1);
gfx_draw_string_left(
dpi, STR_DRAWING_ENGINE, w, w->colours[1], w->x + 10,
w->y + window_options_display_widgets[WIDX_DRAWING_ENGINE].top + 1);
dpi, STR_DRAWING_ENGINE, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_display_widgets[WIDX_DRAWING_ENGINE].top + 1);
int32_t scale = (int32_t)(gConfigGeneral.window_scale * 100);
gfx_draw_string_left(
dpi, STR_WINDOW_OBJECTIVE_VALUE_RATING, &scale, w->colours[1], w->x + w->widgets[WIDX_SCALE].left + 1,
w->y + w->widgets[WIDX_SCALE].top + 1);
dpi, STR_WINDOW_OBJECTIVE_VALUE_RATING, &scale, w->colours[1], w->windowPos.x + w->widgets[WIDX_SCALE].left + 1,
w->windowPos.y + w->widgets[WIDX_SCALE].top + 1);
colour = w->colours[1];
if (gConfigGeneral.drawing_engine == DRAWING_ENGINE_SOFTWARE
@ -2069,72 +2069,74 @@ static void window_options_paint(rct_window* w, rct_drawpixelinfo* dpi)
colour |= COLOUR_FLAG_INSET;
}
gfx_draw_string_left(
dpi, STR_SCALING_QUALITY, w, colour, w->x + 25,
w->y + window_options_display_widgets[WIDX_SCALE_QUALITY].top + 1);
dpi, STR_SCALING_QUALITY, w, colour, w->windowPos.x + 25,
w->windowPos.y + window_options_display_widgets[WIDX_SCALE_QUALITY].top + 1);
break;
}
case WINDOW_OPTIONS_PAGE_CULTURE:
gfx_draw_string_left(
dpi, STR_OPTIONS_LANGUAGE, w, w->colours[1], w->x + 10,
w->y + window_options_culture_widgets[WIDX_LANGUAGE].top + 1);
dpi, STR_OPTIONS_LANGUAGE, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_culture_widgets[WIDX_LANGUAGE].top + 1);
gfx_draw_string_left(
dpi, STR_CURRENCY, w, w->colours[1], w->x + 10, w->y + window_options_culture_widgets[WIDX_CURRENCY].top + 1);
dpi, STR_CURRENCY, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_culture_widgets[WIDX_CURRENCY].top + 1);
gfx_draw_string_left(
dpi, STR_DISTANCE_AND_SPEED, w, w->colours[1], w->x + 10,
w->y + window_options_culture_widgets[WIDX_DISTANCE].top + 1);
dpi, STR_DISTANCE_AND_SPEED, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_culture_widgets[WIDX_DISTANCE].top + 1);
gfx_draw_string_left(
dpi, STR_TEMPERATURE, w, w->colours[1], w->x + 10,
w->y + window_options_culture_widgets[WIDX_TEMPERATURE].top + 1);
dpi, STR_TEMPERATURE, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_culture_widgets[WIDX_TEMPERATURE].top + 1);
gfx_draw_string_left(
dpi, STR_HEIGHT_LABELS, w, w->colours[1], w->x + 10,
w->y + window_options_culture_widgets[WIDX_HEIGHT_LABELS].top + 1);
dpi, STR_HEIGHT_LABELS, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_culture_widgets[WIDX_HEIGHT_LABELS].top + 1);
gfx_draw_string_left(
dpi, STR_DATE_FORMAT, w, w->colours[1], w->x + 10,
w->y + window_options_culture_widgets[WIDX_DATE_FORMAT].top + 1);
dpi, STR_DATE_FORMAT, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_culture_widgets[WIDX_DATE_FORMAT].top + 1);
break;
case WINDOW_OPTIONS_PAGE_CONTROLS_AND_INTERFACE:
{
gfx_draw_string_left(
dpi, STR_SHOW_TOOLBAR_BUTTONS_FOR, w, w->colours[1], w->x + 10,
w->y + window_options_controls_and_interface_widgets[WIDX_TOOLBAR_BUTTONS_GROUP].top + 15);
dpi, STR_SHOW_TOOLBAR_BUTTONS_FOR, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_controls_and_interface_widgets[WIDX_TOOLBAR_BUTTONS_GROUP].top + 15);
gfx_draw_string_left(
dpi, STR_THEMES_LABEL_CURRENT_THEME, nullptr, w->colours[1], w->x + 10,
w->y + window_options_controls_and_interface_widgets[WIDX_THEMES].top + 1);
dpi, STR_THEMES_LABEL_CURRENT_THEME, nullptr, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_controls_and_interface_widgets[WIDX_THEMES].top + 1);
break;
}
case WINDOW_OPTIONS_PAGE_MISC:
{
gfx_draw_string_left(
dpi, STR_TITLE_SEQUENCE, w, w->colours[1], w->x + 10,
w->y + window_options_misc_widgets[WIDX_TITLE_SEQUENCE].top + 1);
dpi, STR_TITLE_SEQUENCE, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_misc_widgets[WIDX_TITLE_SEQUENCE].top + 1);
gfx_draw_string_left(
dpi, STR_OPTIONS_SCENARIO_GROUPING, nullptr, w->colours[1], w->x + 10,
w->y + window_options_misc_widgets[WIDX_SCENARIO_GROUPING].top + 1);
dpi, STR_OPTIONS_SCENARIO_GROUPING, nullptr, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_misc_widgets[WIDX_SCENARIO_GROUPING].top + 1);
gfx_draw_string_left(
dpi, STR_DEFAULT_INSPECTION_INTERVAL, w, w->colours[1], w->x + 10,
w->y + window_options_misc_widgets[WIDX_DEFAULT_INSPECTION_INTERVAL].top + 1);
dpi, STR_DEFAULT_INSPECTION_INTERVAL, w, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_options_misc_widgets[WIDX_DEFAULT_INSPECTION_INTERVAL].top + 1);
break;
}
case WINDOW_OPTIONS_PAGE_ADVANCED:
{
gfx_draw_string_left(
dpi, STR_OPTIONS_AUTOSAVE_FREQUENCY_LABEL, w, w->colours[1], w->x + 24,
w->y + window_options_advanced_widgets[WIDX_AUTOSAVE].top + 1);
dpi, STR_OPTIONS_AUTOSAVE_FREQUENCY_LABEL, w, w->colours[1], w->windowPos.x + 24,
w->windowPos.y + window_options_advanced_widgets[WIDX_AUTOSAVE].top + 1);
gfx_draw_string_left(
dpi, window_options_autosave_names[gConfigGeneral.autosave_frequency], nullptr, w->colours[1],
w->x + window_options_advanced_widgets[WIDX_AUTOSAVE].left + 1,
w->y + window_options_advanced_widgets[WIDX_AUTOSAVE].top);
w->windowPos.x + window_options_advanced_widgets[WIDX_AUTOSAVE].left + 1,
w->windowPos.y + window_options_advanced_widgets[WIDX_AUTOSAVE].top);
gfx_draw_string_left(
dpi, STR_AUTOSAVE_AMOUNT, w, w->colours[1], w->x + 24,
w->y + window_options_advanced_widgets[WIDX_AUTOSAVE_AMOUNT].top + 1);
dpi, STR_AUTOSAVE_AMOUNT, w, w->colours[1], w->windowPos.x + 24,
w->windowPos.y + window_options_advanced_widgets[WIDX_AUTOSAVE_AMOUNT].top + 1);
int32_t autosavesToKeep = (int32_t)(gConfigGeneral.autosave_amount);
gfx_draw_string_left(
dpi, STR_WINDOW_OBJECTIVE_VALUE_GUEST_COUNT, &autosavesToKeep, w->colours[1],
w->x + w->widgets[WIDX_AUTOSAVE_AMOUNT].left + 1, w->y + w->widgets[WIDX_AUTOSAVE_AMOUNT].top + 1);
w->windowPos.x + w->widgets[WIDX_AUTOSAVE_AMOUNT].left + 1,
w->windowPos.y + w->widgets[WIDX_AUTOSAVE_AMOUNT].top + 1);
set_format_arg(0, uintptr_t, Platform::StrDecompToPrecomp(gConfigGeneral.rct1_path));
@ -2146,8 +2148,8 @@ static void window_options_paint(rct_window* w, rct_drawpixelinfo* dpi)
uint32_t padding = widgetHeight > lineHeight ? (widgetHeight - lineHeight) / 2 : 0;
gfx_draw_string_left_clipped(
dpi, STR_STRING, gCommonFormatArgs, w->colours[1], w->x + pathWidget.left + 1, w->y + pathWidget.top + padding,
277);
dpi, STR_STRING, gCommonFormatArgs, w->colours[1], w->windowPos.x + pathWidget.left + 1,
w->windowPos.y + pathWidget.top + padding, 277);
break;
}
}
@ -2157,8 +2159,8 @@ static void window_options_paint(rct_window* w, rct_drawpixelinfo* dpi)
static void window_options_show_dropdown(rct_window* w, rct_widget* widget, int32_t num_items)
{
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN,
num_items, widget->right - widget->left - 3);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, num_items, widget->right - widget->left - 3);
}
static void window_options_update_height_markers()
@ -2248,8 +2250,8 @@ static void window_options_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w,
rct_widgetindex widgetIndex = WIDX_TAB_1 + page;
rct_widget* widget = &w->widgets[widgetIndex];
int16_t l = w->x + widget->left;
int16_t t = w->y + widget->top;
int16_t l = w->windowPos.x + widget->left;
int16_t t = w->windowPos.y + widget->top;
if (!(w->disabled_widgets & (1LL << widgetIndex)))
{

View File

@ -697,7 +697,7 @@ static void window_park_entrance_mousedown(rct_window* w, rct_widgetindex widget
gDropdownItemsArgs[0] = STR_CLOSE_PARK;
gDropdownItemsArgs[1] = STR_OPEN_PARK;
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0, 2);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0, 2);
if (park_is_open())
{
@ -863,7 +863,7 @@ static void window_park_entrance_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
window_draw_viewport(dpi, w);
if (w->viewport->flags & VIEWPORT_FLAG_SOUND_ON)
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->x + 2, w->y + 2, 0);
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos.x + 2, w->windowPos.y + 2, 0);
}
// Draw park closed / open label
@ -871,8 +871,8 @@ static void window_park_entrance_paint(rct_window* w, rct_drawpixelinfo* dpi)
labelWidget = &window_park_entrance_widgets[WIDX_STATUS];
gfx_draw_string_centred_clipped(
dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, w->x + (labelWidget->left + labelWidget->right) / 2,
w->y + labelWidget->top, labelWidget->right - labelWidget->left);
dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + (labelWidget->left + labelWidget->right) / 2,
w->windowPos.y + labelWidget->top, labelWidget->right - labelWidget->left);
}
/**
@ -931,7 +931,7 @@ static void window_park_init_viewport(rct_window* w)
{
rct_widget* viewportWidget = &window_park_entrance_widgets[WIDX_VIEWPORT];
viewport_create(
w, { w->x + viewportWidget->left + 1, w->y + viewportWidget->top + 1 },
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 1, (viewportWidget->bottom - viewportWidget->top) - 1, 0,
{ x, y, z }, w->viewport_focus_sprite.type & VIEWPORT_FOCUS_TYPE_MASK, SPRITE_INDEX_NULL);
w->flags |= (1 << 2);
@ -1046,8 +1046,8 @@ static void window_park_rating_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_draw_widgets(w, dpi);
window_park_draw_tab_images(dpi, w);
x = w->x;
y = w->y;
x = w->windowPos.x;
y = w->windowPos.y;
widget = &window_park_rating_widgets[WIDX_PAGE_BACKGROUND];
// Current value
@ -1168,8 +1168,8 @@ static void window_park_guests_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_draw_widgets(w, dpi);
window_park_draw_tab_images(dpi, w);
x = w->x;
y = w->y;
x = w->windowPos.x;
y = w->windowPos.y;
widget = &window_park_guests_widgets[WIDX_PAGE_BACKGROUND];
// Current value
@ -1302,14 +1302,14 @@ static void window_park_price_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_draw_widgets(w, dpi);
window_park_draw_tab_images(dpi, w);
auto x = w->x + w->widgets[WIDX_PAGE_BACKGROUND].left + 4;
auto y = w->y + w->widgets[WIDX_PAGE_BACKGROUND].top + 30;
auto x = w->windowPos.x + w->widgets[WIDX_PAGE_BACKGROUND].left + 4;
auto y = w->windowPos.y + w->widgets[WIDX_PAGE_BACKGROUND].top + 30;
gfx_draw_string_left(dpi, STR_INCOME_FROM_ADMISSIONS, &gTotalIncomeFromAdmissions, COLOUR_BLACK, x, y);
money32 parkEntranceFee = park_get_entrance_fee();
auto stringId = parkEntranceFee == 0 ? STR_FREE : STR_BOTTOM_TOOLBAR_CASH;
x = w->x + w->widgets[WIDX_PRICE].left + 1;
y = w->y + w->widgets[WIDX_PRICE].top + 1;
x = w->windowPos.x + w->widgets[WIDX_PRICE].left + 1;
y = w->windowPos.y + w->widgets[WIDX_PRICE].top + 1;
gfx_draw_string_left(dpi, stringId, &parkEntranceFee, w->colours[1], x, y);
}
@ -1399,8 +1399,8 @@ static void window_park_stats_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_draw_widgets(w, dpi);
window_park_draw_tab_images(dpi, w);
x = w->x + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].left + 4;
y = w->y + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].top + 4;
x = w->windowPos.x + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].left + 4;
y = w->windowPos.y + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].top + 4;
// Draw park size
parkSize = gParkSize * 10;
@ -1469,8 +1469,8 @@ rct_window* window_park_objective_open()
window->hold_down_widgets = window_park_page_hold_down_widgets[WINDOW_PARK_PAGE_OBJECTIVE];
window->event_handlers = &window_park_objective_events;
window_init_scroll_widgets(window);
window->x = context_get_width() / 2 - 115;
window->y = context_get_height() / 2 - 87;
window->windowPos.x = context_get_width() / 2 - 115;
window->windowPos.y = context_get_height() / 2 - 87;
window->Invalidate();
return window;
@ -1575,8 +1575,8 @@ static void window_park_objective_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_park_draw_tab_images(dpi, w);
// Scenario description
x = w->x + window_park_objective_widgets[WIDX_PAGE_BACKGROUND].left + 4;
y = w->y + window_park_objective_widgets[WIDX_PAGE_BACKGROUND].top + 7;
x = w->windowPos.x + window_park_objective_widgets[WIDX_PAGE_BACKGROUND].left + 4;
y = w->windowPos.y + window_park_objective_widgets[WIDX_PAGE_BACKGROUND].top + 7;
set_format_arg(0, rct_string_id, STR_STRING);
set_format_arg(2, const char*, gScenarioDetails.c_str());
y += gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, x, y, 222, STR_BLACK_STRING, COLOUR_BLACK);
@ -1710,8 +1710,8 @@ static void window_park_awards_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_draw_widgets(w, dpi);
window_park_draw_tab_images(dpi, w);
int32_t x = w->x + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].left + 4;
int32_t y = w->y + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].top + 4;
int32_t x = w->windowPos.x + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].left + 4;
int32_t y = w->windowPos.y + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].top + 4;
int32_t count = 0;
for (int32_t i = 0; i < MAX_AWARDS; i++)
{
@ -1800,7 +1800,9 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
// Entrance tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_1)))
gfx_draw_sprite(dpi, SPR_TAB_PARK_ENTRANCE, w->x + w->widgets[WIDX_TAB_1].left, w->y + w->widgets[WIDX_TAB_1].top, 0);
gfx_draw_sprite(
dpi, SPR_TAB_PARK_ENTRANCE, w->windowPos.x + w->widgets[WIDX_TAB_1].left,
w->windowPos.y + w->widgets[WIDX_TAB_1].top, 0);
// Rating tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_2)))
@ -1808,10 +1810,14 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx = SPR_TAB_GRAPH_0;
if (w->page == WINDOW_PARK_PAGE_RATING)
sprite_idx += (w->frame_no / 8) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_2].left, w->y + w->widgets[WIDX_TAB_2].top, 0);
gfx_draw_sprite(dpi, SPR_RATING_HIGH, w->x + w->widgets[WIDX_TAB_2].left + 7, w->y + w->widgets[WIDX_TAB_2].top + 1, 0);
gfx_draw_sprite(
dpi, SPR_RATING_LOW, w->x + w->widgets[WIDX_TAB_2].left + 16, w->y + w->widgets[WIDX_TAB_2].top + 12, 0);
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_2].left, w->windowPos.y + w->widgets[WIDX_TAB_2].top, 0);
gfx_draw_sprite(
dpi, SPR_RATING_HIGH, w->windowPos.x + w->widgets[WIDX_TAB_2].left + 7,
w->windowPos.y + w->widgets[WIDX_TAB_2].top + 1, 0);
gfx_draw_sprite(
dpi, SPR_RATING_LOW, w->windowPos.x + w->widgets[WIDX_TAB_2].left + 16,
w->windowPos.y + w->widgets[WIDX_TAB_2].top + 12, 0);
}
// Guests tab
@ -1820,7 +1826,8 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx = SPR_TAB_GRAPH_0;
if (w->page == WINDOW_PARK_PAGE_GUESTS)
sprite_idx += (w->frame_no / 8) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_3].left, w->y + w->widgets[WIDX_TAB_3].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_3].left, w->windowPos.y + w->widgets[WIDX_TAB_3].top, 0);
sprite_idx = g_peep_animation_entries[PEEP_SPRITE_TYPE_NORMAL].sprite_animation->base_image + 1;
if (w->page == WINDOW_PARK_PAGE_GUESTS)
@ -1828,8 +1835,8 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx |= 0xA9E00000;
gfx_draw_sprite(
dpi, sprite_idx, w->x + (w->widgets[WIDX_TAB_3].left + w->widgets[WIDX_TAB_3].right) / 2,
w->y + w->widgets[WIDX_TAB_3].bottom - 9, 0);
dpi, sprite_idx, w->windowPos.x + (w->widgets[WIDX_TAB_3].left + w->widgets[WIDX_TAB_3].right) / 2,
w->windowPos.y + w->widgets[WIDX_TAB_3].bottom - 9, 0);
}
// Price tab
@ -1838,7 +1845,8 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx = SPR_TAB_ADMISSION_0;
if (w->page == WINDOW_PARK_PAGE_PRICE)
sprite_idx += (w->frame_no / 2) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_4].left, w->y + w->widgets[WIDX_TAB_4].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_4].left, w->windowPos.y + w->widgets[WIDX_TAB_4].top, 0);
}
// Statistics tab
@ -1847,7 +1855,8 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx = SPR_TAB_STATS_0;
if (w->page == WINDOW_PARK_PAGE_STATS)
sprite_idx += (w->frame_no / 4) % 7;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_5].left, w->y + w->widgets[WIDX_TAB_5].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_5].left, w->windowPos.y + w->widgets[WIDX_TAB_5].top, 0);
}
// Objective tab
@ -1856,12 +1865,14 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx = SPR_TAB_OBJECTIVE_0;
if (w->page == WINDOW_PARK_PAGE_OBJECTIVE)
sprite_idx += (w->frame_no / 4) % 16;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_6].left, w->y + w->widgets[WIDX_TAB_6].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_6].left, w->windowPos.y + w->widgets[WIDX_TAB_6].top, 0);
}
// Awards tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_7)))
gfx_draw_sprite(dpi, SPR_TAB_AWARDS, w->x + w->widgets[WIDX_TAB_7].left, w->y + w->widgets[WIDX_TAB_7].top, 0);
gfx_draw_sprite(
dpi, SPR_TAB_AWARDS, w->windowPos.x + w->widgets[WIDX_TAB_7].left, w->windowPos.y + w->widgets[WIDX_TAB_7].top, 0);
}
#pragma endregion

View File

@ -239,8 +239,8 @@ static void window_player_overview_show_group_dropdown(rct_window* w, rct_widget
numItems = network_get_num_groups();
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
for (i = 0; i < network_get_num_groups(); i++)
{
@ -377,13 +377,13 @@ void window_player_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
set_format_arg(0, const char*, buffer);
gfx_draw_string_centred_clipped(
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->x + (widget->left + widget->right - 11) / 2,
w->y + widget->top, widget->right - widget->left - 8);
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + (widget->left + widget->right - 11) / 2,
w->windowPos.y + widget->top, widget->right - widget->left - 8);
}
// Draw ping
int32_t x = w->x + 90;
int32_t y = w->y + 24;
int32_t x = w->windowPos.x + 90;
int32_t y = w->windowPos.y + 24;
set_format_arg(0, rct_string_id, STR_PING);
gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, 0, x, y);
@ -392,8 +392,8 @@ void window_player_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
gfx_draw_string(dpi, ping, w->colours[2], x + 30, y);
// Draw last action
x = w->x + (w->width / 2);
y = w->y + w->height - 13;
x = w->windowPos.x + (w->width / 2);
y = w->windowPos.y + w->height - 13;
int32_t width = w->width - 8;
int32_t lastaction = network_get_player_last_action(player, 0);
set_format_arg(0, rct_string_id, STR_ACTION_NA);
@ -456,7 +456,7 @@ void window_player_overview_invalidate(rct_window* w)
{
rct_widget* viewportWidget = &window_player_overview_widgets[WIDX_VIEWPORT];
viewport->pos = { w->x + viewportWidget->left, w->y + viewportWidget->top };
viewport->pos = w->windowPos + ScreenCoordsXY{ viewportWidget->left, viewportWidget->top };
viewport->width = viewportWidget->right - viewportWidget->left;
viewport->height = viewportWidget->bottom - viewportWidget->top;
viewport->view_width = viewport->width << viewport->zoom;
@ -544,8 +544,8 @@ void window_player_statistics_paint(rct_window* w, rct_drawpixelinfo* dpi)
return;
}
int32_t x = w->x + window_player_overview_widgets[WIDX_PAGE_BACKGROUND].left + 4;
int32_t y = w->y + window_player_overview_widgets[WIDX_PAGE_BACKGROUND].top + 4;
int32_t x = w->windowPos.x + window_player_overview_widgets[WIDX_PAGE_BACKGROUND].left + 4;
int32_t y = w->windowPos.y + window_player_overview_widgets[WIDX_PAGE_BACKGROUND].top + 4;
set_format_arg(0, uint32_t, network_get_player_commands_ran(player));
gfx_draw_string_left(dpi, STR_COMMANDS_RAN, gCommonFormatArgs, COLOUR_BLACK, x, y);
@ -581,7 +581,7 @@ static void window_player_set_page(rct_window* w, int32_t page)
if (w->viewport == nullptr)
{
viewport_create(
w, { w->x, w->y }, w->width, w->height, 0, TileCoordsXYZ(128, 128, 0).ToCoordsXYZ(), 1, SPRITE_INDEX_NULL);
w, w->windowPos, w->width, w->height, 0, TileCoordsXYZ(128, 128, 0).ToCoordsXYZ(), 1, SPRITE_INDEX_NULL);
w->flags |= WF_NO_SCROLLING;
window_event_invalidate_call(w);
window_player_update_viewport(w, false);
@ -611,8 +611,8 @@ static void window_player_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (!widget_is_disabled(w, WIDX_TAB_1))
{
widget = &w->widgets[WIDX_TAB_1];
x = widget->left + w->x;
y = widget->top + w->y;
x = widget->left + w->windowPos.x;
y = widget->top + w->windowPos.y;
imageId = SPR_PEEP_LARGE_FACE_NORMAL;
gfx_draw_sprite(dpi, imageId, x, y, 0);
}
@ -621,8 +621,8 @@ static void window_player_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (!widget_is_disabled(w, WIDX_TAB_2))
{
widget = &w->widgets[WIDX_TAB_2];
x = widget->left + w->x;
y = widget->top + w->y;
x = widget->left + w->windowPos.x;
y = widget->top + w->windowPos.y;
imageId = SPR_TAB_FINANCES_SUMMARY_0;
if (w->page == WINDOW_PLAYER_PAGE_STATISTICS)
@ -659,11 +659,10 @@ static void window_player_update_viewport(rct_window* w, bool scroll)
scroll = false;
}
if (!scroll || w->saved_view_x != centreLoc->x || w->saved_view_y != centreLoc->y)
if (!scroll || w->savedViewPos != centreLoc)
{
w->flags |= WF_SCROLLING_TO_LOCATION;
w->saved_view_x = centreLoc->x;
w->saved_view_y = centreLoc->y;
w->savedViewPos = *centreLoc;
if (!scroll)
{
w->viewport->viewPos = *centreLoc;

View File

@ -338,8 +338,8 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp
{
baseWidgetIndex = baseWidgetIndex - WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP;
int32_t x = w->x + 10;
int32_t y = w->y + w->widgets[WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP + baseWidgetIndex].top + 12;
int32_t x = w->windowPos.x + 10;
int32_t y = w->windowPos.y + w->widgets[WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP + baseWidgetIndex].top + 12;
rct_string_id stringId;
if (gResearchProgressStage == RESEARCH_STAGE_FINISHED_ALL)
@ -393,8 +393,8 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp
}
// Last development
x = w->x + 10;
y = w->y + w->widgets[WIDX_LAST_DEVELOPMENT_GROUP + baseWidgetIndex].top + 12;
x = w->windowPos.x + 10;
y = w->windowPos.y + w->widgets[WIDX_LAST_DEVELOPMENT_GROUP + baseWidgetIndex].top + 12;
rct_string_id lastDevelopmentFormat;
if (gResearchLastItem.has_value())
@ -463,8 +463,9 @@ static void window_research_funding_mousedown(rct_window* w, rct_widgetindex wid
gDropdownItemsArgs[i] = ResearchFundingLevelNames[i];
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4, dropdownWidget->right - dropdownWidget->left - 3);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4,
dropdownWidget->right - dropdownWidget->left - 3);
int32_t currentResearchLevel = gResearchFundingLevel;
dropdown_set_checked(currentResearchLevel, true);
@ -570,7 +571,8 @@ void window_research_funding_page_paint(rct_window* w, rct_drawpixelinfo* dpi, r
int32_t currentResearchLevel = gResearchFundingLevel;
money32 currentResearchCostPerWeek = research_cost_table[currentResearchLevel];
gfx_draw_string_left(dpi, STR_RESEARCH_COST_PER_MONTH, &currentResearchCostPerWeek, COLOUR_BLACK, w->x + 10, w->y + 77);
gfx_draw_string_left(
dpi, STR_RESEARCH_COST_PER_MONTH, &currentResearchCostPerWeek, COLOUR_BLACK, w->windowPos.x + 10, w->windowPos.y + 77);
}
#pragma endregion
@ -638,7 +640,8 @@ static void window_research_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w
spriteIndex += frame;
}
gfx_draw_sprite(dpi, spriteIndex, w->x + w->widgets[widgetIndex].left, w->y + w->widgets[widgetIndex].top, 0);
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
}
}

View File

@ -1255,7 +1255,8 @@ static void window_ride_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w, in
spriteIndex += (frame % window_ride_tab_animation_frames[w->page]);
}
gfx_draw_sprite(dpi, spriteIndex, w->x + w->widgets[widgetIndex].left, w->y + w->widgets[widgetIndex].top, 0);
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
}
}
@ -1290,7 +1291,9 @@ static void window_ride_draw_tab_main(rct_drawpixelinfo* dpi, rct_window* w)
spriteIndex += (w->frame_no / 4) % 8;
break;
}
gfx_draw_sprite(dpi, spriteIndex, w->x + w->widgets[widgetIndex].left, w->y + w->widgets[widgetIndex].top, 0);
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top,
0);
}
}
}
@ -1313,8 +1316,8 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_RIDE_PAGE_VEHICLE)
height += 4;
x += w->x;
y += w->y;
x += w->windowPos.x;
y += w->windowPos.y;
rct_drawpixelinfo clipDPI;
if (!clip_drawpixelinfo(&clipDPI, dpi, x, y, width, height))
@ -1392,7 +1395,8 @@ static void window_ride_draw_tab_customer(rct_drawpixelinfo* dpi, rct_window* w)
spriteIndex += 1;
spriteIndex |= 0xA9E00000;
gfx_draw_sprite(dpi, spriteIndex, w->x + (widget->left + widget->right) / 2, w->y + widget->bottom - 6, 0);
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + (widget->left + widget->right) / 2, w->windowPos.y + widget->bottom - 6, 0);
}
}
@ -1974,7 +1978,7 @@ static void window_ride_init_viewport(rct_window* w)
{
rct_widget* view_widget = &w->widgets[WIDX_VIEWPORT];
auto screenPos = ScreenCoordsXY{ view_widget->left + 1 + w->x, view_widget->top + 1 + w->y };
auto screenPos = w->windowPos + ScreenCoordsXY{ view_widget->left + 1, view_widget->top + 1 };
int32_t width = view_widget->right - view_widget->left - 1;
int32_t height = view_widget->bottom - view_widget->top - 1;
viewport_create(
@ -2139,8 +2143,8 @@ static void window_ride_show_view_dropdown(rct_window* w, rct_widget* widget)
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left);
// First item
gDropdownItemsFormat[0] = STR_DROPDOWN_MENU_LABEL;
@ -2254,7 +2258,8 @@ static void window_ride_show_open_dropdown(rct_window* w, rct_widget* widget)
window_ride_set_dropdown(info, RIDE_STATUS_TESTING, STR_TEST_RIDE);
window_ride_set_dropdown(info, RIDE_STATUS_OPEN, STR_OPEN_RIDE);
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0, info.NumItems);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
info.NumItems);
dropdown_set_checked(info.CheckedIndex, true);
gDropdownDefaultIndex = info.DefaultIndex;
}
@ -2296,8 +2301,8 @@ static void window_ride_show_ride_type_dropdown(rct_window* w, rct_widget* widge
rct_widget* dropdownWidget = widget - 1;
window_dropdown_show_text(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], DROPDOWN_FLAG_STAY_OPEN, RIDE_TYPE_COUNT);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], DROPDOWN_FLAG_STAY_OPEN, RIDE_TYPE_COUNT);
// Find the current ride type in the ordered list.
uint8_t pos = 0;
@ -2407,8 +2412,9 @@ static void window_ride_show_vehicle_type_dropdown(rct_window* w, rct_widget* wi
rct_widget* dropdownWidget = widget - 1;
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
widget->right - dropdownWidget->left);
// Find the current vehicle type in the ordered list.
uint8_t pos = 0;
@ -2890,7 +2896,7 @@ static void window_ride_main_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
window_draw_viewport(dpi, w);
if (w->viewport->flags & VIEWPORT_FLAG_SOUND_ON)
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->x + 2, w->y + 2, 0);
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos.x + 2, w->windowPos.y + 2, 0);
}
// View dropdown
@ -2916,15 +2922,15 @@ static void window_ride_main_paint(rct_window* w, rct_drawpixelinfo* dpi)
widget = &window_ride_main_widgets[WIDX_VIEW];
gfx_draw_string_centred(
dpi, STR_WINDOW_COLOUR_2_STRINGID, w->x + (widget->left + widget->right - 11) / 2, w->y + widget->top, COLOUR_BLACK,
gCommonFormatArgs);
dpi, STR_WINDOW_COLOUR_2_STRINGID, w->windowPos.x + (widget->left + widget->right - 11) / 2,
w->windowPos.y + widget->top, COLOUR_BLACK, gCommonFormatArgs);
// Status
widget = &window_ride_main_widgets[WIDX_STATUS];
rct_string_id ride_status = window_ride_get_status(w, gCommonFormatArgs);
gfx_draw_string_centred_clipped(
dpi, ride_status, gCommonFormatArgs, COLOUR_BLACK, w->x + (widget->left + widget->right) / 2, w->y + widget->top,
widget->right - widget->left);
dpi, ride_status, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + (widget->left + widget->right) / 2,
w->windowPos.y + widget->top, widget->right - widget->left);
}
#pragma endregion
@ -3158,8 +3164,8 @@ static void window_ride_vehicle_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (rideEntry == nullptr)
return;
int32_t x = w->x + 8;
int32_t y = w->y + 64;
int32_t x = w->windowPos.x + 8;
int32_t y = w->windowPos.y + 64;
// Description
y += gfx_draw_string_left_wrapped(dpi, &rideEntry->naming.description, x, y, 300, STR_BLACK_STRING, COLOUR_BLACK);
@ -3384,8 +3390,9 @@ static void window_ride_mode_dropdown(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[i] = RideModeNames[availableModes[i]];
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numAvailableModes, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numAvailableModes,
widget->right - dropdownWidget->left);
// Set checked item
for (i = 0; i < numAvailableModes; i++)
@ -3414,8 +3421,9 @@ static void window_ride_load_dropdown(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[i] = VehicleLoadNames[i];
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 5, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 5,
widget->right - dropdownWidget->left);
dropdown_set_checked(ride->depart_flags & RIDE_DEPART_WAIT_FOR_LOAD_MASK, true);
}
@ -3858,8 +3866,8 @@ static void window_ride_operating_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Horizontal rule between mode settings and depart settings
gfx_fill_rect_inset(
dpi, w->x + window_ride_operating_widgets[WIDX_PAGE_BACKGROUND].left + 4, w->y + 103,
w->x + window_ride_operating_widgets[WIDX_PAGE_BACKGROUND].right - 5, w->y + 104, w->colours[1],
dpi, w->windowPos.x + window_ride_operating_widgets[WIDX_PAGE_BACKGROUND].left + 4, w->windowPos.y + 103,
w->windowPos.x + window_ride_operating_widgets[WIDX_PAGE_BACKGROUND].right - 5, w->windowPos.y + 104, w->colours[1],
INSET_RECT_FLAG_BORDER_INSET);
// Number of block sections
@ -3867,8 +3875,8 @@ static void window_ride_operating_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
auto blockSections = ride->num_block_brakes + ride->num_stations;
gfx_draw_string_left(
dpi, STR_BLOCK_SECTIONS, &blockSections, COLOUR_BLACK, w->x + 21,
ride->mode == RIDE_MODE_POWERED_LAUNCH_BLOCK_SECTIONED ? w->y + 89 : w->y + 61);
dpi, STR_BLOCK_SECTIONS, &blockSections, COLOUR_BLACK, w->windowPos.x + 21,
ride->mode == RIDE_MODE_POWERED_LAUNCH_BLOCK_SECTIONED ? w->windowPos.y + 89 : w->windowPos.y + 61);
}
}
@ -3993,8 +4001,9 @@ static void window_ride_maintenance_mousedown(rct_window* w, rct_widgetindex wid
gDropdownItemsArgs[i] = RideInspectionIntervalNames[i];
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 7, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 7,
widget->right - dropdownWidget->left);
dropdown_set_checked(ride->inspection_interval, true);
break;
@ -4032,8 +4041,8 @@ static void window_ride_maintenance_mousedown(rct_window* w, rct_widgetindex wid
else
{
window_dropdown_show_text(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], DROPDOWN_FLAG_STAY_OPEN, num_items);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], DROPDOWN_FLAG_STAY_OPEN, num_items);
num_items = 1;
int32_t breakdownReason = ride->breakdown_reason_pending;
@ -4254,20 +4263,20 @@ static void window_ride_maintenance_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Locate mechanic button image
rct_widget* widget = &window_ride_maintenance_widgets[WIDX_LOCATE_MECHANIC];
int32_t x = w->x + widget->left;
int32_t y = w->y + widget->top;
int32_t x = w->windowPos.x + widget->left;
int32_t y = w->windowPos.y + widget->top;
gfx_draw_sprite(dpi, (gStaffMechanicColour << 24) | IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS | SPR_MECHANIC, x, y, 0);
// Inspection label
widget = &window_ride_maintenance_widgets[WIDX_INSPECTION_INTERVAL];
x = w->x + 4;
y = w->y + widget->top + 1;
x = w->windowPos.x + 4;
y = w->windowPos.y + widget->top + 1;
gfx_draw_string_left(dpi, STR_INSPECTION, nullptr, COLOUR_BLACK, x, y);
// Reliability
widget = &window_ride_maintenance_widgets[WIDX_PAGE_BACKGROUND];
x = w->x + widget->left + 4;
y = w->y + widget->top + 4;
x = w->windowPos.x + widget->left + 4;
y = w->windowPos.y + widget->top + 4;
uint16_t reliability = ride->reliability_percentage;
gfx_draw_string_left(dpi, STR_RELIABILITY_LABEL_1757, &reliability, COLOUR_BLACK, x, y);
@ -4508,8 +4517,9 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4,
widget->right - dropdownWidget->left);
dropdown_set_checked(colourSchemeIndex, true);
break;
@ -4530,8 +4540,9 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 4,
widget->right - dropdownWidget->left);
dropdown_set_checked(ride->track_colour[colourSchemeIndex].supports, true);
break;
@ -4555,8 +4566,9 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, ddIndex, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, ddIndex,
widget->right - dropdownWidget->left);
break;
}
case WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN:
@ -4568,9 +4580,9 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, rideEntry->max_cars_in_train > 1 ? 3 : 2,
widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN,
rideEntry->max_cars_in_train > 1 ? 3 : 2, widget->right - dropdownWidget->left);
dropdown_set_checked(ride->colour_scheme_type & 3, true);
break;
@ -4589,8 +4601,9 @@ static void window_ride_colour_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
widget->right - dropdownWidget->left);
dropdown_set_checked(w->vehicleIndex, true);
break;
@ -4989,8 +5002,8 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
widget = &window_ride_colour_widgets[WIDX_TRACK_PREVIEW];
if (widget->type != WWT_EMPTY)
gfx_fill_rect(
dpi, w->x + widget->left + 1, w->y + widget->top + 1, w->x + widget->right - 1, w->y + widget->bottom - 1,
PALETTE_INDEX_12);
dpi, w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1, w->windowPos.x + widget->right - 1,
w->windowPos.y + widget->bottom - 1, PALETTE_INDEX_12);
auto trackColour = ride_get_track_colour(ride, w->ride_colour);
@ -4998,8 +5011,8 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
auto rideEntry = ride->GetRideEntry();
if (rideEntry == nullptr || rideEntry->shop_item == SHOP_ITEM_NONE)
{
int32_t x = w->x + widget->left;
int32_t y = w->y + widget->top;
int32_t x = w->windowPos.x + widget->left;
int32_t y = w->windowPos.y + widget->top;
// Track
if (ride->type == RIDE_TYPE_MAZE)
@ -5027,8 +5040,8 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
}
else
{
int32_t x = w->x + (widget->left + widget->right) / 2 - 8;
int32_t y = w->y + (widget->bottom + widget->top) / 2 - 6;
int32_t x = w->windowPos.x + (widget->left + widget->right) / 2 - 8;
int32_t y = w->windowPos.y + (widget->bottom + widget->top) / 2 - 6;
uint8_t shopItem = rideEntry->shop_item_secondary == SHOP_ITEM_NONE ? rideEntry->shop_item
: rideEntry->shop_item_secondary;
@ -5044,8 +5057,8 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (widget->type != WWT_EMPTY)
{
if (clip_drawpixelinfo(
&clippedDpi, dpi, w->x + widget->left + 1, w->y + widget->top + 1, widget->right - widget->left,
widget->bottom - widget->top))
&clippedDpi, dpi, w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1,
widget->right - widget->left, widget->bottom - widget->top))
{
gfx_clear(&clippedDpi, PALETTE_INDEX_12);
@ -5073,7 +5086,8 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
}
}
gfx_draw_string_left_clipped(dpi, STR_STATION_STYLE, gCommonFormatArgs, COLOUR_BLACK, w->x + 3, w->y + 103, 97);
gfx_draw_string_left_clipped(
dpi, STR_STATION_STYLE, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + 3, w->windowPos.y + 103, 97);
}
}
@ -5225,8 +5239,9 @@ static void window_ride_music_mousedown(rct_window* w, rct_widgetindex widgetInd
}
window_dropdown_show_text_custom_width(
w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - dropdownWidget->left);
w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top,
dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems,
widget->right - dropdownWidget->left);
for (auto i = 0; i < numItems; i++)
{
@ -5524,7 +5539,8 @@ static void window_ride_measurements_mousedown(rct_window* w, rct_widgetindex wi
gDropdownItemsFormat[1] = STR_SAVE_TRACK_DESIGN_WITH_SCENERY_ITEM;
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], DROPDOWN_FLAG_STAY_OPEN, 2);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1],
DROPDOWN_FLAG_STAY_OPEN, 2);
gDropdownDefaultIndex = 0;
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER)
{
@ -5697,13 +5713,13 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi
{
rct_widget* widget = &window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND];
int32_t x = w->x + (widget->right - widget->left) / 2;
int32_t y = w->y + widget->top + 40;
int32_t x = w->windowPos.x + (widget->right - widget->left) / 2;
int32_t y = w->windowPos.y + widget->top + 40;
gfx_draw_string_centred_wrapped(dpi, nullptr, x, y, w->width - 8, STR_CLICK_ITEMS_OF_SCENERY_TO_SELECT, COLOUR_BLACK);
x = w->x + 4;
y = w->y + window_ride_measurements_widgets[WIDX_SELECT_NEARBY_SCENERY].bottom + 17;
gfx_fill_rect_inset(dpi, x, y, w->x + 312, y + 1, w->colours[1], INSET_RECT_FLAG_BORDER_INSET);
x = w->windowPos.x + 4;
y = w->windowPos.y + window_ride_measurements_widgets[WIDX_SELECT_NEARBY_SCENERY].bottom + 17;
gfx_fill_rect_inset(dpi, x, y, w->windowPos.x + 312, y + 1, w->colours[1], INSET_RECT_FLAG_BORDER_INSET);
}
else
{
@ -5711,8 +5727,8 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi
if (ride == nullptr)
return;
int32_t x = w->x + window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND].left + 4;
int32_t y = w->y + window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND].top + 4;
int32_t x = w->windowPos.x + window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND].left + 4;
int32_t y = w->windowPos.y + window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND].top + 4;
if (ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)
{
@ -6755,8 +6771,8 @@ static void window_ride_income_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (rideEntry == nullptr)
return;
x = w->x + window_ride_income_widgets[WIDX_PAGE_BACKGROUND].left + 4;
y = w->y + window_ride_income_widgets[WIDX_PAGE_BACKGROUND].top + 33;
x = w->windowPos.x + window_ride_income_widgets[WIDX_PAGE_BACKGROUND].left + 4;
y = w->windowPos.y + window_ride_income_widgets[WIDX_PAGE_BACKGROUND].top + 33;
// Primary item profit / loss per item sold
primaryItem = rideEntry->shop_item;
@ -6963,8 +6979,8 @@ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (ride == nullptr)
return;
x = w->x + window_ride_customer_widgets[WIDX_PAGE_BACKGROUND].left + 4;
y = w->y + window_ride_customer_widgets[WIDX_PAGE_BACKGROUND].top + 4;
x = w->windowPos.x + window_ride_customer_widgets[WIDX_PAGE_BACKGROUND].left + 4;
y = w->windowPos.y + window_ride_customer_widgets[WIDX_PAGE_BACKGROUND].top + 4;
// Customers currently on ride
if (ride->IsRide())

View File

@ -2332,8 +2332,8 @@ static void window_ride_construction_paint(rct_window* w, rct_drawpixelinfo* dpi
return;
// Draw track piece
x = w->x + widget->left + 1;
y = w->y + widget->top + 1;
x = w->windowPos.x + widget->left + 1;
y = w->windowPos.y + widget->top + 1;
width = widget->right - widget->left - 1;
height = widget->bottom - widget->top - 1;
if (clip_drawpixelinfo(&clipdpi, dpi, x, y, width, height))
@ -2343,8 +2343,8 @@ static void window_ride_construction_paint(rct_window* w, rct_drawpixelinfo* dpi
}
// Draw cost
x = w->x + (widget->left + widget->right) / 2;
y = w->y + widget->bottom - 23;
x = w->windowPos.x + (widget->left + widget->right) / 2;
y = w->windowPos.y + widget->bottom - 23;
if (_rideConstructionState != RIDE_CONSTRUCTION_STATE_PLACE)
gfx_draw_string_centred(dpi, STR_BUILD_THIS, x, y, COLOUR_BLACK, w);
@ -3387,7 +3387,7 @@ static void window_ride_construction_show_special_track_dropdown(rct_window* w,
}
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0, 0,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0, 0,
_numCurrentPossibleRideConfigurations, widget->right - widget->left);
for (int32_t i = 0; i < 32; i++)

View File

@ -318,7 +318,8 @@ static void window_ride_list_mousedown(rct_window* w, rct_widgetindex widgetInde
{
gDropdownItemsFormat[0] = STR_CLOSE_ALL;
gDropdownItemsFormat[1] = STR_OPEN_ALL;
window_dropdown_show_text(w->x + widget->left, w->y + widget->top, widget->bottom - widget->top, w->colours[1], 0, 2);
window_dropdown_show_text(
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top, w->colours[1], 0, 2);
}
else if (widgetIndex == WIDX_INFORMATION_TYPE_DROPDOWN)
{
@ -353,8 +354,8 @@ static void window_ride_list_mousedown(rct_window* w, rct_widgetindex widgetInde
}
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN,
numItems, widget->right - widget->left - 3);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
if (selectedIndex != -1)
{
dropdown_set_checked(selectedIndex, true);
@ -569,8 +570,8 @@ static void window_ride_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw number of attractions on bottom
gfx_draw_string_left(
dpi, ride_list_statusbar_count_strings[w->page], &w->no_list_items, COLOUR_BLACK, w->x + 4,
w->widgets[WIDX_LIST].bottom + w->y + 2);
dpi, ride_list_statusbar_count_strings[w->page], &w->no_list_items, COLOUR_BLACK, w->windowPos.x + 4,
w->widgets[WIDX_LIST].bottom + w->windowPos.y + 2);
}
/**
@ -754,19 +755,22 @@ static void window_ride_list_draw_tab_images(rct_drawpixelinfo* dpi, rct_window*
sprite_idx = SPR_TAB_RIDE_0;
if (w->page == PAGE_RIDES)
sprite_idx += w->frame_no / 4;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_1].left, w->y + w->widgets[WIDX_TAB_1].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_1].left, w->windowPos.y + w->widgets[WIDX_TAB_1].top, 0);
// Shops and stalls tab
sprite_idx = SPR_TAB_SHOPS_AND_STALLS_0;
if (w->page == PAGE_SHOPS_AND_STALLS)
sprite_idx += w->frame_no / 4;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_2].left, w->y + w->widgets[WIDX_TAB_2].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_2].left, w->windowPos.y + w->widgets[WIDX_TAB_2].top, 0);
// Information kiosks and facilities tab
sprite_idx = SPR_TAB_KIOSKS_AND_FACILITIES_0;
if (w->page == PAGE_KIOSKS_AND_FACILITIES)
sprite_idx += (w->frame_no / 4) % 8;
gfx_draw_sprite(dpi, sprite_idx, w->x + w->widgets[WIDX_TAB_3].left, w->y + w->widgets[WIDX_TAB_3].top, 0);
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_3].left, w->windowPos.y + w->widgets[WIDX_TAB_3].top, 0);
}
/**

View File

@ -764,7 +764,7 @@ static void window_scenery_update(rct_window* w)
rct_window* other = window_find_from_point(state->position);
if (other == w)
{
ScreenCoordsXY window = state->position - ScreenCoordsXY{ w->x - 26, w->y };
ScreenCoordsXY window = state->position - ScreenCoordsXY{ w->windowPos.x - 26, w->windowPos.y };
if (window.y < 44 || window.x <= w->width)
{
@ -901,7 +901,7 @@ void window_scenery_scrollmousedown(rct_window* w, int32_t scrollIndex, const Sc
gWindowSceneryPaintEnabled &= 0xFE;
gWindowSceneryEyedropperEnabled = false;
audio_play_sound(SoundId::Click1, 0, w->x + (w->width / 2));
audio_play_sound(SoundId::Click1, 0, w->windowPos.x + (w->width / 2));
w->scenery.hover_counter = -16;
gSceneryPlaceCost = MONEY32_UNDEFINED;
w->Invalidate();
@ -1128,8 +1128,8 @@ void window_scenery_paint(rct_window* w, rct_drawpixelinfo* dpi)
uint32_t imageId = ((w->colours[1] << 19) | window_scenery_widgets[selectedWidgetId].image) + 1ul;
gfx_draw_sprite(
dpi, imageId, w->x + window_scenery_widgets[selectedWidgetId].left, w->y + window_scenery_widgets[selectedWidgetId].top,
selectedWidgetId);
dpi, imageId, w->windowPos.x + window_scenery_widgets[selectedWidgetId].left,
w->windowPos.y + window_scenery_widgets[selectedWidgetId].top, selectedWidgetId);
uint16_t selectedSceneryEntryId = w->scenery.selected_scenery_id;
if (selectedSceneryEntryId == WINDOW_SCENERY_TAB_SELECTION_UNDEFINED)
@ -1185,12 +1185,14 @@ void window_scenery_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
// -14
gfx_draw_string_right(
dpi, STR_COST_LABEL, gCommonFormatArgs, COLOUR_BLACK, w->x + w->width - 0x1A, w->y + w->height - 13);
dpi, STR_COST_LABEL, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + w->width - 0x1A,
w->windowPos.y + w->height - 13);
}
set_format_arg(0, rct_string_id, sceneryEntry != nullptr ? sceneryEntry->name : (rct_string_id)STR_UNKNOWN_OBJECT_TYPE);
gfx_draw_string_left_clipped(
dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, w->x + 3, w->y + w->height - 13, w->width - 19);
dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + 3, w->windowPos.y + w->height - 13,
w->width - 19);
}
/**

View File

@ -236,8 +236,8 @@ static void window_scenery_scatter_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (gWindowSceneryScatterSize > MAX_TOOL_SIZE_WITH_SPRITE)
{
auto preview = window_scenery_scatter_widgets[WIDX_PREVIEW];
int32_t x = w->x + (preview.left + preview.right) / 2;
int32_t y = w->y + (preview.top + preview.bottom) / 2;
int32_t x = w->windowPos.x + (preview.left + preview.right) / 2;
int32_t y = w->windowPos.y + (preview.top + preview.bottom) / 2;
gfx_draw_string_centred(dpi, STR_LAND_TOOL_SIZE_VALUE, x, y - 2, COLOUR_BLACK, &gWindowSceneryScatterSize);
}
}

View File

@ -272,8 +272,8 @@ static void window_server_list_scroll_mousedown(rct_window* w, int32_t scrollInd
const auto& server = _serverList.GetServer(serverIndex);
auto listWidget = &w->widgets[WIDX_LIST];
int32_t ddx = w->x + listWidget->left + screenCoords.x + 2 - w->scrolls[0].h_left;
int32_t ddy = w->y + listWidget->top + screenCoords.y + 2 - w->scrolls[0].v_top;
int32_t ddx = w->windowPos.x + listWidget->left + screenCoords.x + 2 - w->scrolls[0].h_left;
int32_t ddy = w->windowPos.y + listWidget->top + screenCoords.y + 2 - w->scrolls[0].v_top;
gDropdownItemsFormat[0] = STR_JOIN_GAME;
if (server.favourite)
@ -405,15 +405,19 @@ static void window_server_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
window_draw_widgets(w, dpi);
gfx_draw_string_left(dpi, STR_PLAYER_NAME, nullptr, COLOUR_WHITE, w->x + 6, w->y + w->widgets[WIDX_PLAYER_NAME_INPUT].top);
gfx_draw_string_left(
dpi, STR_PLAYER_NAME, nullptr, COLOUR_WHITE, w->windowPos.x + 6,
w->windowPos.y + w->widgets[WIDX_PLAYER_NAME_INPUT].top);
// Draw version number
std::string version = network_get_version();
const char* versionCStr = version.c_str();
gfx_draw_string_left(
dpi, STR_NETWORK_VERSION, (void*)&versionCStr, COLOUR_WHITE, w->x + 324, w->y + w->widgets[WIDX_START_SERVER].top + 1);
dpi, STR_NETWORK_VERSION, (void*)&versionCStr, COLOUR_WHITE, w->windowPos.x + 324,
w->windowPos.y + w->widgets[WIDX_START_SERVER].top + 1);
gfx_draw_string_left(dpi, _statusText, (void*)&_numPlayersOnline, COLOUR_WHITE, w->x + 8, w->y + w->height - 15);
gfx_draw_string_left(
dpi, _statusText, (void*)&_numPlayersOnline, COLOUR_WHITE, w->windowPos.x + 8, w->windowPos.y + w->height - 15);
}
static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t scrollIndex)

View File

@ -338,14 +338,20 @@ static void window_server_start_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
window_draw_widgets(w, dpi);
gfx_draw_string_left(dpi, STR_PORT, nullptr, w->colours[1], w->x + 6, w->y + w->widgets[WIDX_PORT_INPUT].top);
gfx_draw_string_left(dpi, STR_SERVER_NAME, nullptr, w->colours[1], w->x + 6, w->y + w->widgets[WIDX_NAME_INPUT].top);
gfx_draw_string_left(
dpi, STR_SERVER_DESCRIPTION, nullptr, w->colours[1], w->x + 6, w->y + w->widgets[WIDX_DESCRIPTION_INPUT].top);
dpi, STR_PORT, nullptr, w->colours[1], w->windowPos.x + 6, w->windowPos.y + w->widgets[WIDX_PORT_INPUT].top);
gfx_draw_string_left(
dpi, STR_SERVER_GREETING, nullptr, w->colours[1], w->x + 6, w->y + w->widgets[WIDX_GREETING_INPUT].top);
gfx_draw_string_left(dpi, STR_PASSWORD, nullptr, w->colours[1], w->x + 6, w->y + w->widgets[WIDX_PASSWORD_INPUT].top);
gfx_draw_string_left(dpi, STR_MAX_PLAYERS, nullptr, w->colours[1], w->x + 6, w->y + w->widgets[WIDX_MAXPLAYERS].top);
dpi, STR_SERVER_NAME, nullptr, w->colours[1], w->windowPos.x + 6, w->windowPos.y + w->widgets[WIDX_NAME_INPUT].top);
gfx_draw_string_left(
dpi, STR_SERVER_DESCRIPTION, nullptr, w->colours[1], w->windowPos.x + 6,
w->windowPos.y + w->widgets[WIDX_DESCRIPTION_INPUT].top);
gfx_draw_string_left(
dpi, STR_SERVER_GREETING, nullptr, w->colours[1], w->windowPos.x + 6,
w->windowPos.y + w->widgets[WIDX_GREETING_INPUT].top);
gfx_draw_string_left(
dpi, STR_PASSWORD, nullptr, w->colours[1], w->windowPos.x + 6, w->windowPos.y + w->widgets[WIDX_PASSWORD_INPUT].top);
gfx_draw_string_left(
dpi, STR_MAX_PLAYERS, nullptr, w->colours[1], w->windowPos.x + 6, w->windowPos.y + w->widgets[WIDX_MAXPLAYERS].top);
}
#endif

View File

@ -105,8 +105,8 @@ static void window_shortcut_change_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
window_draw_widgets(w, dpi);
int32_t x = w->x + 125;
int32_t y = w->y + 30;
int32_t x = w->windowPos.x + 125;
int32_t y = w->windowPos.y + 30;
set_format_arg(0, rct_string_id, ShortcutStringIds[gKeyboardShortcutChangeId]);
gfx_draw_string_centred_wrapped(dpi, gCommonFormatArgs, x, y, 242, STR_SHORTCUT_CHANGE_PROMPT, COLOUR_BLACK);

View File

@ -188,7 +188,7 @@ rct_window* window_sign_open(rct_windownumber number)
// Create viewport
viewportWidget = &window_sign_widgets[WIDX_VIEWPORT];
viewport_create(
w, { w->x + viewportWidget->left + 1, w->y + viewportWidget->top + 1 },
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 1, (viewportWidget->bottom - viewportWidget->top) - 1, 0,
{ signViewPos, view_z }, 0, SPRITE_INDEX_NULL);
@ -367,7 +367,7 @@ static void window_sign_viewport_rotate(rct_window* w)
// Create viewport
rct_widget* viewportWidget = &window_sign_widgets[WIDX_VIEWPORT];
viewport_create(
w, { w->x + viewportWidget->left + 1, w->y + viewportWidget->top + 1 },
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 1, (viewportWidget->bottom - viewportWidget->top) - 1, 0, signViewPos,
0, SPRITE_INDEX_NULL);
if (w->viewport != nullptr)
@ -431,7 +431,7 @@ rct_window* window_sign_small_open(rct_windownumber number)
// Create viewport
viewportWidget = &window_sign_widgets[WIDX_VIEWPORT];
viewport_create(
w, { w->x + viewportWidget->left + 1, w->y + viewportWidget->top + 1 },
w, w->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
(viewportWidget->right - viewportWidget->left) - 1, (viewportWidget->bottom - viewportWidget->top) - 1, 0,
{ signViewPos, view_z }, 0, SPRITE_INDEX_NULL);

View File

@ -567,8 +567,8 @@ void window_staff_overview_mousedown(rct_window* w, rct_widgetindex widgetIndex,
gDropdownItemsFormat[0] = STR_SET_PATROL_AREA;
gDropdownItemsFormat[1] = STR_CLEAR_PATROL_AREA;
int32_t x = widget->left + w->x;
int32_t y = widget->top + w->y;
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t extray = widget->bottom - widget->top + 1;
window_dropdown_show_text(x, y, extray, w->colours[1], 0, 2);
gDropdownDefaultIndex = 0;
@ -947,7 +947,7 @@ void window_staff_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
rct_viewport* viewport = w->viewport;
if (viewport->flags & VIEWPORT_FLAG_SOUND_ON)
{
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->x + 2, w->y + 2, 0);
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos.x + 2, w->windowPos.y + 2, 0);
}
}
@ -955,8 +955,8 @@ void window_staff_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
Peep* peep = GET_PEEP(w->number);
peep->FormatActionTo(gCommonFormatArgs);
rct_widget* widget = &w->widgets[WIDX_BTM_LABEL];
int32_t x = (widget->left + widget->right) / 2 + w->x;
int32_t y = w->y + widget->top;
int32_t x = (widget->left + widget->right) / 2 + w->windowPos.x;
int32_t y = w->windowPos.y + widget->top;
int32_t width = widget->right - widget->left;
gfx_draw_string_centred_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, x, y, width);
}
@ -971,8 +971,8 @@ void window_staff_options_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
return;
rct_widget* widget = &w->widgets[WIDX_TAB_2];
int32_t x = widget->left + w->x;
int32_t y = widget->top + w->y;
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t image_id = SPR_TAB_STAFF_OPTIONS_0;
@ -994,8 +994,8 @@ void window_staff_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
return;
rct_widget* widget = &w->widgets[WIDX_TAB_3];
int32_t x = widget->left + w->x;
int32_t y = widget->top + w->y;
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t image_id = SPR_TAB_STATS_0;
@ -1018,8 +1018,8 @@ void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
rct_widget* widget = &w->widgets[WIDX_TAB_1];
int32_t width = widget->right - widget->left - 1;
int32_t height = widget->bottom - widget->top - 1;
int32_t x = widget->left + 1 + w->x;
int32_t y = widget->top + 1 + w->y;
int32_t x = widget->left + 1 + w->windowPos.x;
int32_t y = widget->top + 1 + w->windowPos.y;
if (w->page == WINDOW_STAFF_OVERVIEW)
height++;
@ -1101,8 +1101,8 @@ void window_staff_stats_paint(rct_window* w, rct_drawpixelinfo* dpi)
Peep* peep = GET_PEEP(w->number);
int32_t x = w->x + window_staff_stats_widgets[WIDX_RESIZE].left + 4;
int32_t y = w->y + window_staff_stats_widgets[WIDX_RESIZE].top + 4;
int32_t x = w->windowPos.x + window_staff_stats_widgets[WIDX_RESIZE].left + 4;
int32_t y = w->windowPos.y + window_staff_stats_widgets[WIDX_RESIZE].top + 4;
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
{
@ -1380,7 +1380,7 @@ void window_staff_viewport_init(rct_window* w)
{
rct_widget* view_widget = &w->widgets[WIDX_VIEWPORT];
auto screenPos = ScreenCoordsXY{ view_widget->left + 1 + w->x, view_widget->top + 1 + w->y };
auto screenPos = ScreenCoordsXY{ view_widget->left + 1 + w->windowPos.x, view_widget->top + 1 + w->windowPos.y };
int32_t width = view_widget->right - view_widget->left - 1;
int32_t height = view_widget->bottom - view_widget->top - 1;
@ -1427,8 +1427,8 @@ void window_staff_options_mousedown(rct_window* w, rct_widgetindex widgetIndex,
// Get the dropdown box widget instead of button.
widget--;
int32_t x = widget->left + w->x;
int32_t y = widget->top + w->y;
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t extray = widget->bottom - widget->top + 1;
int32_t width = widget->right - widget->left - 3;
window_dropdown_show_text_custom_width(x, y, extray, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numCostumes, width);

View File

@ -129,8 +129,8 @@ static void window_staff_fire_paint(rct_window *w, rct_drawpixelinfo *dpi)
peep->FormatNameTo(gCommonFormatArgs);
int32_t x = w->x + WW / 2;
int32_t y = w->y + (WH / 2) - 3;
int32_t x = w->windowPos.x + WW / 2;
int32_t y = w->windowPos.y + (WH / 2) - 3;
gfx_draw_string_centred_wrapped(dpi, gCommonFormatArgs, x, y, WW - 4, STR_FIRE_STAFF_ID, COLOUR_BLACK);
}

View File

@ -569,8 +569,8 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
(window_staff_list_widgets[WIDX_STAFF_LIST_HANDYMEN_TAB].left
+ window_staff_list_widgets[WIDX_STAFF_LIST_HANDYMEN_TAB].right)
/ 2
+ w->x,
window_staff_list_widgets[WIDX_STAFF_LIST_HANDYMEN_TAB].bottom - 6 + w->y, 0);
+ w->windowPos.x,
window_staff_list_widgets[WIDX_STAFF_LIST_HANDYMEN_TAB].bottom - 6 + w->windowPos.y, 0);
// Mechanic tab image
i = (selectedTab == 1 ? (w->list_information_type & ~3) : 0);
@ -581,8 +581,8 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
(window_staff_list_widgets[WIDX_STAFF_LIST_MECHANICS_TAB].left
+ window_staff_list_widgets[WIDX_STAFF_LIST_MECHANICS_TAB].right)
/ 2
+ w->x,
window_staff_list_widgets[WIDX_STAFF_LIST_MECHANICS_TAB].bottom - 6 + w->y, 0);
+ w->windowPos.x,
window_staff_list_widgets[WIDX_STAFF_LIST_MECHANICS_TAB].bottom - 6 + w->windowPos.y, 0);
// Security tab image
i = (selectedTab == 2 ? (w->list_information_type & ~3) : 0);
@ -593,13 +593,13 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
(window_staff_list_widgets[WIDX_STAFF_LIST_SECURITY_TAB].left
+ window_staff_list_widgets[WIDX_STAFF_LIST_SECURITY_TAB].right)
/ 2
+ w->x,
window_staff_list_widgets[WIDX_STAFF_LIST_SECURITY_TAB].bottom - 6 + w->y, 0);
+ w->windowPos.x,
window_staff_list_widgets[WIDX_STAFF_LIST_SECURITY_TAB].bottom - 6 + w->windowPos.y, 0);
rct_drawpixelinfo sprite_dpi;
if (clip_drawpixelinfo(
&sprite_dpi, dpi, window_staff_list_widgets[WIDX_STAFF_LIST_ENTERTAINERS_TAB].left + w->x + 1,
window_staff_list_widgets[WIDX_STAFF_LIST_ENTERTAINERS_TAB].top + w->y + 1,
&sprite_dpi, dpi, window_staff_list_widgets[WIDX_STAFF_LIST_ENTERTAINERS_TAB].left + w->windowPos.x + 1,
window_staff_list_widgets[WIDX_STAFF_LIST_ENTERTAINERS_TAB].top + w->windowPos.y + 1,
window_staff_list_widgets[WIDX_STAFF_LIST_ENTERTAINERS_TAB].right
- window_staff_list_widgets[WIDX_STAFF_LIST_ENTERTAINERS_TAB].left - 1,
window_staff_list_widgets[WIDX_STAFF_LIST_ENTERTAINERS_TAB].bottom
@ -614,14 +614,15 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
{
set_format_arg(0, money32, gStaffWageTable[selectedTab]);
gfx_draw_string_left(dpi, STR_COST_PER_MONTH, gCommonFormatArgs, COLOUR_BLACK, w->x + w->width - 155, w->y + 0x20);
gfx_draw_string_left(
dpi, STR_COST_PER_MONTH, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + w->width - 155, w->windowPos.y + 0x20);
}
if (selectedTab < 3)
{
gfx_draw_string_left(
dpi, STR_UNIFORM_COLOUR, w, COLOUR_BLACK, w->x + 6,
window_staff_list_widgets[WIDX_STAFF_LIST_UNIFORM_COLOUR_PICKER].top + w->y + 1);
dpi, STR_UNIFORM_COLOUR, w, COLOUR_BLACK, w->windowPos.x + 6,
window_staff_list_widgets[WIDX_STAFF_LIST_UNIFORM_COLOUR_PICKER].top + w->windowPos.y + 1);
}
int32_t staffTypeStringId = StaffNamingConvention[selectedTab].plural;
@ -635,8 +636,8 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
set_format_arg(2, rct_string_id, staffTypeStringId);
gfx_draw_string_left(
dpi, STR_STAFF_LIST_COUNTER, gCommonFormatArgs, COLOUR_BLACK, w->x + 4,
window_staff_list_widgets[WIDX_STAFF_LIST_LIST].bottom + w->y + 2);
dpi, STR_STAFF_LIST_COUNTER, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + 4,
window_staff_list_widgets[WIDX_STAFF_LIST_LIST].bottom + w->windowPos.y + 2);
}
/** rct2: 0x00992A08 */

View File

@ -192,12 +192,12 @@ static void window_text_input_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
window_draw_widgets(w, dpi);
int32_t y = w->y + 25;
int32_t y = w->windowPos.y + 25;
int32_t no_lines = 0;
int32_t font_height = 0;
gfx_draw_string_centred(dpi, input_text_description, w->x + WW / 2, y, w->colours[1], &TextInputDescriptionArgs);
gfx_draw_string_centred(dpi, input_text_description, w->windowPos.x + WW / 2, y, w->colours[1], &TextInputDescriptionArgs);
y += 25;
@ -211,7 +211,8 @@ static void window_text_input_paint(rct_window* w, rct_drawpixelinfo* dpi)
// +13 for cursor when max length.
gfx_wrap_string(wrapped_string, WW - (24 + 13), &no_lines, &font_height);
gfx_fill_rect_inset(dpi, w->x + 10, y, w->x + WW - 10, y + 10 * (no_lines + 1) + 3, w->colours[1], INSET_RECT_F_60);
gfx_fill_rect_inset(
dpi, w->windowPos.x + 10, y, w->windowPos.x + WW - 10, y + 10 * (no_lines + 1) + 3, w->colours[1], INSET_RECT_F_60);
y += 1;
@ -223,7 +224,7 @@ static void window_text_input_paint(rct_window* w, rct_drawpixelinfo* dpi)
int32_t cursorY = 0;
for (int32_t line = 0; line <= no_lines; line++)
{
gfx_draw_string(dpi, wrap_pointer, w->colours[1], w->x + 12, y);
gfx_draw_string(dpi, wrap_pointer, w->colours[1], w->windowPos.x + 12, y);
size_t string_length = get_string_size(wrap_pointer) - 1;
@ -232,7 +233,7 @@ static void window_text_input_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Make a copy of the string for measuring the width.
char temp_string[TEXT_INPUT_SIZE] = { 0 };
std::memcpy(temp_string, wrap_pointer, gTextInput->SelectionStart - char_count);
cursorX = w->x + 13 + gfx_get_string_width(temp_string);
cursorX = w->windowPos.x + 13 + gfx_get_string_width(temp_string);
cursorY = y;
int32_t width = 6;

View File

@ -316,8 +316,8 @@ static void window_themes_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (_selected_tab == i)
sprite_idx += w->frame_no / window_themes_tab_animation_divisor[_selected_tab];
gfx_draw_sprite(
dpi, sprite_idx, w->x + w->widgets[WIDX_THEMES_SETTINGS_TAB + i].left,
w->y + w->widgets[WIDX_THEMES_SETTINGS_TAB + i].top, 0);
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_THEMES_SETTINGS_TAB + i].left,
w->windowPos.y + w->widgets[WIDX_THEMES_SETTINGS_TAB + i].top, 0);
}
}
@ -523,7 +523,7 @@ static void window_themes_mousedown(rct_window* w, rct_widgetindex widgetIndex,
}
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, num_items, widget->right - widget->left - 3);
dropdown_set_checked((int32_t)theme_manager_get_active_available_theme_index(), true);
@ -838,13 +838,14 @@ void window_themes_paint(rct_window* w, rct_drawpixelinfo* dpi)
const utf8* activeThemeName = theme_manager_get_available_theme_name(activeAvailableThemeIndex);
set_format_arg(0, uintptr_t, (uintptr_t)activeThemeName);
gfx_draw_string_left(
dpi, STR_THEMES_LABEL_CURRENT_THEME, nullptr, w->colours[1], w->x + 10,
w->y + window_themes_widgets[WIDX_THEMES_PRESETS].top + 1);
dpi, STR_THEMES_LABEL_CURRENT_THEME, nullptr, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_themes_widgets[WIDX_THEMES_PRESETS].top + 1);
gfx_draw_string_left_clipped(
dpi, STR_STRING, gCommonFormatArgs, w->colours[1], w->x + window_themes_widgets[WIDX_THEMES_PRESETS].left + 1,
w->y + window_themes_widgets[WIDX_THEMES_PRESETS].top,
w->x + window_themes_widgets[WIDX_THEMES_PRESETS_DROPDOWN].left - window_themes_widgets[WIDX_THEMES_PRESETS].left
- 4);
dpi, STR_STRING, gCommonFormatArgs, w->colours[1],
w->windowPos.x + window_themes_widgets[WIDX_THEMES_PRESETS].left + 1,
w->windowPos.y + window_themes_widgets[WIDX_THEMES_PRESETS].top,
w->windowPos.x + window_themes_widgets[WIDX_THEMES_PRESETS_DROPDOWN].left
- window_themes_widgets[WIDX_THEMES_PRESETS].left - 4);
}
}

View File

@ -1128,8 +1128,8 @@ static void window_tile_inspector_mousedown(rct_window* w, rct_widgetindex widge
gDropdownItemsArgs[1] = STR_TILE_INSPECTOR_WALL_SLOPED_LEFT;
gDropdownItemsArgs[2] = STR_TILE_INSPECTOR_WALL_SLOPED_RIGHT;
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, 3, widget->right - widget->left - 3);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 3, widget->right - widget->left - 3);
// Set current value as checked
TileElement* const tileElement = window_tile_inspector_get_selected_element(w);
@ -1723,54 +1723,54 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
if ((widget = &w->widgets[WIDX_COLUMN_TYPE])->type != WWT_EMPTY)
{
gfx_draw_string_left_clipped(
dpi, STR_TILE_INSPECTOR_ELEMENT_TYPE, gCommonFormatArgs, w->colours[1], w->x + widget->left + 1,
w->y + widget->top + 1, widget->right - widget->left);
dpi, STR_TILE_INSPECTOR_ELEMENT_TYPE, gCommonFormatArgs, w->colours[1], w->windowPos.x + widget->left + 1,
w->windowPos.y + widget->top + 1, widget->right - widget->left);
}
if ((widget = &w->widgets[WIDX_COLUMN_BASEHEIGHT])->type != WWT_EMPTY)
{
gfx_draw_string_left_clipped(
dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1], w->x + widget->left + 1,
w->y + widget->top + 1, widget->right - widget->left);
dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1], w->windowPos.x + widget->left + 1,
w->windowPos.y + widget->top + 1, widget->right - widget->left);
}
if ((widget = &w->widgets[WIDX_COLUMN_CLEARANCEHEIGHT])->type != WWT_EMPTY)
{
gfx_draw_string_left_clipped(
dpi, STR_TILE_INSPECTOR_CLEARANGE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1], w->x + widget->left + 1,
w->y + widget->top + 1, widget->right - widget->left);
dpi, STR_TILE_INSPECTOR_CLEARANGE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1], w->windowPos.x + widget->left + 1,
w->windowPos.y + widget->top + 1, widget->right - widget->left);
}
if ((widget = &w->widgets[WIDX_COLUMN_GHOSTFLAG])->type != WWT_EMPTY)
{
gfx_draw_string_left_clipped(
dpi, STR_TILE_INSPECTOR_FLAG_GHOST_SHORT, gCommonFormatArgs, w->colours[1], w->x + widget->left + 1,
w->y + widget->top + 1, widget->right - widget->left);
dpi, STR_TILE_INSPECTOR_FLAG_GHOST_SHORT, gCommonFormatArgs, w->colours[1], w->windowPos.x + widget->left + 1,
w->windowPos.y + widget->top + 1, widget->right - widget->left);
}
if ((widget = &w->widgets[WIDX_COLUMN_LASTFLAG])->type != WWT_EMPTY)
{
gfx_draw_string_left_clipped(
dpi, STR_TILE_INSPECTOR_FLAG_LAST_SHORT, gCommonFormatArgs, w->colours[1], w->x + widget->left + 1,
w->y + widget->top + 1, widget->right - widget->left);
dpi, STR_TILE_INSPECTOR_FLAG_LAST_SHORT, gCommonFormatArgs, w->colours[1], w->windowPos.x + widget->left + 1,
w->windowPos.y + widget->top + 1, widget->right - widget->left);
}
// Draw coordinates
gfx_draw_string(dpi, (char*)"X:", COLOUR_WHITE, w->x + 5, w->y + 24);
gfx_draw_string(dpi, (char*)"Y:", COLOUR_WHITE, w->x + 74, w->y + 24);
gfx_draw_string(dpi, (char*)"X:", COLOUR_WHITE, w->windowPos.x + 5, w->windowPos.y + 24);
gfx_draw_string(dpi, (char*)"Y:", COLOUR_WHITE, w->windowPos.x + 74, w->windowPos.y + 24);
if (windowTileInspectorTileSelected)
{
auto tileCoords = TileCoordsXY{ windowTileInspectorToolMap };
gfx_draw_string_right(dpi, STR_FORMAT_INTEGER, &tileCoords.x, COLOUR_WHITE, w->x + 43, w->y + 24);
gfx_draw_string_right(dpi, STR_FORMAT_INTEGER, &tileCoords.y, COLOUR_WHITE, w->x + 113, w->y + 24);
gfx_draw_string_right(dpi, STR_FORMAT_INTEGER, &tileCoords.x, COLOUR_WHITE, w->windowPos.x + 43, w->windowPos.y + 24);
gfx_draw_string_right(dpi, STR_FORMAT_INTEGER, &tileCoords.y, COLOUR_WHITE, w->windowPos.x + 113, w->windowPos.y + 24);
}
else
{
gfx_draw_string(dpi, (char*)"-", COLOUR_WHITE, w->x + 43 - 7, w->y + 24);
gfx_draw_string(dpi, (char*)"-", COLOUR_WHITE, w->x + 113 - 7, w->y + 24);
gfx_draw_string(dpi, (char*)"-", COLOUR_WHITE, w->windowPos.x + 43 - 7, w->windowPos.y + 24);
gfx_draw_string(dpi, (char*)"-", COLOUR_WHITE, w->windowPos.x + 113 - 7, w->windowPos.y + 24);
}
if (windowTileInspectorSelectedIndex != -1)
{
// X and Y of first element in detail box
int32_t x = w->x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
int32_t y = w->y + w->widgets[WIDX_GROUPBOX_DETAILS].top + 14;
int32_t x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
int32_t y = w->windowPos.y + w->widgets[WIDX_GROUPBOX_DETAILS].top + 14;
// Get map element
TileElement* const tileElement = window_tile_inspector_get_selected_element(w);
@ -1812,18 +1812,18 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Properties
// Raise / lower label
x = w->x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->y + w->widgets[WIDX_SURFACE_SPINNER_HEIGHT].top;
x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->windowPos.y + w->widgets[WIDX_SURFACE_SPINNER_HEIGHT].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y);
// Current base height
x = w->x + w->widgets[WIDX_SURFACE_SPINNER_HEIGHT].left + 3;
x = w->windowPos.x + w->widgets[WIDX_SURFACE_SPINNER_HEIGHT].left + 3;
int32_t baseHeight = tileElement->base_height;
gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y);
// Raised corners
x = w->x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->y + w->widgets[WIDX_SURFACE_CHECK_CORNER_E].top;
x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->windowPos.y + w->widgets[WIDX_SURFACE_CHECK_CORNER_E].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_CORNERS, nullptr, COLOUR_WHITE, x, y);
break;
}
@ -1849,18 +1849,18 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Properties
// Raise / lower label
x = w->x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->y + w->widgets[WIDX_PATH_SPINNER_HEIGHT].top;
x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->windowPos.y + w->widgets[WIDX_PATH_SPINNER_HEIGHT].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y);
// Current base height
x = w->x + w->widgets[WIDX_PATH_SPINNER_HEIGHT].left + 3;
x = w->windowPos.x + w->widgets[WIDX_PATH_SPINNER_HEIGHT].left + 3;
int32_t baseHeight = tileElement->base_height;
gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y);
// Path connections
x = w->x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->y + w->widgets[WIDX_PATH_CHECK_EDGE_W].top;
x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->windowPos.y + w->widgets[WIDX_PATH_CHECK_EDGE_W].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_PATH_CONNECTED_EDGES, nullptr, COLOUR_WHITE, x, y);
break;
}
@ -1908,11 +1908,11 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Properties
// Raise / lower label
y = w->y + w->widgets[WIDX_TRACK_SPINNER_HEIGHT].top;
y = w->windowPos.y + w->widgets[WIDX_TRACK_SPINNER_HEIGHT].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y);
// Current base height
x = w->x + w->widgets[WIDX_TRACK_SPINNER_HEIGHT].left + 3;
x = w->windowPos.x + w->widgets[WIDX_TRACK_SPINNER_HEIGHT].left + 3;
int32_t baseHeight = tileElement->base_height;
gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y);
break;
@ -1944,21 +1944,21 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Properties
// Raise / Lower
y = w->y + w->widgets[WIDX_SCENERY_SPINNER_HEIGHT].top;
y = w->windowPos.y + w->widgets[WIDX_SCENERY_SPINNER_HEIGHT].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y);
// Current base height
x = w->x + w->widgets[WIDX_SCENERY_SPINNER_HEIGHT].left + 3;
x = w->windowPos.x + w->widgets[WIDX_SCENERY_SPINNER_HEIGHT].left + 3;
int32_t baseHeight = tileElement->base_height;
gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y);
// Quarter tile
x = w->x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->y + w->widgets[WIDX_SCENERY_CHECK_QUARTER_E].top;
x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->windowPos.y + w->widgets[WIDX_SCENERY_CHECK_QUARTER_E].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SCENERY_QUADRANT_LABEL, nullptr, COLOUR_WHITE, x, y);
// Collision
y = w->y + w->widgets[WIDX_SCENERY_CHECK_COLLISION_E].top;
y = w->windowPos.y + w->widgets[WIDX_SCENERY_CHECK_COLLISION_E].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_COLLISSION, nullptr, COLOUR_WHITE, x, y);
break;
}
@ -2015,11 +2015,11 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Properties
// Raise / Lower
y = w->y + w->widgets[WIDX_ENTRANCE_SPINNER_HEIGHT].top;
y = w->windowPos.y + w->widgets[WIDX_ENTRANCE_SPINNER_HEIGHT].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y);
// Current base height
x = w->x + w->widgets[WIDX_ENTRANCE_SPINNER_HEIGHT].left + 3;
x = w->windowPos.x + w->widgets[WIDX_ENTRANCE_SPINNER_HEIGHT].left + 3;
int32_t baseHeight = tileElement->base_height;
gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y);
break;
@ -2051,17 +2051,17 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Properties
// Raise / lower label
y = w->y + w->widgets[WIDX_WALL_SPINNER_HEIGHT].top;
y = w->windowPos.y + w->widgets[WIDX_WALL_SPINNER_HEIGHT].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y);
// Current base height
x = w->x + w->widgets[WIDX_WALL_SPINNER_HEIGHT].left + 3;
x = w->windowPos.x + w->widgets[WIDX_WALL_SPINNER_HEIGHT].left + 3;
int32_t baseHeight = tileElement->base_height;
gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y);
// Slope label
x = w->x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->y + w->widgets[WIDX_WALL_DROPDOWN_SLOPE].top;
x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
y = w->windowPos.y + w->widgets[WIDX_WALL_DROPDOWN_SLOPE].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_WALL_SLOPE, nullptr, COLOUR_WHITE, x, y);
break;
}
@ -2097,11 +2097,11 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Properties
// Raise / lower label
y = w->y + w->widgets[WIDX_LARGE_SCENERY_SPINNER_HEIGHT].top;
y = w->windowPos.y + w->widgets[WIDX_LARGE_SCENERY_SPINNER_HEIGHT].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y);
// Current base height
x = w->x + w->widgets[WIDX_LARGE_SCENERY_SPINNER_HEIGHT].left + 3;
x = w->windowPos.x + w->widgets[WIDX_LARGE_SCENERY_SPINNER_HEIGHT].left + 3;
int32_t baseHeight = tileElement->base_height;
gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y);
break;
@ -2121,17 +2121,17 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Properties
// Raise / lower label
y = w->y + w->widgets[WIDX_BANNER_SPINNER_HEIGHT].top;
y = w->windowPos.y + w->widgets[WIDX_BANNER_SPINNER_HEIGHT].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y);
// Current base height
x = w->x + w->widgets[WIDX_BANNER_SPINNER_HEIGHT].left + 3;
x = w->windowPos.x + w->widgets[WIDX_BANNER_SPINNER_HEIGHT].left + 3;
int32_t baseHeight = tileElement->base_height;
gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y);
// Blocked paths
y += 28;
x = w->x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BANNER_BLOCKED_PATHS, nullptr, COLOUR_WHITE, x, y);
break;
}
@ -2140,11 +2140,11 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
// Properties
// Raise / lower label
y = w->y + w->widgets[WIDX_CORRUPT_SPINNER_HEIGHT].top;
y = w->windowPos.y + w->widgets[WIDX_CORRUPT_SPINNER_HEIGHT].top;
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y);
// Current base height
x = w->x + w->widgets[WIDX_CORRUPT_SPINNER_HEIGHT].left + 3;
x = w->windowPos.x + w->widgets[WIDX_CORRUPT_SPINNER_HEIGHT].left + 3;
int32_t baseHeight = tileElement->base_height;
gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y);
break;

View File

@ -249,7 +249,7 @@ void window_title_command_editor_open(TitleSequence* sequence, int32_t index, bo
rct_widget* const viewportWidget = &window_title_command_editor_widgets[WIDX_VIEWPORT];
viewport_create(
window, { window->x + viewportWidget->left + 1, window->y + viewportWidget->top + 1 },
window, window->windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 },
viewportWidget->right - viewportWidget->left - 1, viewportWidget->bottom - viewportWidget->top - 1, 0, { 0, 0, 0 }, 0,
SPRITE_INDEX_NULL);
@ -394,7 +394,7 @@ static void window_title_command_editor_mousedown(rct_window* w, rct_widgetindex
}
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
dropdown_set_checked(get_command_info_index(command.Type), true);
@ -411,8 +411,8 @@ static void window_title_command_editor_mousedown(rct_window* w, rct_widgetindex
}
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
dropdown_set_checked(command.Speed - 1, true);
}
@ -426,8 +426,8 @@ static void window_title_command_editor_mousedown(rct_window* w, rct_widgetindex
}
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
dropdown_set_checked(command.SaveIndex, true);
}
@ -747,21 +747,25 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo*
TITLE_COMMAND_ORDER command_info = get_command_info(command.Type);
// "Command:" label
gfx_draw_string_left(dpi, STR_TITLE_COMMAND_EDITOR_COMMAND_LABEL, nullptr, w->colours[1], w->x + WS, w->y + BY - 14);
gfx_draw_string_left(
dpi, STR_TITLE_COMMAND_EDITOR_COMMAND_LABEL, nullptr, w->colours[1], w->windowPos.x + WS, w->windowPos.y + BY - 14);
// Command dropdown name
gfx_draw_string_left_clipped(
dpi, command_info.nameStringId, nullptr, w->colours[1], w->x + w->widgets[WIDX_COMMAND].left + 1,
w->y + w->widgets[WIDX_COMMAND].top, w->widgets[WIDX_COMMAND_DROPDOWN].left - w->widgets[WIDX_COMMAND].left - 4);
dpi, command_info.nameStringId, nullptr, w->colours[1], w->windowPos.x + w->widgets[WIDX_COMMAND].left + 1,
w->windowPos.y + w->widgets[WIDX_COMMAND].top,
w->widgets[WIDX_COMMAND_DROPDOWN].left - w->widgets[WIDX_COMMAND].left - 4);
// Label (e.g. "Location:")
gfx_draw_string_left(dpi, command_info.descStringId, nullptr, w->colours[1], w->x + WS, w->y + BY2 - 14);
gfx_draw_string_left(
dpi, command_info.descStringId, nullptr, w->colours[1], w->windowPos.x + WS, w->windowPos.y + BY2 - 14);
if (command.Type == TITLE_SCRIPT_SPEED)
{
gfx_draw_string_left_clipped(
dpi, SpeedNames[command.Speed - 1], nullptr, w->colours[1], w->x + w->widgets[WIDX_INPUT].left + 1,
w->y + w->widgets[WIDX_INPUT].top, w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4);
dpi, SpeedNames[command.Speed - 1], nullptr, w->colours[1], w->windowPos.x + w->widgets[WIDX_INPUT].left + 1,
w->windowPos.y + w->widgets[WIDX_INPUT].top,
w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4);
}
if (command.Type == TITLE_SCRIPT_FOLLOW)
{
@ -779,26 +783,29 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo*
}
gfx_set_dirty_blocks(
w->x + w->widgets[WIDX_VIEWPORT].left, w->y + w->widgets[WIDX_VIEWPORT].top, w->x + w->widgets[WIDX_VIEWPORT].right,
w->y + w->widgets[WIDX_VIEWPORT].bottom);
w->windowPos.x + w->widgets[WIDX_VIEWPORT].left, w->windowPos.y + w->widgets[WIDX_VIEWPORT].top,
w->windowPos.x + w->widgets[WIDX_VIEWPORT].right, w->windowPos.y + w->widgets[WIDX_VIEWPORT].bottom);
gfx_draw_string_left_clipped(
dpi, spriteString, gCommonFormatArgs, colour, w->x + w->widgets[WIDX_VIEWPORT].left + 2,
w->y + w->widgets[WIDX_VIEWPORT].top + 1, w->widgets[WIDX_VIEWPORT].right - w->widgets[WIDX_VIEWPORT].left - 2);
dpi, spriteString, gCommonFormatArgs, colour, w->windowPos.x + w->widgets[WIDX_VIEWPORT].left + 2,
w->windowPos.y + w->widgets[WIDX_VIEWPORT].top + 1,
w->widgets[WIDX_VIEWPORT].right - w->widgets[WIDX_VIEWPORT].left - 2);
}
else if (command.Type == TITLE_SCRIPT_LOAD)
{
if (command.SaveIndex == SAVE_INDEX_INVALID)
{
gfx_draw_string_left_clipped(
dpi, STR_TITLE_COMMAND_EDITOR_NO_SAVE_SELECTED, nullptr, w->colours[1], w->x + w->widgets[WIDX_INPUT].left + 1,
w->y + w->widgets[WIDX_INPUT].top, w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4);
dpi, STR_TITLE_COMMAND_EDITOR_NO_SAVE_SELECTED, nullptr, w->colours[1],
w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top,
w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4);
}
else
{
set_format_arg(0, uintptr_t, (uintptr_t)_sequence->Saves[command.SaveIndex]);
gfx_draw_string_left_clipped(
dpi, STR_STRING, gCommonFormatArgs, w->colours[1], w->x + w->widgets[WIDX_INPUT].left + 1,
w->y + w->widgets[WIDX_INPUT].top, w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4);
dpi, STR_STRING, gCommonFormatArgs, w->colours[1], w->windowPos.x + w->widgets[WIDX_INPUT].left + 1,
w->windowPos.y + w->widgets[WIDX_INPUT].top,
w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4);
}
}
else if (command.Type == TITLE_SCRIPT_LOADSC)
@ -807,7 +814,7 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo*
{
gfx_draw_string_left_clipped(
dpi, STR_TITLE_COMMAND_EDITOR_NO_SCENARIO_SELECTED, nullptr, w->colours[1],
w->x + w->widgets[WIDX_INPUT].left + 1, w->y + w->widgets[WIDX_INPUT].top,
w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top,
w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4);
}
else
@ -825,8 +832,9 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo*
}
set_format_arg(0, uintptr_t, name);
gfx_draw_string_left_clipped(
dpi, nameString, gCommonFormatArgs, w->colours[1], w->x + w->widgets[WIDX_INPUT].left + 1,
w->y + w->widgets[WIDX_INPUT].top, w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4);
dpi, nameString, gCommonFormatArgs, w->colours[1], w->windowPos.x + w->widgets[WIDX_INPUT].left + 1,
w->windowPos.y + w->widgets[WIDX_INPUT].top,
w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4);
}
}
}

View File

@ -555,8 +555,8 @@ static void window_title_editor_mousedown(rct_window* w, rct_widgetindex widgetI
widget--;
window_dropdown_show_text_custom_width(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], 0,
DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, numItems, widget->right - widget->left - 3);
dropdown_set_checked((int32_t)_selectedTitleSequence, true);
}
break;
@ -827,13 +827,13 @@ static void window_title_editor_paint(rct_window* w, rct_drawpixelinfo* dpi)
case WINDOW_TITLE_EDITOR_TAB_PRESETS:
set_format_arg(0, uintptr_t, _sequenceName);
gfx_draw_string_left(
dpi, STR_TITLE_SEQUENCE, nullptr, w->colours[1], w->x + 10,
w->y + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].top + 1);
dpi, STR_TITLE_SEQUENCE, nullptr, w->colours[1], w->windowPos.x + 10,
w->windowPos.y + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].top + 1);
gfx_draw_string_left_clipped(
dpi, STR_STRING, gCommonFormatArgs, w->colours[1],
w->x + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].left + 1,
w->y + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].top,
w->x + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS_DROPDOWN].left
w->windowPos.x + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].left + 1,
w->windowPos.y + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].top,
w->windowPos.x + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS_DROPDOWN].left
- window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].left - 4);
break;
case WINDOW_TITLE_EDITOR_TAB_SAVES:
@ -1049,8 +1049,8 @@ static void window_title_editor_draw_tab_images(rct_drawpixelinfo* dpi, rct_wind
y = 1;
}
gfx_draw_sprite(
dpi, spriteId, w->x + w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].left + x,
w->y + w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].top + y, 0);
dpi, spriteId, w->windowPos.x + w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].left + x,
w->windowPos.y + w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].top + y, 0);
}
}

View File

@ -78,6 +78,6 @@ static void window_title_logo_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
int32_t x = 2;
int32_t y = 2;
gfx_draw_sprite(dpi, SPR_G2_LOGO, w->x + x, w->y + y, 0);
gfx_draw_sprite(dpi, SPR_G2_TITLE, w->x + x + 104, w->y + y + 18, 0);
gfx_draw_sprite(dpi, SPR_G2_LOGO, w->windowPos.x + x, w->windowPos.y + y, 0);
gfx_draw_sprite(dpi, SPR_G2_TITLE, w->windowPos.x + x + 104, w->windowPos.y + y + 18, 0);
}

View File

@ -113,7 +113,7 @@ rct_window* window_title_menu_open()
i++;
}
window->width = x;
window->x = (context_get_width() - window->width) / 2;
window->windowPos.x = (context_get_width() - window->width) / 2;
window_init_scroll_widgets(window);
@ -184,8 +184,8 @@ static void window_title_menu_mousedown(rct_window* w, rct_widgetindex widgetInd
gDropdownItemsFormat[3] = STR_TRACK_DESIGNS_MANAGER;
gDropdownItemsFormat[4] = STR_OPEN_USER_CONTENT_FOLDER;
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, TRANSLUCENT(w->colours[0]),
DROPDOWN_FLAG_STAY_OPEN, 5);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
TRANSLUCENT(w->colours[0]), DROPDOWN_FLAG_STAY_OPEN, 5);
}
}
@ -225,6 +225,6 @@ static void window_title_menu_cursor(
static void window_title_menu_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
gfx_filter_rect(dpi, w->x, w->y, w->x + w->width - 1, w->y + 82 - 1, PALETTE_51);
gfx_filter_rect(dpi, w->windowPos.x, w->windowPos.y, w->windowPos.x + w->width - 1, w->windowPos.y + 82 - 1, PALETTE_51);
window_draw_widgets(w, dpi);
}

View File

@ -341,7 +341,7 @@ static void window_scenarioselect_scrollmousedown(rct_window* w, int32_t scrollI
mutableScreenCoords.y -= scenarioItemHeight;
if (mutableScreenCoords.y < 0 && !listItem.scenario.is_locked)
{
audio_play_sound(SoundId::Click1, 0, w->x + (w->width / 2));
audio_play_sound(SoundId::Click1, 0, w->windowPos.x + (w->width / 2));
gFirstTimeSaving = true;
_callback(listItem.scenario.scenario->path);
if (_titleEditor)
@ -450,8 +450,8 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (widget->type == WWT_EMPTY)
continue;
int32_t x = (widget->left + widget->right) / 2 + w->x;
int32_t y = (widget->top + widget->bottom) / 2 + w->y - 3;
int32_t x = (widget->left + widget->right) / 2 + w->windowPos.x;
int32_t y = (widget->top + widget->bottom) / 2 + w->windowPos.y - 3;
if (gConfigGeneral.scenario_select_mode == SCENARIO_SELECT_MODE_ORIGIN || _titleEditor)
{
@ -471,8 +471,8 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (_showLockedInformation)
{
// Show locked information
int32_t x = w->x + window_scenarioselect_widgets[WIDX_SCENARIOLIST].right + 4;
int32_t y = w->y + window_scenarioselect_widgets[WIDX_TABCONTENT].top + 5;
int32_t x = w->windowPos.x + window_scenarioselect_widgets[WIDX_SCENARIOLIST].right + 4;
int32_t y = w->windowPos.y + window_scenarioselect_widgets[WIDX_TABCONTENT].top + 5;
gfx_draw_string_centred_clipped(dpi, STR_SCENARIO_LOCKED, nullptr, COLOUR_BLACK, x + 85, y, 170);
y += 15;
y += gfx_draw_string_left_wrapped(dpi, nullptr, x, y, 170, STR_SCENARIO_LOCKED_DESC, COLOUR_BLACK) + 5;
@ -489,12 +489,13 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi)
shorten_path(path, sizeof(path), scenario->path, w->width - 6);
const utf8* pathPtr = path;
gfx_draw_string_left(dpi, STR_STRING, (void*)&pathPtr, w->colours[1], w->x + 3, w->y + w->height - 3 - 11);
gfx_draw_string_left(
dpi, STR_STRING, (void*)&pathPtr, w->colours[1], w->windowPos.x + 3, w->windowPos.y + w->height - 3 - 11);
}
// Scenario name
int32_t x = w->x + window_scenarioselect_widgets[WIDX_SCENARIOLIST].right + 4;
int32_t y = w->y + window_scenarioselect_widgets[WIDX_TABCONTENT].top + 5;
int32_t x = w->windowPos.x + window_scenarioselect_widgets[WIDX_SCENARIOLIST].right + 4;
int32_t y = w->windowPos.y + window_scenarioselect_widgets[WIDX_TABCONTENT].top + 5;
set_format_arg(0, rct_string_id, STR_STRING);
set_format_arg(2, const char*, scenario->name);
gfx_draw_string_centred_clipped(dpi, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, COLOUR_BLACK, x + 85, y, 170);

View File

@ -178,10 +178,10 @@ static void window_tooltip_update(rct_window* w)
*/
static void window_tooltip_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
int32_t left = w->x;
int32_t top = w->y;
int32_t right = w->x + w->width - 1;
int32_t bottom = w->y + w->height - 1;
int32_t left = w->windowPos.x;
int32_t top = w->windowPos.y;
int32_t right = w->windowPos.x + w->width - 1;
int32_t bottom = w->windowPos.y + w->height - 1;
// Background
gfx_filter_rect(dpi, left + 1, top + 1, right - 1, bottom - 1, PALETTE_45);
@ -200,7 +200,7 @@ static void window_tooltip_paint(rct_window* w, rct_drawpixelinfo* dpi)
gfx_filter_pixel(dpi, right - 1, bottom - 1, PALETTE_DARKEN_3);
// Text
left = w->x + ((w->width + 1) / 2) - 1;
top = w->y + 1;
left = w->windowPos.x + ((w->width + 1) / 2) - 1;
top = w->windowPos.y + 1;
draw_string_centred_raw(dpi, left, top, _tooltipNumLines, _tooltipText);
}

View File

@ -503,8 +503,8 @@ static void window_top_toolbar_mousedown(rct_window* w, rct_widgetindex widgetIn
#endif
}
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[0] | 0x80,
DROPDOWN_FLAG_STAY_OPEN, numItems);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
w->colours[0] | 0x80, DROPDOWN_FLAG_STAY_OPEN, numItems);
#ifndef DISABLE_TWITCH
if (_menuDropdownIncludesTwitch && gTwitchEnable)
@ -531,7 +531,8 @@ static void window_top_toolbar_mousedown(rct_window* w, rct_widgetindex widgetIn
}
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1] | 0x80, 0, numItems);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1,
w->colours[1] | 0x80, 0, numItems);
gDropdownDefaultIndex = DDIDX_SHOW_MAP;
break;
case WIDX_FASTFORWARD:
@ -896,8 +897,8 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw staff button image (setting masks to the staff colours)
if (window_top_toolbar_widgets[WIDX_STAFF].type != WWT_EMPTY)
{
x = w->x + window_top_toolbar_widgets[WIDX_STAFF].left;
y = w->y + window_top_toolbar_widgets[WIDX_STAFF].top;
x = w->windowPos.x + window_top_toolbar_widgets[WIDX_STAFF].left;
y = w->windowPos.y + window_top_toolbar_widgets[WIDX_STAFF].top;
imgId = SPR_TOOLBAR_STAFF;
if (widget_is_pressed(w, WIDX_STAFF))
imgId++;
@ -908,8 +909,8 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw fast forward button
if (window_top_toolbar_widgets[WIDX_FASTFORWARD].type != WWT_EMPTY)
{
x = w->x + window_top_toolbar_widgets[WIDX_FASTFORWARD].left + 0;
y = w->y + window_top_toolbar_widgets[WIDX_FASTFORWARD].top + 0;
x = w->windowPos.x + window_top_toolbar_widgets[WIDX_FASTFORWARD].left + 0;
y = w->windowPos.y + window_top_toolbar_widgets[WIDX_FASTFORWARD].top + 0;
if (widget_is_pressed(w, WIDX_FASTFORWARD))
y++;
imgId = SPR_G2_FASTFORWARD;
@ -928,8 +929,8 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw cheats button
if (window_top_toolbar_widgets[WIDX_CHEATS].type != WWT_EMPTY)
{
x = w->x + window_top_toolbar_widgets[WIDX_CHEATS].left - 1;
y = w->y + window_top_toolbar_widgets[WIDX_CHEATS].top - 1;
x = w->windowPos.x + window_top_toolbar_widgets[WIDX_CHEATS].left - 1;
y = w->windowPos.y + window_top_toolbar_widgets[WIDX_CHEATS].top - 1;
if (widget_is_pressed(w, WIDX_CHEATS))
y++;
imgId = SPR_G2_SANDBOX;
@ -939,8 +940,8 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw chat button
if (window_top_toolbar_widgets[WIDX_CHAT].type != WWT_EMPTY)
{
x = w->x + window_top_toolbar_widgets[WIDX_CHAT].left;
y = w->y + window_top_toolbar_widgets[WIDX_CHAT].top - 2;
x = w->windowPos.x + window_top_toolbar_widgets[WIDX_CHAT].left;
y = w->windowPos.y + window_top_toolbar_widgets[WIDX_CHAT].top - 2;
if (widget_is_pressed(w, WIDX_CHAT))
y++;
imgId = SPR_G2_CHAT;
@ -950,8 +951,8 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw debug button
if (window_top_toolbar_widgets[WIDX_DEBUG].type != WWT_EMPTY)
{
x = w->x + window_top_toolbar_widgets[WIDX_DEBUG].left;
y = w->y + window_top_toolbar_widgets[WIDX_DEBUG].top - 1;
x = w->windowPos.x + window_top_toolbar_widgets[WIDX_DEBUG].left;
y = w->windowPos.y + window_top_toolbar_widgets[WIDX_DEBUG].top - 1;
if (widget_is_pressed(w, WIDX_DEBUG))
y++;
imgId = SPR_TAB_GEARS_0;
@ -961,8 +962,8 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw research button
if (window_top_toolbar_widgets[WIDX_RESEARCH].type != WWT_EMPTY)
{
x = w->x + window_top_toolbar_widgets[WIDX_RESEARCH].left - 1;
y = w->y + window_top_toolbar_widgets[WIDX_RESEARCH].top;
x = w->windowPos.x + window_top_toolbar_widgets[WIDX_RESEARCH].left - 1;
y = w->windowPos.y + window_top_toolbar_widgets[WIDX_RESEARCH].top;
if (widget_is_pressed(w, WIDX_RESEARCH))
y++;
imgId = SPR_TAB_FINANCES_RESEARCH_0;
@ -972,8 +973,8 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw finances button
if (window_top_toolbar_widgets[WIDX_FINANCES].type != WWT_EMPTY)
{
x = w->x + window_top_toolbar_widgets[WIDX_FINANCES].left + 3;
y = w->y + window_top_toolbar_widgets[WIDX_FINANCES].top + 1;
x = w->windowPos.x + window_top_toolbar_widgets[WIDX_FINANCES].left + 3;
y = w->windowPos.y + window_top_toolbar_widgets[WIDX_FINANCES].top + 1;
if (widget_is_pressed(w, WIDX_FINANCES))
y++;
imgId = SPR_FINANCE;
@ -983,8 +984,8 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw news button
if (window_top_toolbar_widgets[WIDX_NEWS].type != WWT_EMPTY)
{
x = w->x + window_top_toolbar_widgets[WIDX_NEWS].left + 3;
y = w->y + window_top_toolbar_widgets[WIDX_NEWS].top + 0;
x = w->windowPos.x + window_top_toolbar_widgets[WIDX_NEWS].left + 3;
y = w->windowPos.y + window_top_toolbar_widgets[WIDX_NEWS].top + 0;
if (widget_is_pressed(w, WIDX_NEWS))
y++;
imgId = SPR_G2_TAB_NEWS;
@ -994,8 +995,8 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw network button
if (window_top_toolbar_widgets[WIDX_NETWORK].type != WWT_EMPTY)
{
x = w->x + window_top_toolbar_widgets[WIDX_NETWORK].left + 3;
y = w->y + window_top_toolbar_widgets[WIDX_NETWORK].top + 0;
x = w->windowPos.x + window_top_toolbar_widgets[WIDX_NETWORK].left + 3;
y = w->windowPos.y + window_top_toolbar_widgets[WIDX_NETWORK].top + 0;
if (widget_is_pressed(w, WIDX_NETWORK))
y++;
@ -3244,7 +3245,8 @@ static void top_toolbar_init_fastforward_menu(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[3] = STR_SPEED_TURBO;
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[0] | 0x80, 0, num_items);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[0] | 0x80, 0,
num_items);
// Set checkmarks
if (gGameSpeed <= 4)
@ -3291,7 +3293,8 @@ static void top_toolbar_init_rotate_menu(rct_window* w, rct_widget* widget)
gDropdownItemsFormat[1] = STR_ROTATE_ANTI_CLOCKWISE;
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1] | 0x80, 0, 2);
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1] | 0x80, 0,
2);
gDropdownDefaultIndex = DDIDX_ROTATE_CLOCKWISE;
}
@ -3343,7 +3346,7 @@ static void top_toolbar_init_cheats_menu(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[DDIDX_DISABLE_SUPPORT_LIMITS] = STR_DISABLE_SUPPORT_LIMITS;
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[0] | 0x80, 0,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[0] | 0x80, 0,
TOP_TOOLBAR_CHEATS_COUNT);
// Disable items that are not yet available in multiplayer
@ -3421,7 +3424,7 @@ static void top_toolbar_init_debug_menu(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[DDIDX_DEBUG_PAINT] = STR_DEBUG_DROPDOWN_DEBUG_PAINT;
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[0] | 0x80,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[0] | 0x80,
DROPDOWN_FLAG_STAY_OPEN, TOP_TOOLBAR_DEBUG_COUNT);
dropdown_set_checked(DDIDX_DEBUG_PAINT, window_find_by_class(WC_DEBUG_PAINT) != nullptr);
@ -3434,7 +3437,7 @@ static void top_toolbar_init_network_menu(rct_window* w, rct_widget* widget)
gDropdownItemsFormat[DDIDX_MULTIPLAYER_RECONNECT] = STR_MULTIPLAYER_RECONNECT;
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[0] | 0x80, 0,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[0] | 0x80, 0,
TOP_TOOLBAR_NETWORK_COUNT);
dropdown_set_disabled(DDIDX_MULTIPLAYER_RECONNECT, !network_is_desynchronised());
@ -3527,7 +3530,7 @@ static void top_toolbar_init_view_menu(rct_window* w, rct_widget* widget)
gDropdownItemsArgs[DDIDX_HIGHLIGHT_PATH_ISSUES] = STR_HIGHLIGHT_PATH_ISSUES_MENU;
window_dropdown_show_text(
w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1] | 0x80, 0,
w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->bottom - widget->top + 1, w->colours[1] | 0x80, 0,
TOP_TOOLBAR_VIEW_MENU_COUNT);
// Set checkmarks

View File

@ -292,7 +292,7 @@ static void window_track_delete_prompt_paint(rct_window* w, rct_drawpixelinfo* d
window_draw_widgets(w, dpi);
gfx_draw_string_centred_wrapped(
dpi, &_trackDesignFileReference->name, w->x + 125, w->y + 28, 246,
dpi, &_trackDesignFileReference->name, w->windowPos.x + 125, w->windowPos.y + 28, 246,
STR_ARE_YOU_SURE_YOU_WANT_TO_PERMANENTLY_DELETE_TRACK, COLOUR_BLACK);
}

View File

@ -508,7 +508,7 @@ static void window_track_place_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw mini tile preview
rct_drawpixelinfo clippedDpi;
if (clip_drawpixelinfo(&clippedDpi, dpi, w->x + 4, w->y + 18, 168, 78))
if (clip_drawpixelinfo(&clippedDpi, dpi, w->windowPos.x + 4, w->windowPos.y + 18, 168, 78))
{
rct_g1_element g1temp = {};
g1temp.offset = _window_track_place_mini_preview.data();
@ -521,7 +521,8 @@ static void window_track_place_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Price
if (_window_track_place_last_cost != MONEY32_UNDEFINED && !(gParkFlags & PARK_FLAGS_NO_MONEY))
{
gfx_draw_string_centred(dpi, STR_COST_LABEL, w->x + 88, w->y + 94, COLOUR_BLACK, &_window_track_place_last_cost);
gfx_draw_string_centred(
dpi, STR_COST_LABEL, w->windowPos.x + 88, w->windowPos.y + 94, COLOUR_BLACK, &_window_track_place_last_cost);
}
}

View File

@ -239,7 +239,7 @@ static void window_track_list_close(rct_window* w)
*/
static void window_track_list_select(rct_window* w, int32_t listIndex)
{
audio_play_sound(SoundId::Click1, 0, w->x + (w->width / 2));
audio_play_sound(SoundId::Click1, 0, w->windowPos.x + (w->width / 2));
if (!(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER))
{
if (listIndex == 0)
@ -514,8 +514,8 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Track preview
int32_t x, y, colour;
rct_widget* widget = &window_track_list_widgets[WIDX_TRACK_PREVIEW];
x = w->x + widget->left + 1;
y = w->y + widget->top + 1;
x = w->windowPos.x + widget->left + 1;
y = w->windowPos.y + widget->top + 1;
colour = ColourMapA[w->colours[0]].darkest;
gfx_fill_rect(dpi, x, y, x + 369, y + 216, colour);
@ -538,8 +538,8 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
}
int32_t trackPreviewX = x, trackPreviewY = y;
x = w->x + (widget->left + widget->right) / 2;
y = w->y + (widget->top + widget->bottom) / 2;
x = w->windowPos.x + (widget->left + widget->right) / 2;
y = w->windowPos.y + (widget->top + widget->bottom) / 2;
rct_g1_element g1temp = {};
g1temp.offset = _trackDesignPreviewPixels.data() + (_currentTrackPieceDirection * TRACK_PREVIEW_IMAGE_SIZE);
@ -550,7 +550,7 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
drawing_engine_invalidate_image(SPR_TEMP);
gfx_draw_sprite(dpi, SPR_TEMP, trackPreviewX, trackPreviewY, 0);
y = w->y + widget->bottom - 12;
y = w->windowPos.y + widget->bottom - 12;
// Warnings
if ((_loadedTrackDesign->track_flags & TRACK_DESIGN_FLAG_VEHICLE_UNAVAILABLE)
@ -577,8 +577,8 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
gfx_draw_string_centred_clipped(dpi, STR_TRACK_PREVIEW_NAME_FORMAT, &trackName, COLOUR_BLACK, x, y, 368);
// Information
x = w->x + widget->left + 1;
y = w->y + widget->bottom + 2;
x = w->windowPos.x + widget->left + 1;
y = w->windowPos.y + widget->bottom + 2;
// Stats
fixed32_2dp rating = _loadedTrackDesign->excitement * 10;

View File

@ -396,12 +396,12 @@ static void window_view_clipping_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_draw_widgets(w, dpi);
// Clip height value
int32_t x = w->x + 8;
int32_t y = w->y + w->widgets[WIDX_CLIP_HEIGHT_VALUE].top;
int32_t x = w->windowPos.x + 8;
int32_t y = w->windowPos.y + w->widgets[WIDX_CLIP_HEIGHT_VALUE].top;
gfx_draw_string_left(dpi, STR_VIEW_CLIPPING_HEIGHT_VALUE, nullptr, w->colours[0], x, y);
x = w->x + w->widgets[WIDX_CLIP_HEIGHT_VALUE].left + 1;
y = w->y + w->widgets[WIDX_CLIP_HEIGHT_VALUE].top;
x = w->windowPos.x + w->widgets[WIDX_CLIP_HEIGHT_VALUE].left + 1;
y = w->windowPos.y + w->widgets[WIDX_CLIP_HEIGHT_VALUE].top;
fixed16_1dp clipHeightValueInUnits;
fixed32_2dp clipHeightValueInMeters;

View File

@ -94,15 +94,14 @@ rct_window* window_viewport_open()
w->number = _viewportNumber++;
// Create viewport
viewport_create(w, { w->x, w->y }, w->width, w->height, 0, TileCoordsXYZ(128, 128, 0).ToCoordsXYZ(), 1, SPRITE_INDEX_NULL);
viewport_create(w, w->windowPos, w->width, w->height, 0, TileCoordsXYZ(128, 128, 0).ToCoordsXYZ(), 1, SPRITE_INDEX_NULL);
rct_window* mainWindow = window_get_main();
if (mainWindow != nullptr)
{
rct_viewport* mainViewport = mainWindow->viewport;
int32_t x = mainViewport->viewPos.x + (mainViewport->view_width / 2);
int32_t y = mainViewport->viewPos.y + (mainViewport->view_height / 2);
w->saved_view_x = x - (w->viewport->view_width / 2);
w->saved_view_y = y - (w->viewport->view_height / 2);
w->savedViewPos = { x - (w->viewport->view_width / 2), y - (w->viewport->view_height / 2) };
}
w->viewport->flags |= VIEWPORT_FLAG_SOUND_ON;
@ -150,8 +149,8 @@ static void window_viewport_mouseup(rct_window* w, rct_widgetindex widgetIndex)
{
CoordsXY mapCoords;
get_map_coordinates_from_pos(
{ w->x + (w->width / 2), w->y + (w->height / 2) }, VIEWPORT_INTERACTION_MASK_NONE, mapCoords, nullptr,
nullptr, nullptr);
{ w->windowPos.x + (w->width / 2), w->windowPos.y + (w->height / 2) }, VIEWPORT_INTERACTION_MASK_NONE,
mapCoords, nullptr, nullptr, nullptr);
window_scroll_to_location(mainWindow, mapCoords.x, mapCoords.y, tile_element_height(mapCoords));
}
break;
@ -211,7 +210,7 @@ static void window_viewport_invalidate(rct_window* w)
if (viewport->zoom >= 3)
w->disabled_widgets |= 1 << WIDX_ZOOM_OUT;
viewport->pos = ScreenCoordsXY{ w->x + viewportWidget->left, w->y + viewportWidget->top };
viewport->pos = w->windowPos + ScreenCoordsXY{ viewportWidget->left, viewportWidget->top };
viewport->width = viewportWidget->right - viewportWidget->left;
viewport->height = viewportWidget->bottom - viewportWidget->top;
viewport->view_width = viewport->width << viewport->zoom;

View File

@ -211,8 +211,8 @@ static void window_water_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
int32_t x, y;
x = w->x + (window_water_widgets[WIDX_PREVIEW].left + window_water_widgets[WIDX_PREVIEW].right) / 2;
y = w->y + (window_water_widgets[WIDX_PREVIEW].top + window_water_widgets[WIDX_PREVIEW].bottom) / 2;
x = w->windowPos.x + (window_water_widgets[WIDX_PREVIEW].left + window_water_widgets[WIDX_PREVIEW].right) / 2;
y = w->windowPos.y + (window_water_widgets[WIDX_PREVIEW].top + window_water_widgets[WIDX_PREVIEW].bottom) / 2;
window_draw_widgets(w, dpi);
// Draw number for tool sizes bigger than 7
@ -224,8 +224,8 @@ static void window_water_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
{
// Draw raise cost amount
x = (window_water_widgets[WIDX_PREVIEW].left + window_water_widgets[WIDX_PREVIEW].right) / 2 + w->x;
y = window_water_widgets[WIDX_PREVIEW].bottom + w->y + 5;
x = (window_water_widgets[WIDX_PREVIEW].left + window_water_widgets[WIDX_PREVIEW].right) / 2 + w->windowPos.x;
y = window_water_widgets[WIDX_PREVIEW].bottom + w->windowPos.y + 5;
if (gWaterToolRaiseCost != MONEY32_UNDEFINED && gWaterToolRaiseCost != 0)
gfx_draw_string_centred(dpi, STR_RAISE_COST_AMOUNT, x, y, COLOUR_BLACK, &gWaterToolRaiseCost);
y += 10;

View File

@ -1,4 +1,4 @@
/*****************************************************************************
/*****************************************************************************
* Copyright (c) 2014-2019 OpenRCT2 developers
*
* For a complete list of all authors, please refer to contributors.md
@ -189,8 +189,7 @@ void viewport_create(
log_error("Invalid location for viewport.");
return;
}
w->saved_view_x = centreLoc->x;
w->saved_view_y = centreLoc->y;
w->savedViewPos = *centreLoc;
viewport->viewPos = *centreLoc;
}
@ -235,9 +234,10 @@ static void viewport_redraw_after_shift(
if (window != nullptr)
{
// skip current window and non-intersecting windows
if (viewport == window->viewport || viewport->pos.x + viewport->width <= window->x
|| viewport->pos.x >= window->x + window->width || viewport->pos.y + viewport->height <= window->y
|| viewport->pos.y >= window->y + window->height)
if (viewport == window->viewport || viewport->pos.x + viewport->width <= window->windowPos.x
|| viewport->pos.x >= window->windowPos.x + window->width
|| viewport->pos.y + viewport->height <= window->windowPos.y
|| viewport->pos.y >= window->windowPos.y + window->height)
{
auto itWindowPos = window_get_iterator(window);
auto itNextWindow = itWindowPos != g_window_list.end() ? std::next(itWindowPos) : g_window_list.end();
@ -250,9 +250,9 @@ static void viewport_redraw_after_shift(
rct_viewport view_copy;
std::memcpy(&view_copy, viewport, sizeof(rct_viewport));
if (viewport->pos.x < window->x)
if (viewport->pos.x < window->windowPos.x)
{
viewport->width = window->x - viewport->pos.x;
viewport->width = window->windowPos.x - viewport->pos.x;
viewport->view_width = viewport->width << viewport->zoom;
viewport_redraw_after_shift(dpi, window, viewport, x, y);
@ -262,9 +262,9 @@ static void viewport_redraw_after_shift(
viewport->view_width = viewport->width << viewport->zoom;
viewport_redraw_after_shift(dpi, window, viewport, x, y);
}
else if (viewport->pos.x + viewport->width > window->x + window->width)
else if (viewport->pos.x + viewport->width > window->windowPos.x + window->width)
{
viewport->width = window->x + window->width - viewport->pos.x;
viewport->width = window->windowPos.x + window->width - viewport->pos.x;
viewport->view_width = viewport->width << viewport->zoom;
viewport_redraw_after_shift(dpi, window, viewport, x, y);
@ -274,9 +274,9 @@ static void viewport_redraw_after_shift(
viewport->view_width = viewport->width << viewport->zoom;
viewport_redraw_after_shift(dpi, window, viewport, x, y);
}
else if (viewport->pos.y < window->y)
else if (viewport->pos.y < window->windowPos.y)
{
viewport->height = window->y - viewport->pos.y;
viewport->height = window->windowPos.y - viewport->pos.y;
viewport->view_width = viewport->width << viewport->zoom;
viewport_redraw_after_shift(dpi, window, viewport, x, y);
@ -286,9 +286,9 @@ static void viewport_redraw_after_shift(
viewport->view_width = viewport->width << viewport->zoom;
viewport_redraw_after_shift(dpi, window, viewport, x, y);
}
else if (viewport->pos.y + viewport->height > window->y + window->height)
else if (viewport->pos.y + viewport->height > window->windowPos.y + window->height)
{
viewport->height = window->y + window->height - viewport->pos.y;
viewport->height = window->windowPos.y + window->height - viewport->pos.y;
viewport->view_width = viewport->width << viewport->zoom;
viewport_redraw_after_shift(dpi, window, viewport, x, y);
@ -363,20 +363,20 @@ static void viewport_shift_pixels(
if (w->viewport == viewport)
continue;
if (viewport->pos.x + viewport->width <= w->x)
if (viewport->pos.x + viewport->width <= w->windowPos.x)
continue;
if (w->x + w->width <= viewport->pos.x)
if (w->windowPos.x + w->width <= viewport->pos.x)
continue;
if (viewport->pos.y + viewport->height <= w->y)
if (viewport->pos.y + viewport->height <= w->windowPos.y)
continue;
if (w->y + w->height <= viewport->pos.y)
if (w->windowPos.y + w->height <= viewport->pos.y)
continue;
auto left = w->x;
auto right = w->x + w->width;
auto top = w->y;
auto bottom = w->y + w->height;
auto left = w->windowPos.x;
auto right = w->windowPos.x + w->width;
auto top = w->windowPos.y;
auto bottom = w->windowPos.y + w->height;
if (left < viewport->pos.x)
left = viewport->pos.x;
@ -537,8 +537,8 @@ void viewport_update_position(rct_window* window)
viewport_set_underground_flag(0, window, viewport);
int16_t x = window->saved_view_x + viewport->view_width / 2;
int16_t y = window->saved_view_y + viewport->view_height / 2;
int16_t x = window->savedViewPos.x + viewport->view_width / 2;
int16_t y = window->savedViewPos.y + viewport->view_height / 2;
auto mapCoord = viewport_coord_to_map_coord(x, y, 0);
@ -572,13 +572,12 @@ void viewport_update_position(rct_window* window)
auto centreLoc = centre_2d_coordinates({ mapCoord, 0 }, viewport);
if (centreLoc)
{
window->saved_view_x = centreLoc->x;
window->saved_view_y = centreLoc->y;
window->savedViewPos = *centreLoc;
}
}
x = window->saved_view_x;
y = window->saved_view_y;
x = window->savedViewPos.x;
y = window->savedViewPos.y;
if (window->flags & WF_SCROLLING_TO_LOCATION)
{
// Moves the viewport if focusing in on an item
@ -632,8 +631,7 @@ void viewport_update_sprite_follow(rct_window* window)
auto centreLoc = centre_2d_coordinates({ sprite->generic.x, sprite->generic.y, sprite->generic.z }, window->viewport);
if (centreLoc)
{
window->saved_view_x = centreLoc->x;
window->saved_view_y = centreLoc->y;
window->savedViewPos = *centreLoc;
viewport_move(centreLoc->x, centreLoc->y, window, window->viewport);
}
}

View File

@ -401,8 +401,8 @@ rct_window* window_find_from_point(const ScreenCoordsXY& screenCoords)
for (auto it = g_window_list.rbegin(); it != g_window_list.rend(); it++)
{
auto& w = *it;
if (screenCoords.x < w->x || screenCoords.x >= w->x + w->width || screenCoords.y < w->y
|| screenCoords.y >= w->y + w->height)
if (screenCoords.x < w->windowPos.x || screenCoords.x >= w->windowPos.x + w->width || screenCoords.y < w->windowPos.y
|| screenCoords.y >= w->windowPos.y + w->height)
continue;
if (w->flags & WF_NO_BACKGROUND)
@ -442,8 +442,8 @@ rct_widgetindex window_find_widget_from_point(rct_window* w, const ScreenCoordsX
}
else if (widget->type != WWT_EMPTY)
{
if (screenCoords.x >= w->x + widget->left && screenCoords.x <= w->x + widget->right
&& screenCoords.y >= w->y + widget->top && screenCoords.y <= w->y + widget->bottom)
if (screenCoords.x >= w->windowPos.x + widget->left && screenCoords.x <= w->windowPos.x + widget->right
&& screenCoords.y >= w->windowPos.y + widget->top && screenCoords.y <= w->windowPos.y + widget->bottom)
{
widget_index = i;
}
@ -523,7 +523,9 @@ void widget_invalidate(rct_window* w, rct_widgetindex widgetIndex)
if (widget->left == -2)
return;
gfx_set_dirty_blocks(w->x + widget->left, w->y + widget->top, w->x + widget->right + 1, w->y + widget->bottom + 1);
gfx_set_dirty_blocks(
w->windowPos.x + widget->left, w->windowPos.y + widget->top, w->windowPos.x + widget->right + 1,
w->windowPos.y + widget->bottom + 1);
}
template<typename _TPred> static void widget_invalidate_by_condition(_TPred pred)
@ -661,10 +663,10 @@ rct_window* window_bring_to_front(rct_window* w)
g_window_list.splice(itDestPos, g_window_list, itSourcePos);
w->Invalidate();
if (w->x + w->width < 20)
if (w->windowPos.x + w->width < 20)
{
int32_t i = 20 - w->x;
w->x += i;
int32_t i = 20 - w->windowPos.x;
w->windowPos.x += i;
if (w->viewport != nullptr)
w->viewport->pos.x += i;
w->Invalidate();
@ -726,20 +728,20 @@ void window_push_others_right(rct_window* window)
return;
if (w->flags & (WF_STICK_TO_BACK | WF_STICK_TO_FRONT))
return;
if (w->x >= window->x + window->width)
if (w->windowPos.x >= window->windowPos.x + window->width)
return;
if (w->x + w->width <= window->x)
if (w->windowPos.x + w->width <= window->windowPos.x)
return;
if (w->y >= window->y + window->height)
if (w->windowPos.y >= window->windowPos.y + window->height)
return;
if (w->y + w->height <= window->y)
if (w->windowPos.y + w->height <= window->windowPos.y)
return;
w->Invalidate();
if (window->x + window->width + 13 >= context_get_width())
if (window->windowPos.x + window->width + 13 >= context_get_width())
return;
uint16_t push_amount = window->x + window->width - w->x + 3;
w->x += push_amount;
uint16_t push_amount = window->windowPos.x + window->width - w->windowPos.x + 3;
w->windowPos.x += push_amount;
w->Invalidate();
if (w->viewport != nullptr)
w->viewport->pos.x += push_amount;
@ -760,20 +762,20 @@ void window_push_others_below(rct_window* w1)
if (w2->flags & (WF_STICK_TO_BACK | WF_STICK_TO_FRONT))
return;
// Check if w2 intersects with w1
if (w2->x > (w1->x + w1->width) || w2->x + w2->width < w1->x)
if (w2->windowPos.x > (w1->windowPos.x + w1->width) || w2->windowPos.x + w2->width < w1->windowPos.x)
return;
if (w2->y > (w1->y + w1->height) || w2->y + w2->height < w1->y)
if (w2->windowPos.y > (w1->windowPos.y + w1->height) || w2->windowPos.y + w2->height < w1->windowPos.y)
return;
// Check if there is room to push it down
if (w1->y + w1->height + 80 >= context_get_height())
if (w1->windowPos.y + w1->height + 80 >= context_get_height())
return;
// Invalidate the window's current area
w2->Invalidate();
int32_t push_amount = w1->y + w1->height - w2->y + 3;
w2->y += push_amount;
int32_t push_amount = w1->windowPos.y + w1->height - w2->windowPos.y + 3;
w2->windowPos.y += push_amount;
// Invalidate the window's new area
w2->Invalidate();
@ -851,8 +853,8 @@ void window_scroll_to_location(rct_window* w, int32_t x, int32_t y, int32_t z)
for (; it != g_window_list.end(); it++)
{
auto w2 = (*it).get();
int16_t x1 = w2->x - 10;
int16_t y1 = w2->y - 10;
int16_t x1 = w2->windowPos.x - 10;
int16_t y1 = w2->windowPos.y - 10;
if (x2 >= x1 && x2 <= w2->width + x1 + 20)
{
if (y2 >= y1 && y2 <= w2->height + y1 + 20)
@ -880,8 +882,9 @@ void window_scroll_to_location(rct_window* w, int32_t x, int32_t y, int32_t z)
{
if (!(w->flags & WF_NO_SCROLLING))
{
w->saved_view_x = screenCoords.x - (int16_t)(w->viewport->view_width * window_scroll_locations[i][0]);
w->saved_view_y = screenCoords.y - (int16_t)(w->viewport->view_height * window_scroll_locations[i][1]);
w->savedViewPos = screenCoords
- ScreenCoordsXY{ (int16_t)(w->viewport->view_width * window_scroll_locations[i][0]),
(int16_t)(w->viewport->view_height * window_scroll_locations[i][1]) };
w->flags |= WF_SCROLLING_TO_LOCATION;
}
}
@ -938,8 +941,7 @@ void window_rotate_camera(rct_window* w, int32_t direction)
if (centreLoc)
{
w->saved_view_x = centreLoc->x;
w->saved_view_y = centreLoc->y;
w->savedViewPos = *centreLoc;
viewport->viewPos = *centreLoc;
}
@ -976,8 +978,8 @@ void window_viewport_get_map_coords_by_cursor(
rebased_y = ((w->height >> 1) - mouseCoords.y) * (1 << w->viewport->zoom);
// Compute cursor offset relative to tile.
*offset_x = (w->saved_view_x - (centreLoc->x + rebased_x)) * (1 << w->viewport->zoom);
*offset_y = (w->saved_view_y - (centreLoc->y + rebased_y)) * (1 << w->viewport->zoom);
*offset_x = (w->savedViewPos.x - (centreLoc->x + rebased_x)) * (1 << w->viewport->zoom);
*offset_y = (w->savedViewPos.y - (centreLoc->y + rebased_y)) * (1 << w->viewport->zoom);
}
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)
@ -1000,8 +1002,8 @@ void window_viewport_centre_tile_around_cursor(rct_window* w, int16_t map_x, int
rebased_y = ((w->height >> 1) - mouseCoords.y) * (1 << w->viewport->zoom);
// Apply offset to the viewport.
w->saved_view_x = centreLoc->x + rebased_x + (offset_x / (1 << w->viewport->zoom));
w->saved_view_y = centreLoc->y + rebased_y + (offset_y / (1 << w->viewport->zoom));
w->savedViewPos = { centreLoc->x + rebased_x + (offset_x / (1 << w->viewport->zoom)),
centreLoc->y + rebased_y + (offset_y / (1 << w->viewport->zoom)) };
}
void window_zoom_set(rct_window* w, int32_t zoomLevel, bool atCursor)
@ -1026,8 +1028,8 @@ void window_zoom_set(rct_window* w, int32_t zoomLevel, bool atCursor)
while (v->zoom > zoomLevel)
{
v->zoom--;
w->saved_view_x += v->view_width / 4;
w->saved_view_y += v->view_height / 4;
w->savedViewPos.x += v->view_width / 4;
w->savedViewPos.y += v->view_height / 4;
v->view_width /= 2;
v->view_height /= 2;
}
@ -1036,8 +1038,8 @@ void window_zoom_set(rct_window* w, int32_t zoomLevel, bool atCursor)
while (v->zoom < zoomLevel)
{
v->zoom++;
w->saved_view_x -= v->view_width / 2;
w->saved_view_y -= v->view_height / 2;
w->savedViewPos.x -= v->view_width / 2;
w->savedViewPos.y -= v->view_height / 2;
v->view_width *= 2;
v->view_height *= 2;
}
@ -1105,10 +1107,10 @@ void window_draw(rct_drawpixelinfo* dpi, rct_window* w, int32_t left, int32_t to
return;
// Clamp region
left = std::max<int32_t>(left, w->x);
top = std::max<int32_t>(top, w->y);
right = std::min<int32_t>(right, w->x + w->width);
bottom = std::min<int32_t>(bottom, w->y + w->height);
left = std::max<int32_t>(left, w->windowPos.x);
top = std::max<int32_t>(top, w->windowPos.y);
right = std::min<int32_t>(right, w->windowPos.x + w->width);
bottom = std::min<int32_t>(bottom, w->windowPos.y + w->height);
if (left >= right)
return;
if (top >= bottom)
@ -1139,37 +1141,37 @@ static int32_t window_draw_split(
{
// Check if this window overlaps w
auto topwindow = it->get();
if (topwindow->x >= right || topwindow->y >= bottom)
if (topwindow->windowPos.x >= right || topwindow->windowPos.y >= bottom)
continue;
if (topwindow->x + topwindow->width <= left || topwindow->y + topwindow->height <= top)
if (topwindow->windowPos.x + topwindow->width <= left || topwindow->windowPos.y + topwindow->height <= top)
continue;
if (topwindow->flags & WF_TRANSPARENT)
continue;
// A window overlaps w, split up the draw into two regions where the window starts to overlap
if (topwindow->x > left)
if (topwindow->windowPos.x > left)
{
// Split draw at topwindow.left
window_draw(dpi, w, left, top, topwindow->x, bottom);
window_draw(dpi, w, topwindow->x, top, right, bottom);
window_draw(dpi, w, left, top, topwindow->windowPos.x, bottom);
window_draw(dpi, w, topwindow->windowPos.x, top, right, bottom);
}
else if (topwindow->x + topwindow->width < right)
else if (topwindow->windowPos.x + topwindow->width < right)
{
// Split draw at topwindow.right
window_draw(dpi, w, left, top, topwindow->x + topwindow->width, bottom);
window_draw(dpi, w, topwindow->x + topwindow->width, top, right, bottom);
window_draw(dpi, w, left, top, topwindow->windowPos.x + topwindow->width, bottom);
window_draw(dpi, w, topwindow->windowPos.x + topwindow->width, top, right, bottom);
}
else if (topwindow->y > top)
else if (topwindow->windowPos.y > top)
{
// Split draw at topwindow.top
window_draw(dpi, w, left, top, right, topwindow->y);
window_draw(dpi, w, left, topwindow->y, right, bottom);
window_draw(dpi, w, left, top, right, topwindow->windowPos.y);
window_draw(dpi, w, left, topwindow->windowPos.y, right, bottom);
}
else if (topwindow->y + topwindow->height < bottom)
else if (topwindow->windowPos.y + topwindow->height < bottom)
{
// Split draw at topwindow.bottom
window_draw(dpi, w, left, top, right, topwindow->y + topwindow->height);
window_draw(dpi, w, left, topwindow->y + topwindow->height, right, bottom);
window_draw(dpi, w, left, top, right, topwindow->windowPos.y + topwindow->height);
window_draw(dpi, w, left, topwindow->windowPos.y + topwindow->height, right, bottom);
}
// Drawing for this region should be done now, exit
@ -1255,7 +1257,7 @@ void window_draw_viewport(rct_drawpixelinfo* dpi, rct_window* w)
void window_set_position(rct_window* w, const ScreenCoordsXY& screenCoords)
{
window_move_position(w, ScreenCoordsXY(screenCoords.x - w->x, screenCoords.y - w->y));
window_move_position(w, screenCoords - w->windowPos);
}
void window_move_position(rct_window* w, const ScreenCoordsXY& deltaCoords)
@ -1267,12 +1269,10 @@ void window_move_position(rct_window* w, const ScreenCoordsXY& deltaCoords)
w->Invalidate();
// Translate window and viewport
w->x += deltaCoords.x;
w->y += deltaCoords.y;
w->windowPos += deltaCoords;
if (w->viewport != nullptr)
{
w->viewport->pos.x += deltaCoords.x;
w->viewport->pos.y += deltaCoords.y;
w->viewport->pos += deltaCoords;
}
// Invalidate new region
@ -1588,26 +1588,24 @@ void window_relocate_windows(int32_t width, int32_t height)
int32_t new_location = 8;
window_visit_each([width, height, &new_location](rct_window* w) {
// Work out if the window requires moving
if (w->x + 10 < width)
if (w->windowPos.x + 10 < width)
{
if (w->flags & (WF_STICK_TO_BACK | WF_STICK_TO_FRONT))
{
if (w->y - 22 < height)
if (w->windowPos.y - 22 < height)
{
return;
}
}
if (w->y + 10 < height)
if (w->windowPos.y + 10 < height)
{
return;
}
}
// Calculate the new locations
int32_t x = w->x;
int32_t y = w->y;
w->x = new_location;
w->y = new_location + TOP_TOOLBAR_HEIGHT + 1;
auto newWinPos = w->windowPos;
w->windowPos = { new_location, new_location + TOP_TOOLBAR_HEIGHT + 1 };
// Move the next new location so windows are not directly on top
new_location += 8;
@ -1615,8 +1613,7 @@ void window_relocate_windows(int32_t width, int32_t height)
// Adjust the viewport if required.
if (w->viewport != nullptr)
{
w->viewport->pos.x -= x - w->x;
w->viewport->pos.y -= y - w->y;
w->viewport->pos -= newWinPos - w->windowPos;
}
});
}
@ -1633,21 +1630,21 @@ void window_resize_gui(int32_t width, int32_t height)
rct_window* titleWind = window_find_by_class(WC_TITLE_MENU);
if (titleWind != nullptr)
{
titleWind->x = (width - titleWind->width) / 2;
titleWind->y = height - 154;
titleWind->windowPos.x = (width - titleWind->width) / 2;
titleWind->windowPos.y = height - 154;
}
rct_window* exitWind = window_find_by_class(WC_TITLE_EXIT);
if (exitWind != nullptr)
{
exitWind->x = width - 40;
exitWind->y = height - 64;
exitWind->windowPos.x = width - 40;
exitWind->windowPos.y = height - 64;
}
rct_window* optionsWind = window_find_by_class(WC_TITLE_OPTIONS);
if (optionsWind != nullptr)
{
optionsWind->x = width - 80;
optionsWind->windowPos.x = width - 80;
}
gfx_invalidate_screen();
@ -1684,7 +1681,7 @@ void window_resize_gui_scenario_editor(int32_t width, int32_t height)
rct_window* bottomWind = window_find_by_class(WC_BOTTOM_TOOLBAR);
if (bottomWind != nullptr)
{
bottomWind->y = height - 32;
bottomWind->windowPos.y = height - 32;
bottomWind->width = std::max(640, width);
}
}
@ -1756,18 +1753,18 @@ void window_update_viewport_ride_music()
static void window_snap_left(rct_window* w, int32_t proximity)
{
auto mainWindow = window_get_main();
auto wBottom = w->y + w->height;
auto wLeftProximity = w->x - (proximity * 2);
auto wRightProximity = w->x + (proximity * 2);
auto wBottom = w->windowPos.y + w->height;
auto wLeftProximity = w->windowPos.x - (proximity * 2);
auto wRightProximity = w->windowPos.x + (proximity * 2);
auto rightMost = INT32_MIN;
window_visit_each([&](rct_window* w2) {
if (w2 == w || w2 == mainWindow)
return;
auto right = w2->x + w2->width;
auto right = w2->windowPos.x + w2->width;
if (wBottom < w2->y || w->y > w2->y + w2->height)
if (wBottom < w2->windowPos.y || w->windowPos.y > w2->windowPos.y + w2->height)
return;
if (right < wLeftProximity || right > wRightProximity)
@ -1780,24 +1777,24 @@ static void window_snap_left(rct_window* w, int32_t proximity)
rightMost = std::max(rightMost, 0);
if (rightMost != INT32_MIN)
w->x = rightMost;
w->windowPos.x = rightMost;
}
static void window_snap_top(rct_window* w, int32_t proximity)
{
auto mainWindow = window_get_main();
auto wRight = w->x + w->width;
auto wTopProximity = w->y - (proximity * 2);
auto wBottomProximity = w->y + (proximity * 2);
auto wRight = w->windowPos.x + w->width;
auto wTopProximity = w->windowPos.y - (proximity * 2);
auto wBottomProximity = w->windowPos.y + (proximity * 2);
auto bottomMost = INT32_MIN;
window_visit_each([&](rct_window* w2) {
if (w2 == w || w2 == mainWindow)
return;
auto bottom = w2->y + w2->height;
auto bottom = w2->windowPos.y + w2->height;
if (wRight < w2->x || w->x > w2->x + w2->width)
if (wRight < w2->windowPos.x || w->windowPos.x > w2->windowPos.x + w2->width)
return;
if (bottom < wTopProximity || bottom > wBottomProximity)
@ -1810,14 +1807,14 @@ static void window_snap_top(rct_window* w, int32_t proximity)
bottomMost = std::max(bottomMost, 0);
if (bottomMost != INT32_MIN)
w->y = bottomMost;
w->windowPos.y = bottomMost;
}
static void window_snap_right(rct_window* w, int32_t proximity)
{
auto mainWindow = window_get_main();
auto wRight = w->x + w->width;
auto wBottom = w->y + w->height;
auto wRight = w->windowPos.x + w->width;
auto wBottom = w->windowPos.y + w->height;
auto wLeftProximity = wRight - (proximity * 2);
auto wRightProximity = wRight + (proximity * 2);
auto leftMost = INT32_MAX;
@ -1826,13 +1823,13 @@ static void window_snap_right(rct_window* w, int32_t proximity)
if (w2 == w || w2 == mainWindow)
return;
if (wBottom < w2->y || w->y > w2->y + w2->height)
if (wBottom < w2->windowPos.y || w->windowPos.y > w2->windowPos.y + w2->height)
return;
if (w2->x < wLeftProximity || w2->x > wRightProximity)
if (w2->windowPos.x < wLeftProximity || w2->windowPos.x > wRightProximity)
return;
leftMost = std::min<int32_t>(leftMost, w2->x);
leftMost = std::min<int32_t>(leftMost, w2->windowPos.x);
});
auto screenWidth = context_get_width();
@ -1840,14 +1837,14 @@ static void window_snap_right(rct_window* w, int32_t proximity)
leftMost = std::min(leftMost, screenWidth);
if (leftMost != INT32_MAX)
w->x = leftMost - w->width;
w->windowPos.x = leftMost - w->width;
}
static void window_snap_bottom(rct_window* w, int32_t proximity)
{
auto mainWindow = window_get_main();
auto wRight = w->x + w->width;
auto wBottom = w->y + w->height;
auto wRight = w->windowPos.x + w->width;
auto wBottom = w->windowPos.y + w->height;
auto wTopProximity = wBottom - (proximity * 2);
auto wBottomProximity = wBottom + (proximity * 2);
auto topMost = INT32_MAX;
@ -1856,13 +1853,13 @@ static void window_snap_bottom(rct_window* w, int32_t proximity)
if (w2 == w || w2 == mainWindow)
return;
if (wRight < w2->x || w->x > w2->x + w2->width)
if (wRight < w2->windowPos.x || w->windowPos.x > w2->windowPos.x + w2->width)
return;
if (w2->y < wTopProximity || w2->y > wBottomProximity)
if (w2->windowPos.y < wTopProximity || w2->windowPos.y > wBottomProximity)
return;
topMost = std::min<int32_t>(topMost, w2->y);
topMost = std::min<int32_t>(topMost, w2->windowPos.y);
});
auto screenHeight = context_get_height();
@ -1870,34 +1867,30 @@ static void window_snap_bottom(rct_window* w, int32_t proximity)
topMost = std::min(topMost, screenHeight);
if (topMost != INT32_MAX)
w->y = topMost - w->height;
w->windowPos.y = topMost - w->height;
}
void window_move_and_snap(rct_window* w, ScreenCoordsXY newWindowCoords, int32_t snapProximity)
{
int32_t originalX = w->x;
int32_t originalY = w->y;
auto originalPos = w->windowPos;
int32_t minY = (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) ? 1 : TOP_TOOLBAR_HEIGHT + 2;
newWindowCoords.y = std::clamp(newWindowCoords.y, minY, context_get_height() - 34);
if (snapProximity > 0)
{
w->x = newWindowCoords.x;
w->y = newWindowCoords.y;
w->windowPos = newWindowCoords;
window_snap_right(w, snapProximity);
window_snap_bottom(w, snapProximity);
window_snap_left(w, snapProximity);
window_snap_top(w, snapProximity);
if (w->x == originalX && w->y == originalY)
if (w->windowPos == originalPos)
return;
newWindowCoords.x = w->x;
newWindowCoords.y = w->y;
w->x = originalX;
w->y = originalY;
newWindowCoords = w->windowPos;
w->windowPos = originalPos;
}
window_set_position(w, newWindowCoords);
@ -2007,8 +2000,9 @@ bool window_is_visible(rct_window* w)
auto& w_other = *(*it);
// if covered by a higher window, no rendering needed
if (w_other.x <= w->x && w_other.y <= w->y && w_other.x + w_other.width >= w->x + w->width
&& w_other.y + w_other.height >= w->y + w->height)
if (w_other.windowPos.x <= w->windowPos.x && w_other.windowPos.y <= w->windowPos.y
&& w_other.windowPos.x + w_other.width >= w->windowPos.x + w->width
&& w_other.windowPos.y + w_other.height >= w->windowPos.y + w->height)
{
w->visibility = VC_COVERED;
w->viewport->visibility = VC_COVERED;
@ -2044,9 +2038,9 @@ void window_draw_all(rct_drawpixelinfo* dpi, int16_t left, int16_t top, int16_t
window_visit_each([&windowDPI, left, top, right, bottom](rct_window* w) {
if (w->flags & WF_TRANSPARENT)
return;
if (right <= w->x || bottom <= w->y)
if (right <= w->windowPos.x || bottom <= w->windowPos.y)
return;
if (left >= w->x + w->width || top >= w->y + w->height)
if (left >= w->windowPos.x + w->width || top >= w->windowPos.y + w->height)
return;
window_draw(&windowDPI, w, left, top, right, bottom);
});

View File

@ -260,8 +260,8 @@ struct error_variables
struct rct_window;
#define RCT_WINDOW_RIGHT(w) ((w)->x + (w)->width)
#define RCT_WINDOW_BOTTOM(w) ((w)->y + (w)->height)
#define RCT_WINDOW_RIGHT(w) ((w)->windowPos.x + (w)->width)
#define RCT_WINDOW_BOTTOM(w) ((w)->windowPos.y + (w)->height)
enum WINDOW_EVENTS
{

View File

@ -38,5 +38,5 @@ void rct_window::ScrollToViewport()
void rct_window::Invalidate()
{
gfx_set_dirty_blocks(x, y, x + width, y + height);
gfx_set_dirty_blocks(windowPos.x, windowPos.y, windowPos.x + width, windowPos.y + height);
}

View File

@ -23,28 +23,27 @@ struct rct_object_entry;
*/
struct rct_window
{
rct_window_event_list* event_handlers; // 0x000
rct_viewport* viewport; // 0x004
uint64_t enabled_widgets; // 0x008
uint64_t disabled_widgets; // 0x010
uint64_t pressed_widgets; // 0x018
uint64_t hold_down_widgets; // 0x020
rct_widget* widgets; // 0x028
int16_t x; // 0x02C
int16_t y; // 0x02E
int16_t width; // 0x030
int16_t height; // 0x032
int16_t min_width; // 0x034
int16_t max_width; // 0x036
int16_t min_height; // 0x038
int16_t max_height; // 0x03A
rct_windownumber number; // 0x03C
uint16_t flags; // 0x03E
rct_scroll scrolls[3]; // 0x040
uint8_t list_item_positions[1024]; // 0x076
uint16_t no_list_items; // 0x476 0 for no items
rct_window_event_list* event_handlers;
rct_viewport* viewport;
uint64_t enabled_widgets;
uint64_t disabled_widgets;
uint64_t pressed_widgets;
uint64_t hold_down_widgets;
rct_widget* widgets;
ScreenCoordsXY windowPos;
int16_t width;
int16_t height;
int16_t min_width;
int16_t max_width;
int16_t min_height;
int16_t max_height;
rct_windownumber number;
uint16_t flags;
rct_scroll scrolls[3];
uint8_t list_item_positions[1024];
uint16_t no_list_items; // 0 for no items
int16_t pad_478;
int16_t selected_list_item; // 0x47A -1 for none selected
int16_t selected_list_item; // -1 for none selected
int16_t pad_47C;
int16_t pad_47E;
union
@ -60,23 +59,23 @@ struct rct_window
track_list_variables track_list;
error_variables error;
};
int16_t page; // 0x48A
int16_t page;
union
{
int16_t picked_peep_old_x; // 0x48C staff/guest window: peep x gets set to 0x8000 on pickup, this is the old value
int16_t vehicleIndex; // 0x48C Ride window: selected car when setting vehicle colours
int16_t numberOfStaff; // 0x48C Used in park window.
int16_t picked_peep_old_x; // staff/guest window: peep x gets set to 0x8000 on pickup, this is the old value
int16_t vehicleIndex; // Ride window: selected car when setting vehicle colours
int16_t numberOfStaff; // Used in park window.
int16_t var_48C;
};
uint16_t frame_no; // 0x48E updated every tic for motion in windows sprites
uint16_t list_information_type; // 0x490 0 for none, Used as current position of marquee in window_peep
uint16_t frame_no; // updated every tic for motion in windows sprites
uint16_t list_information_type; // 0 for none, Used as current position of marquee in window_peep
union
{
int16_t picked_peep_frame; // 0x492 Animation frame of picked peep in staff window and guest window
int16_t picked_peep_frame; // Animation frame of picked peep in staff window and guest window
int16_t var_492;
};
union
{ // 0x494
{
uint32_t highlighted_item;
uint16_t ride_colour;
ResearchItem* research_item;
@ -89,18 +88,17 @@ struct rct_window
};
};
uint8_t var_498[0x14];
int16_t selected_tab; // 0x4AC
int16_t selected_tab;
int16_t var_4AE;
uint16_t viewport_target_sprite; // 0x4B0 viewport target sprite
int16_t saved_view_x; // 0x4B2
int16_t saved_view_y; // 0x4B4
rct_windowclass classification; // 0x4B6
uint16_t viewport_target_sprite;
ScreenCoordsXY savedViewPos;
rct_windowclass classification;
uint8_t pad_4B7;
int8_t var_4B8;
int8_t var_4B9;
uint8_t colours[6]; // 0x4BA
uint8_t visibility; // VISIBILITY_CACHE
uint16_t viewport_smart_follow_sprite; // Smart following of sprites. Handles setting viewport target sprite etc
uint8_t colours[6];
uint8_t visibility;
uint16_t viewport_smart_follow_sprite; // Handles setting viewport target sprite etc
void SetLocation(int32_t x, int32_t y, int32_t z);
void ScrollToViewport();