Extract plugin widget validation logic to separate function

This commit is contained in:
Basssiiie 2024-01-16 14:04:14 +00:00
parent 717682a21f
commit 5221e8ee9f
1 changed files with 21 additions and 20 deletions

View File

@ -146,22 +146,18 @@ namespace OpenRCT2::Scripting
auto buttonWidget = widget + 1;
buttonWidget->left += delta;
buttonWidget->right += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1);
}
else if (widget->type == WindowWidgetType::Spinner)
{
auto upWidget = widget + 1;
upWidget->left += delta;
upWidget->right += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1);
auto downWidget = widget + 2;
downWidget->left += delta;
downWidget->right += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 2);
}
Invalidate();
Invalidate(widget);
}
}
@ -190,22 +186,18 @@ namespace OpenRCT2::Scripting
auto buttonWidget = widget + 1;
buttonWidget->top += delta;
buttonWidget->bottom += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1);
}
else if (widget->type == WindowWidgetType::Spinner)
{
auto upWidget = widget + 1;
upWidget->top += delta;
upWidget->bottom += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1);
auto downWidget = widget + 2;
downWidget->top += delta;
downWidget->bottom += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 2);
}
Invalidate();
Invalidate(widget);
}
}
@ -233,22 +225,18 @@ namespace OpenRCT2::Scripting
auto buttonWidget = widget + 1;
buttonWidget->left += delta;
buttonWidget->right += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1);
}
else if (widget->type == WindowWidgetType::Spinner)
{
auto upWidget = widget + 1;
upWidget->left += delta;
upWidget->right += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1);
auto downWidget = widget + 2;
downWidget->left += delta;
downWidget->right += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 2);
}
Invalidate();
Invalidate(widget);
}
}
@ -275,20 +263,16 @@ namespace OpenRCT2::Scripting
{
auto buttonWidget = widget + 1;
buttonWidget->bottom += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1);
}
else if (widget->type == WindowWidgetType::Spinner)
{
auto upWidget = widget + 1;
upWidget->bottom += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1);
auto downWidget = widget + 2;
downWidget->bottom += delta;
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 2);
}
Invalidate();
Invalidate(widget);
}
}
@ -429,6 +413,23 @@ namespace OpenRCT2::Scripting
return false;
}
void Invalidate(const Widget* widget)
{
if (widget != nullptr)
{
if (widget->type == WindowWidgetType::DropdownMenu)
{
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1);
}
else if (widget->type == WindowWidgetType::Spinner)
{
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 1);
WidgetInvalidateByNumber(_class, _number, _widgetIndex + 2);
}
}
Invalidate();
}
void Invalidate()
{
WidgetInvalidateByNumber(_class, _number, _widgetIndex);