1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-22 23:33:04 +01:00

Create new methods for dropdowns

This commit is contained in:
Gymnasiast
2025-08-21 21:50:45 +02:00
parent a6deec0e11
commit 6da08cb39e
2 changed files with 32 additions and 0 deletions

View File

@@ -13,6 +13,7 @@
#include <openrct2-ui/UiStringIds.h>
#include <openrct2/core/EnumUtils.hpp>
#include <openrct2/interface/Window.h>
#include <span>
struct ImageId;
@@ -39,9 +40,15 @@ namespace OpenRCT2::Ui::Windows
void WindowDropdownShowText(
const ScreenCoordsXY& screenPos, int32_t extray, ColourWithFlags colour, uint8_t flags, size_t num_items,
size_t prefRowsPerColumn = 0);
void WindowDropdownShowText(
const ScreenCoordsXY& screenPos, int32_t extray, ColourWithFlags colour, uint8_t flags,
std::span<const Dropdown::Item> items, size_t prefRowsPerColumn = 0);
void WindowDropdownShowTextCustomWidth(
const ScreenCoordsXY& screenPos, int32_t extray, ColourWithFlags colour, uint8_t custom_height, uint8_t flags,
size_t num_items, int32_t width, size_t prefRowsPerColumn = 0);
void WindowDropdownShowTextCustomWidth(
const ScreenCoordsXY& screenPos, int32_t extray, ColourWithFlags colour, uint8_t custom_height, uint8_t flags,
std::span<const Dropdown::Item> items, int32_t width, size_t prefRowsPerColumn = 0);
void WindowDropdownShowImage(
int32_t x, int32_t y, int32_t extray, ColourWithFlags colour, uint8_t flags, int32_t numItems, int32_t itemWidth,

View File

@@ -310,6 +310,14 @@ namespace OpenRCT2::Ui::Windows
}
};
static void copyItemsToGlobal(std::span<const Dropdown::Item> items)
{
for (size_t i = 0; i < items.size(); i++)
{
gDropdownItems[i] = items[i];
}
}
/**
* Shows a text dropdown menu.
* rct2: 0x006ECFB9
@@ -340,6 +348,14 @@ namespace OpenRCT2::Ui::Windows
screenPos, extray, colour, 0, flags, num_items, max_string_width + 3, prefRowsPerColumn);
}
void WindowDropdownShowText(
const ScreenCoordsXY& screenPos, int32_t extray, ColourWithFlags colour, uint8_t flags,
std::span<const Dropdown::Item> items, size_t prefRowsPerColumn)
{
copyItemsToGlobal(items);
WindowDropdownShowText(screenPos, extray, colour, flags, items.size(), prefRowsPerColumn);
}
/**
* Shows a text dropdown menu.
* rct2: 0x006ECFB9, although 0x006ECE50 is real version
@@ -373,6 +389,15 @@ namespace OpenRCT2::Ui::Windows
}
}
void WindowDropdownShowTextCustomWidth(
const ScreenCoordsXY& screenPos, int32_t extray, ColourWithFlags colour, uint8_t custom_height, uint8_t flags,
std::span<const Dropdown::Item> items, int32_t width, size_t prefRowsPerColumn)
{
copyItemsToGlobal(items);
WindowDropdownShowTextCustomWidth(
screenPos, extray, colour, custom_height, flags, items.size(), width, prefRowsPerColumn);
}
/**
* Shows an image dropdown menu.
* rct2: 0x006ECFB9