mirror of https://github.com/OpenRCT2/OpenRCT2.git
Refactor window flags to be read with the helper methods
This commit is contained in:
parent
05b589fb93
commit
b775832d01
|
@ -1207,7 +1207,7 @@ void InputStateWidgetPressed(
|
|||
|| widgetIndex != cursor_widgetIndex)
|
||||
break;
|
||||
|
||||
if (w->disabled_widgets & (1ULL << widgetIndex))
|
||||
if (WidgetIsDisabled(w, widgetIndex))
|
||||
break;
|
||||
|
||||
if (_clickRepeatTicks != 0)
|
||||
|
@ -1217,7 +1217,7 @@ void InputStateWidgetPressed(
|
|||
// Handle click repeat
|
||||
if (_clickRepeatTicks >= 16 && (_clickRepeatTicks & 3) == 0)
|
||||
{
|
||||
if (w->hold_down_widgets & (1ULL << widgetIndex))
|
||||
if (WidgetIsHoldable(w, widgetIndex))
|
||||
{
|
||||
window_event_mouse_down_call(w, widgetIndex);
|
||||
}
|
||||
|
@ -1334,7 +1334,7 @@ void InputStateWidgetPressed(
|
|||
if (cursor_w_class != w->classification || cursor_w_number != w->number || widgetIndex != cursor_widgetIndex)
|
||||
break;
|
||||
|
||||
if (w->disabled_widgets & (1ULL << widgetIndex))
|
||||
if (WidgetIsDisabled(w, widgetIndex))
|
||||
break;
|
||||
|
||||
widget_invalidate_by_number(cursor_w_class, cursor_w_number, widgetIndex);
|
||||
|
|
|
@ -839,26 +839,26 @@ static void WidgetDrawImage(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetind
|
|||
}
|
||||
}
|
||||
|
||||
bool WidgetIsDisabled(rct_window* w, rct_widgetindex widgetIndex)
|
||||
bool WidgetIsDisabled(const rct_window* w, rct_widgetindex widgetIndex)
|
||||
{
|
||||
if (w->classification == WC_CUSTOM)
|
||||
return w->widgets[widgetIndex].flags & WIDGET_FLAGS::IS_DISABLED;
|
||||
return (w->disabled_widgets & (1LL << widgetIndex)) != 0;
|
||||
}
|
||||
|
||||
bool WidgetIsHoldable(rct_window* w, rct_widgetindex widgetIndex)
|
||||
bool WidgetIsHoldable(const rct_window* w, rct_widgetindex widgetIndex)
|
||||
{
|
||||
if (w->classification == WC_CUSTOM)
|
||||
return w->widgets[widgetIndex].flags & WIDGET_FLAGS::IS_HOLDABLE;
|
||||
return (w->hold_down_widgets & (1LL << widgetIndex)) != 0;
|
||||
}
|
||||
|
||||
bool WidgetIsVisible(rct_window* w, rct_widgetindex widgetIndex)
|
||||
bool WidgetIsVisible(const rct_window* w, rct_widgetindex widgetIndex)
|
||||
{
|
||||
return w->widgets[widgetIndex].IsVisible();
|
||||
}
|
||||
|
||||
bool WidgetIsPressed(rct_window* w, rct_widgetindex widgetIndex)
|
||||
bool WidgetIsPressed(const rct_window* w, rct_widgetindex widgetIndex)
|
||||
{
|
||||
if (w->classification == WC_CUSTOM)
|
||||
{
|
||||
|
@ -890,7 +890,7 @@ bool WidgetIsPressed(rct_window* w, rct_widgetindex widgetIndex)
|
|||
return false;
|
||||
}
|
||||
|
||||
bool WidgetIsHighlighted(rct_window* w, rct_widgetindex widgetIndex)
|
||||
bool WidgetIsHighlighted(const rct_window* w, rct_widgetindex widgetIndex)
|
||||
{
|
||||
if (gHoverWidget.window_classification != w->classification)
|
||||
return false;
|
||||
|
@ -901,7 +901,7 @@ bool WidgetIsHighlighted(rct_window* w, rct_widgetindex widgetIndex)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool WidgetIsActiveTool(rct_window* w, rct_widgetindex widgetIndex)
|
||||
bool WidgetIsActiveTool(const rct_window* w, rct_widgetindex widgetIndex)
|
||||
{
|
||||
if (!(input_test_flag(INPUT_FLAG_TOOL_ACTIVE)))
|
||||
return false;
|
||||
|
@ -1030,6 +1030,24 @@ void WidgetScrollGetPart(
|
|||
}
|
||||
}
|
||||
|
||||
static void SafeSetWidgetFlag(rct_window* w, rct_widgetindex widgetIndex, WidgetFlags mask, bool value)
|
||||
{
|
||||
// Make sure we don't go out of bounds if we are given a bad widget index
|
||||
rct_widgetindex index = 0;
|
||||
for (auto* widget = w->widgets; widget->type != WindowWidgetType::Last; widget++)
|
||||
{
|
||||
if (index == widgetIndex)
|
||||
{
|
||||
if (value)
|
||||
widget->flags |= mask;
|
||||
else
|
||||
widget->flags &= ~mask;
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
void WidgetSetEnabled(rct_window* w, rct_widgetindex widgetIndex, bool enabled)
|
||||
{
|
||||
WidgetSetDisabled(w, widgetIndex, !enabled);
|
||||
|
@ -1037,6 +1055,7 @@ void WidgetSetEnabled(rct_window* w, rct_widgetindex widgetIndex, bool enabled)
|
|||
|
||||
void WidgetSetDisabled(rct_window* w, rct_widgetindex widgetIndex, bool value)
|
||||
{
|
||||
SafeSetWidgetFlag(w, widgetIndex, WIDGET_FLAGS::IS_DISABLED, value);
|
||||
if (value)
|
||||
{
|
||||
w->disabled_widgets |= (1ULL << widgetIndex);
|
||||
|
@ -1049,6 +1068,7 @@ void WidgetSetDisabled(rct_window* w, rct_widgetindex widgetIndex, bool value)
|
|||
|
||||
void WidgetSetHoldable(rct_window* w, rct_widgetindex widgetIndex, bool value)
|
||||
{
|
||||
SafeSetWidgetFlag(w, widgetIndex, WIDGET_FLAGS::IS_HOLDABLE, value);
|
||||
if (value)
|
||||
{
|
||||
w->hold_down_widgets |= (1ULL << widgetIndex);
|
||||
|
@ -1061,24 +1081,23 @@ void WidgetSetHoldable(rct_window* w, rct_widgetindex widgetIndex, bool value)
|
|||
|
||||
void WidgetSetVisible(rct_window* w, rct_widgetindex widgetIndex, bool value)
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
w->widgets[widgetIndex].flags &= ~WIDGET_FLAGS::IS_HIDDEN;
|
||||
}
|
||||
else
|
||||
{
|
||||
w->widgets[widgetIndex].flags |= WIDGET_FLAGS::IS_HIDDEN;
|
||||
}
|
||||
SafeSetWidgetFlag(w, widgetIndex, WIDGET_FLAGS::IS_HIDDEN, !value);
|
||||
}
|
||||
|
||||
void WidgetSetCheckboxValue(rct_window* w, rct_widgetindex widgetIndex, int32_t value)
|
||||
void WidgetSetPressed(rct_window* w, rct_widgetindex widgetIndex, bool value)
|
||||
{
|
||||
SafeSetWidgetFlag(w, widgetIndex, WIDGET_FLAGS::IS_PRESSED, value);
|
||||
if (value)
|
||||
w->pressed_widgets |= (1ULL << widgetIndex);
|
||||
else
|
||||
w->pressed_widgets &= ~(1ULL << widgetIndex);
|
||||
}
|
||||
|
||||
void WidgetSetCheckboxValue(rct_window* w, rct_widgetindex widgetIndex, bool value)
|
||||
{
|
||||
WidgetSetPressed(w, widgetIndex, value);
|
||||
}
|
||||
|
||||
static void WidgetTextBoxDraw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetindex widgetIndex)
|
||||
{
|
||||
int32_t no_lines = 0;
|
||||
|
|
|
@ -719,28 +719,22 @@ void Window::InvalidateWidget(rct_widgetindex widgetIndex)
|
|||
|
||||
bool Window::IsWidgetDisabled(rct_widgetindex widgetIndex) const
|
||||
{
|
||||
return (disabled_widgets & (1LL << widgetIndex)) != 0;
|
||||
return WidgetIsDisabled(this, widgetIndex);
|
||||
}
|
||||
|
||||
bool Window::IsWidgetPressed(rct_widgetindex widgetIndex) const
|
||||
{
|
||||
return (pressed_widgets & (1LL << widgetIndex)) != 0;
|
||||
return WidgetIsPressed(this, widgetIndex);
|
||||
}
|
||||
|
||||
void Window::SetWidgetDisabled(rct_widgetindex widgetIndex, bool value)
|
||||
{
|
||||
if (value)
|
||||
disabled_widgets |= (1ULL << widgetIndex);
|
||||
else
|
||||
disabled_widgets &= ~(1ULL << widgetIndex);
|
||||
WidgetSetDisabled(this, widgetIndex, value);
|
||||
}
|
||||
|
||||
void Window::SetWidgetPressed(rct_widgetindex widgetIndex, bool value)
|
||||
{
|
||||
if (value)
|
||||
pressed_widgets |= (1ULL << widgetIndex);
|
||||
else
|
||||
pressed_widgets &= ~(1ULL << widgetIndex);
|
||||
WidgetSetPressed(this, widgetIndex, value);
|
||||
}
|
||||
|
||||
void Window::SetCheckboxValue(rct_widgetindex widgetIndex, bool value)
|
||||
|
@ -764,3 +758,20 @@ void Window::TextInputOpen(
|
|||
{
|
||||
WindowTextInputOpen(this, callWidget, title, description, descriptionArgs, existingText, existingArgs, maxLength);
|
||||
}
|
||||
|
||||
void window_align_tabs(rct_window* w, rct_widgetindex start_tab_id, rct_widgetindex end_tab_id)
|
||||
{
|
||||
int32_t i, x = w->widgets[start_tab_id].left;
|
||||
int32_t tab_width = w->widgets[start_tab_id].width();
|
||||
|
||||
for (i = start_tab_id; i <= end_tab_id; i++)
|
||||
{
|
||||
if (!WidgetIsDisabled(w, i))
|
||||
{
|
||||
auto& widget = w->widgets[i];
|
||||
widget.left = x;
|
||||
widget.right = x + tab_width;
|
||||
x += tab_width + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,3 +34,4 @@ struct Window : rct_window
|
|||
|
||||
void WindowAllWheelInput();
|
||||
void ApplyScreenSaverLockSetting();
|
||||
void window_align_tabs(rct_window* w, rct_widgetindex start_tab_id, rct_widgetindex end_tab_id);
|
||||
|
|
|
@ -913,7 +913,6 @@ namespace OpenRCT2::Ui::Windows
|
|||
}
|
||||
|
||||
// Add custom widgets
|
||||
auto firstCustomWidgetIndex = widgetList.size();
|
||||
auto totalWidgets = info.Desc.Widgets.size();
|
||||
auto tabWidgetsOffset = totalWidgets;
|
||||
if (info.Desc.Tabs.size() != 0)
|
||||
|
@ -949,24 +948,6 @@ namespace OpenRCT2::Ui::Windows
|
|||
}
|
||||
}
|
||||
|
||||
for (size_t i = firstCustomWidgetIndex; i < widgetList.size(); i++)
|
||||
{
|
||||
auto mask = 1ULL << i;
|
||||
auto widgetFlags = widgetList[i].flags;
|
||||
if (widgetFlags & WIDGET_FLAGS::IS_PRESSED)
|
||||
{
|
||||
pressed_widgets |= mask;
|
||||
}
|
||||
if (widgetFlags & WIDGET_FLAGS::IS_DISABLED)
|
||||
{
|
||||
disabled_widgets |= mask;
|
||||
}
|
||||
if (widgetFlags & WIDGET_FLAGS::IS_HOLDABLE)
|
||||
{
|
||||
hold_down_widgets |= mask;
|
||||
}
|
||||
}
|
||||
|
||||
widgetList.push_back(WIDGETS_END);
|
||||
widgets = widgetList.data();
|
||||
|
||||
|
|
|
@ -308,7 +308,7 @@ public:
|
|||
|
||||
for (rct_widgetindex i = WIDX_FILTER_RIDE_TAB_TRANSPORT; i <= WIDX_FILTER_RIDE_TAB_STALL; i++)
|
||||
{
|
||||
if (!(pressed_widgets & (1ULL << i)))
|
||||
if (!IsWidgetPressed(i))
|
||||
continue;
|
||||
|
||||
frame_no++;
|
||||
|
@ -959,7 +959,7 @@ public:
|
|||
|
||||
int32_t spriteIndex = ride_tabs[i];
|
||||
int32_t frame = 0;
|
||||
if (i != 0 && pressed_widgets & (1ULL << (WIDX_FILTER_RIDE_TAB_ALL + i)))
|
||||
if (i != 0 && IsWidgetPressed(WIDX_FILTER_RIDE_TAB_ALL + i))
|
||||
{
|
||||
frame = frame_no / window_editor_object_selection_animation_divisor[i - 1];
|
||||
}
|
||||
|
|
|
@ -249,7 +249,7 @@ static void WindowEditorObjectiveOptionsDrawTabImages(rct_window* w, rct_drawpix
|
|||
gfx_draw_sprite(dpi, ImageId(spriteIndex), w->windowPos + ScreenCoordsXY{ widget->left, widget->top });
|
||||
|
||||
// Tab 2
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_TAB_2)))
|
||||
if (!WidgetIsDisabled(w, WIDX_TAB_2))
|
||||
{
|
||||
widget = &w->widgets[WIDX_TAB_2];
|
||||
spriteIndex = SPR_TAB_RIDE_0;
|
||||
|
|
|
@ -1313,7 +1313,7 @@ static void WindowFinancesDrawTabImage(rct_drawpixelinfo* dpi, rct_window* w, in
|
|||
{
|
||||
rct_widgetindex widgetIndex = WIDX_TAB_1 + page;
|
||||
|
||||
if (!(w->disabled_widgets & (1LL << widgetIndex)))
|
||||
if (!WidgetIsDisabled(w, widgetIndex))
|
||||
{
|
||||
if (w->page == page)
|
||||
{
|
||||
|
|
|
@ -640,7 +640,7 @@ static void WindowFootpathPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
WindowDrawWidgets(w, dpi);
|
||||
WindowFootpathDrawDropdownButtons(w, dpi);
|
||||
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_CONSTRUCT)))
|
||||
if (!WidgetIsDisabled(w, WIDX_CONSTRUCT))
|
||||
{
|
||||
// Get construction image
|
||||
uint8_t direction = (_footpathConstructDirection + get_current_rotation()) % 4;
|
||||
|
|
|
@ -366,7 +366,7 @@ static void WindowGuestCommonResize(rct_window* w)
|
|||
// Ensure min size is large enough for all tabs to fit
|
||||
for (int32_t i = WIDX_TAB_1; i <= WIDX_TAB_7; i++)
|
||||
{
|
||||
if (!(w->disabled_widgets & (1ULL << i)))
|
||||
if (!WidgetIsDisabled(w, i))
|
||||
{
|
||||
minWidth = std::max(minWidth, w->widgets[i].right + 3);
|
||||
}
|
||||
|
@ -421,13 +421,13 @@ void WindowGuestDisableWidgets(rct_window* w)
|
|||
|
||||
if (peep->CanBePickedUp())
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_PICKUP))
|
||||
if (WidgetIsDisabled(w, WIDX_PICKUP))
|
||||
w->Invalidate();
|
||||
}
|
||||
else
|
||||
{
|
||||
disabled_widgets = (1ULL << WIDX_PICKUP);
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_PICKUP)))
|
||||
if (!WidgetIsDisabled(w, WIDX_PICKUP))
|
||||
w->Invalidate();
|
||||
}
|
||||
if (gParkFlags & PARK_FLAGS_NO_MONEY)
|
||||
|
@ -694,7 +694,7 @@ void WindowGuestViewportInit(rct_window* w)
|
|||
*/
|
||||
static void WindowGuestOverviewTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_TAB_1))
|
||||
if (WidgetIsDisabled(w, WIDX_TAB_1))
|
||||
return;
|
||||
|
||||
const auto& widget = w->widgets[WIDX_TAB_1];
|
||||
|
@ -766,7 +766,7 @@ static void WindowGuestOverviewTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
*/
|
||||
static void WindowGuestStatsTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_TAB_2))
|
||||
if (WidgetIsDisabled(w, WIDX_TAB_2))
|
||||
return;
|
||||
|
||||
const auto& widget = w->widgets[WIDX_TAB_2];
|
||||
|
@ -804,7 +804,7 @@ static void WindowGuestStatsTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
*/
|
||||
static void WindowGuestRidesTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_TAB_3))
|
||||
if (WidgetIsDisabled(w, WIDX_TAB_3))
|
||||
return;
|
||||
|
||||
const auto& widget = w->widgets[WIDX_TAB_3];
|
||||
|
@ -826,7 +826,7 @@ static void WindowGuestRidesTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
*/
|
||||
static void WindowGuestFinanceTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_TAB_4))
|
||||
if (WidgetIsDisabled(w, WIDX_TAB_4))
|
||||
return;
|
||||
|
||||
const auto& widget = w->widgets[WIDX_TAB_4];
|
||||
|
@ -848,7 +848,7 @@ static void WindowGuestFinanceTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
*/
|
||||
static void WindowGuestThoughtsTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_TAB_5))
|
||||
if (WidgetIsDisabled(w, WIDX_TAB_5))
|
||||
return;
|
||||
|
||||
const auto& widget = w->widgets[WIDX_TAB_5];
|
||||
|
@ -870,7 +870,7 @@ static void WindowGuestThoughtsTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
*/
|
||||
static void WindowGuestInventoryTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_TAB_6))
|
||||
if (WidgetIsDisabled(w, WIDX_TAB_6))
|
||||
return;
|
||||
|
||||
const auto& widget = w->widgets[WIDX_TAB_6];
|
||||
|
@ -881,7 +881,7 @@ static void WindowGuestInventoryTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
|
||||
static void WindowGuestDebugTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_TAB_7))
|
||||
if (WidgetIsDisabled(w, WIDX_TAB_7))
|
||||
return;
|
||||
|
||||
const auto& widget = w->widgets[WIDX_TAB_7];
|
||||
|
|
|
@ -1279,7 +1279,7 @@ static void WindowMapgenDrawTabImage(rct_drawpixelinfo* dpi, rct_window* w, int3
|
|||
{
|
||||
rct_widgetindex widgetIndex = WIDX_TAB_1 + page;
|
||||
|
||||
if (!(w->disabled_widgets & (1LL << widgetIndex)))
|
||||
if (!WidgetIsDisabled(w, widgetIndex))
|
||||
{
|
||||
if (w->page == page)
|
||||
{
|
||||
|
|
|
@ -611,7 +611,7 @@ static void WindowNewRideDrawTabImage(rct_drawpixelinfo* dpi, rct_window* w, int
|
|||
{
|
||||
rct_widgetindex widgetIndex = WIDX_TAB_1 + page;
|
||||
|
||||
if (w->widgets[widgetIndex].type != WindowWidgetType::Empty && !(w->disabled_widgets & (1LL << widgetIndex)))
|
||||
if (w->widgets[widgetIndex].type != WindowWidgetType::Empty && !WidgetIsDisabled(w, widgetIndex))
|
||||
{
|
||||
int32_t frame = 0;
|
||||
if (_windowNewRideCurrentTab == page)
|
||||
|
|
|
@ -229,7 +229,7 @@ private:
|
|||
{
|
||||
rct_widgetindex widgetIndex = WIDX_FIRST_TAB + p;
|
||||
|
||||
if (!(disabled_widgets & (1LL << widgetIndex)))
|
||||
if (!WidgetIsDisabled(this, widgetIndex))
|
||||
{
|
||||
if (page == p)
|
||||
{
|
||||
|
|
|
@ -2103,7 +2103,7 @@ private:
|
|||
|
||||
auto screenCoords = windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
|
||||
if (!(disabled_widgets & (1LL << widgetIndex)))
|
||||
if (!WidgetIsDisabled(this, widgetIndex))
|
||||
{
|
||||
if (page == p)
|
||||
{
|
||||
|
|
|
@ -1608,13 +1608,15 @@ static void WindowParkDrawTabImages(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
int32_t sprite_idx;
|
||||
|
||||
// Entrance tab
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_TAB_1)))
|
||||
if (!WidgetIsDisabled(w, WIDX_TAB_1))
|
||||
{
|
||||
gfx_draw_sprite(
|
||||
dpi, ImageId(SPR_TAB_PARK_ENTRANCE),
|
||||
w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_1].left, w->widgets[WIDX_TAB_1].top });
|
||||
}
|
||||
|
||||
// Rating tab
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_TAB_2)))
|
||||
if (!WidgetIsDisabled(w, WIDX_TAB_2))
|
||||
{
|
||||
sprite_idx = SPR_TAB_GRAPH_0;
|
||||
if (w->page == WINDOW_PARK_PAGE_RATING)
|
||||
|
@ -1630,7 +1632,7 @@ static void WindowParkDrawTabImages(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
}
|
||||
|
||||
// Guests tab
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_TAB_3)))
|
||||
if (!WidgetIsDisabled(w, WIDX_TAB_3))
|
||||
{
|
||||
sprite_idx = SPR_TAB_GRAPH_0;
|
||||
if (w->page == WINDOW_PARK_PAGE_GUESTS)
|
||||
|
@ -1649,7 +1651,7 @@ static void WindowParkDrawTabImages(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
}
|
||||
|
||||
// Price tab
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_TAB_4)))
|
||||
if (!WidgetIsDisabled(w, WIDX_TAB_4))
|
||||
{
|
||||
sprite_idx = SPR_TAB_ADMISSION_0;
|
||||
if (w->page == WINDOW_PARK_PAGE_PRICE)
|
||||
|
@ -1659,7 +1661,7 @@ static void WindowParkDrawTabImages(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
}
|
||||
|
||||
// Statistics tab
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_TAB_5)))
|
||||
if (!WidgetIsDisabled(w, WIDX_TAB_5))
|
||||
{
|
||||
sprite_idx = SPR_TAB_STATS_0;
|
||||
if (w->page == WINDOW_PARK_PAGE_STATS)
|
||||
|
@ -1669,7 +1671,7 @@ static void WindowParkDrawTabImages(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
}
|
||||
|
||||
// Objective tab
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_TAB_6)))
|
||||
if (!WidgetIsDisabled(w, WIDX_TAB_6))
|
||||
{
|
||||
sprite_idx = SPR_TAB_OBJECTIVE_0;
|
||||
if (w->page == WINDOW_PARK_PAGE_OBJECTIVE)
|
||||
|
@ -1679,10 +1681,12 @@ static void WindowParkDrawTabImages(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
}
|
||||
|
||||
// Awards tab
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_TAB_7)))
|
||||
if (!WidgetIsDisabled(w, WIDX_TAB_7))
|
||||
{
|
||||
gfx_draw_sprite(
|
||||
dpi, ImageId(SPR_TAB_AWARDS),
|
||||
w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_7].left, w->widgets[WIDX_TAB_7].top });
|
||||
}
|
||||
}
|
||||
|
||||
#pragma endregion
|
||||
|
|
|
@ -600,7 +600,7 @@ static void WindowResearchDrawTabImage(rct_drawpixelinfo* dpi, rct_window* w, in
|
|||
{
|
||||
rct_widgetindex widgetIndex = WIDX_TAB_1 + page;
|
||||
|
||||
if (!(w->disabled_widgets & (1LL << widgetIndex)))
|
||||
if (!WidgetIsDisabled(w, widgetIndex))
|
||||
{
|
||||
if (w->page == page)
|
||||
{
|
||||
|
|
|
@ -831,7 +831,7 @@ static void WindowRideDrawTabImage(rct_drawpixelinfo* dpi, rct_window* w, int32_
|
|||
{
|
||||
rct_widgetindex widgetIndex = WIDX_TAB_1 + page;
|
||||
|
||||
if (!(w->disabled_widgets & (1LL << widgetIndex)))
|
||||
if (!WidgetIsDisabled(w, widgetIndex))
|
||||
{
|
||||
if (w->page == page)
|
||||
{
|
||||
|
@ -851,7 +851,7 @@ static void WindowRideDrawTabImage(rct_drawpixelinfo* dpi, rct_window* w, int32_
|
|||
static void WindowRideDrawTabMain(rct_drawpixelinfo* dpi, rct_window* w)
|
||||
{
|
||||
rct_widgetindex widgetIndex = WIDX_TAB_1 + WINDOW_RIDE_PAGE_MAIN;
|
||||
if (!(w->disabled_widgets & (1LL << widgetIndex)))
|
||||
if (!WidgetIsDisabled(w, widgetIndex))
|
||||
{
|
||||
auto ride = get_ride(w->rideId);
|
||||
if (ride != nullptr)
|
||||
|
@ -891,7 +891,7 @@ static void WindowRideDrawTabVehicle(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
rct_widgetindex widgetIndex = WIDX_TAB_1 + WINDOW_RIDE_PAGE_VEHICLE;
|
||||
const auto& widget = w->widgets[widgetIndex];
|
||||
|
||||
if (!(w->disabled_widgets & (1LL << widgetIndex)))
|
||||
if (!WidgetIsDisabled(w, widgetIndex))
|
||||
{
|
||||
auto screenCoords = ScreenCoordsXY{ widget.left + 1, widget.top + 1 };
|
||||
int32_t width = widget.right - screenCoords.x;
|
||||
|
@ -961,7 +961,7 @@ static void WindowRideDrawTabCustomer(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
{
|
||||
rct_widgetindex widgetIndex = WIDX_TAB_1 + WINDOW_RIDE_PAGE_CUSTOMER;
|
||||
|
||||
if (!(w->disabled_widgets & (1LL << widgetIndex)))
|
||||
if (!WidgetIsDisabled(w, widgetIndex))
|
||||
{
|
||||
const auto& widget = w->widgets[widgetIndex];
|
||||
int32_t spriteIndex = 0;
|
||||
|
|
|
@ -290,13 +290,13 @@ void WindowStaffDisableWidgets(rct_window* w)
|
|||
{
|
||||
if (peep->CanBePickedUp())
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_PICKUP))
|
||||
if (WidgetIsDisabled(w, WIDX_PICKUP))
|
||||
w->Invalidate();
|
||||
}
|
||||
else
|
||||
{
|
||||
disabled_widgets |= (1ULL << WIDX_PICKUP);
|
||||
if (!(w->disabled_widgets & (1ULL << WIDX_PICKUP)))
|
||||
if (!WidgetIsDisabled(w, WIDX_PICKUP))
|
||||
w->Invalidate();
|
||||
}
|
||||
}
|
||||
|
@ -950,7 +950,7 @@ void WindowStaffOverviewPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
*/
|
||||
void WindowStaffOptionsTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_TAB_2))
|
||||
if (WidgetIsDisabled(w, WIDX_TAB_2))
|
||||
return;
|
||||
|
||||
int32_t image_id = SPR_TAB_STAFF_OPTIONS_0;
|
||||
|
@ -970,7 +970,7 @@ void WindowStaffOptionsTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
*/
|
||||
void WindowStaffStatsTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_TAB_3))
|
||||
if (WidgetIsDisabled(w, WIDX_TAB_3))
|
||||
return;
|
||||
|
||||
int32_t image_id = SPR_TAB_STATS_0;
|
||||
|
@ -989,7 +989,7 @@ void WindowStaffStatsTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
*/
|
||||
void WindowStaffOverviewTabPaint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
if (w->disabled_widgets & (1ULL << WIDX_TAB_1))
|
||||
if (WidgetIsDisabled(w, WIDX_TAB_1))
|
||||
return;
|
||||
|
||||
const auto& widget = w->widgets[WIDX_TAB_1];
|
||||
|
|
|
@ -126,12 +126,12 @@ constexpr rct_widget MakeSpinnerIncreaseWidget(
|
|||
void WidgetScrollUpdateThumbs(rct_window* w, rct_widgetindex widget_index);
|
||||
void WidgetDraw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetindex widgetIndex);
|
||||
|
||||
bool WidgetIsDisabled(rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsHoldable(rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsVisible(rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsPressed(rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsHighlighted(rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsActiveTool(rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsDisabled(const rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsHoldable(const rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsVisible(const rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsPressed(const rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsHighlighted(const rct_window* w, rct_widgetindex widgetIndex);
|
||||
bool WidgetIsActiveTool(const rct_window* w, rct_widgetindex widgetIndex);
|
||||
void WidgetScrollGetPart(
|
||||
rct_window* w, const rct_widget* widget, const ScreenCoordsXY& screenCoords, ScreenCoordsXY& retScreenCoords,
|
||||
int32_t* output_scroll_area, int32_t* scroll_id);
|
||||
|
@ -140,4 +140,5 @@ void WidgetSetEnabled(rct_window* w, rct_widgetindex widgetIndex, bool enabled);
|
|||
void WidgetSetDisabled(rct_window* w, rct_widgetindex widgetIndex, bool value);
|
||||
void WidgetSetHoldable(rct_window* w, rct_widgetindex widgetIndex, bool value);
|
||||
void WidgetSetVisible(rct_window* w, rct_widgetindex widgetIndex, bool value);
|
||||
void WidgetSetCheckboxValue(rct_window* w, rct_widgetindex widgetIndex, int32_t value);
|
||||
void WidgetSetPressed(rct_window* w, rct_widgetindex widgetIndex, bool value);
|
||||
void WidgetSetCheckboxValue(rct_window* w, rct_widgetindex widgetIndex, bool value);
|
||||
|
|
|
@ -1748,24 +1748,6 @@ void window_resize_gui_scenario_editor(int32_t width, int32_t height)
|
|||
}
|
||||
}
|
||||
|
||||
/* Based on rct2: 0x6987ED and another version from window_park */
|
||||
void window_align_tabs(rct_window* w, rct_widgetindex start_tab_id, rct_widgetindex end_tab_id)
|
||||
{
|
||||
int32_t i, x = w->widgets[start_tab_id].left;
|
||||
int32_t tab_width = w->widgets[start_tab_id].width();
|
||||
|
||||
for (i = start_tab_id; i <= end_tab_id; i++)
|
||||
{
|
||||
if (!(w->disabled_widgets & (1LL << i)))
|
||||
{
|
||||
auto& widget = w->widgets[i];
|
||||
widget.left = x;
|
||||
widget.right = x + tab_width;
|
||||
x += tab_width + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006CBCC3
|
||||
|
|
|
@ -777,8 +777,6 @@ void ride_construction_toolupdate_entrance_exit(const ScreenCoordsXY& screenCoor
|
|||
void ride_construction_toolupdate_construct(const ScreenCoordsXY& screenCoords);
|
||||
void ride_construction_tooldown_construct(const ScreenCoordsXY& screenCoords);
|
||||
|
||||
void window_align_tabs(rct_window* w, rct_widgetindex start_tab_id, rct_widgetindex end_tab_id);
|
||||
|
||||
void window_staff_list_init_vars();
|
||||
|
||||
void window_event_close_call(rct_window* w);
|
||||
|
|
Loading…
Reference in New Issue