1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-21 14:53:02 +01:00

Add Some Items to the OpenRCT2::Ui namespace (#22423)

* Put widget in the Ui namespace

* Put theme in the Ui namespace

* Put objective in Ui namespace
This commit is contained in:
Duncan
2024-07-31 05:26:53 +01:00
committed by GitHub
parent bd0dd44c10
commit 681b54dc87
11 changed files with 2043 additions and 2018 deletions

View File

@@ -36,6 +36,7 @@
#include <optional> #include <optional>
using namespace OpenRCT2; using namespace OpenRCT2;
using namespace OpenRCT2::Ui;
using namespace OpenRCT2::Ui::Windows; using namespace OpenRCT2::Ui::Windows;
struct RCTMouseData struct RCTMouseData

View File

@@ -14,8 +14,6 @@
#include <openrct2/drawing/ImageId.hpp> #include <openrct2/drawing/ImageId.hpp>
#include <openrct2/util/Util.h> #include <openrct2/util/Util.h>
using namespace OpenRCT2;
namespace OpenRCT2::Dropdown namespace OpenRCT2::Dropdown
{ {
struct Item; struct Item;

View File

@@ -16,53 +16,56 @@
#include <openrct2/ride/RideData.h> #include <openrct2/ride/RideData.h>
#include <openrct2/scenario/Scenario.h> #include <openrct2/scenario/Scenario.h>
const StringId kObjectiveNames[] = { namespace OpenRCT2::Ui
STR_OBJECTIVE_NONE,
STR_OBJECTIVE_GUESTS_BY,
STR_OBJECTIVE_PARK_VALUE_BY,
STR_OBJECTIVE_HAVE_FUN,
STR_OBJECTIVE_BUILD_THE_BEST,
STR_OBJECTIVE_10_ROLLERCOASTERS,
STR_OBJECTIVE_GUESTS_AND_RATING,
STR_OBJECTIVE_MONTHLY_RIDE_INCOME,
STR_OBJECTIVE_10_ROLLERCOASTERS_LENGTH,
STR_OBJECTIVE_FINISH_5_ROLLERCOASTERS,
STR_OBJECTIVE_REPLAY_LOAN_AND_PARK_VALUE,
STR_OBJECTIVE_MONTHLY_FOOD_INCOME,
};
void formatObjective(Formatter& ft, Objective objective)
{ {
if (objective.Type == OBJECTIVE_BUILD_THE_BEST) const StringId kObjectiveNames[] = {
STR_OBJECTIVE_NONE,
STR_OBJECTIVE_GUESTS_BY,
STR_OBJECTIVE_PARK_VALUE_BY,
STR_OBJECTIVE_HAVE_FUN,
STR_OBJECTIVE_BUILD_THE_BEST,
STR_OBJECTIVE_10_ROLLERCOASTERS,
STR_OBJECTIVE_GUESTS_AND_RATING,
STR_OBJECTIVE_MONTHLY_RIDE_INCOME,
STR_OBJECTIVE_10_ROLLERCOASTERS_LENGTH,
STR_OBJECTIVE_FINISH_5_ROLLERCOASTERS,
STR_OBJECTIVE_REPLAY_LOAN_AND_PARK_VALUE,
STR_OBJECTIVE_MONTHLY_FOOD_INCOME,
};
void formatObjective(Formatter& ft, Objective objective)
{ {
StringId rideTypeString = STR_NONE; if (objective.Type == OBJECTIVE_BUILD_THE_BEST)
auto rideTypeId = objective.RideId;
if (rideTypeId != RIDE_TYPE_NULL && rideTypeId < RIDE_TYPE_COUNT)
{ {
rideTypeString = GetRideTypeDescriptor(rideTypeId).Naming.Name; StringId rideTypeString = STR_NONE;
auto rideTypeId = objective.RideId;
if (rideTypeId != RIDE_TYPE_NULL && rideTypeId < RIDE_TYPE_COUNT)
{
rideTypeString = GetRideTypeDescriptor(rideTypeId).Naming.Name;
}
ft.Add<StringId>(rideTypeString);
}
else if (objective.Type == OBJECTIVE_GUESTS_BY)
{
ft.Add<int32_t>(objective.NumGuests);
ft.Add<int16_t>(DateGetTotalMonths(MONTH_OCTOBER, objective.Year));
}
else if (objective.Type == OBJECTIVE_GUESTS_AND_RATING)
{
ft.Add<int32_t>(objective.NumGuests);
}
else if (objective.Type == OBJECTIVE_10_ROLLERCOASTERS_LENGTH)
{
ft.Add<int16_t>(objective.MinimumLength);
} }
ft.Add<StringId>(rideTypeString);
}
else if (objective.Type == OBJECTIVE_GUESTS_BY)
{
ft.Add<int32_t>(objective.NumGuests);
ft.Add<int16_t>(DateGetTotalMonths(MONTH_OCTOBER, objective.Year));
}
else if (objective.Type == OBJECTIVE_GUESTS_AND_RATING)
{
ft.Add<int32_t>(objective.NumGuests);
}
else if (objective.Type == OBJECTIVE_10_ROLLERCOASTERS_LENGTH)
{
ft.Add<int16_t>(objective.MinimumLength);
}
else
{
ft.Add<int16_t>(objective.NumGuests);
ft.Add<int16_t>(DateGetTotalMonths(MONTH_OCTOBER, objective.Year));
if (objective.Type == OBJECTIVE_FINISH_5_ROLLERCOASTERS)
ft.Add<uint16_t>(objective.MinimumExcitement);
else else
ft.Add<money64>(objective.Currency); {
ft.Add<int16_t>(objective.NumGuests);
ft.Add<int16_t>(DateGetTotalMonths(MONTH_OCTOBER, objective.Year));
if (objective.Type == OBJECTIVE_FINISH_5_ROLLERCOASTERS)
ft.Add<uint16_t>(objective.MinimumExcitement);
else
ft.Add<money64>(objective.Currency);
}
} }
} } // namespace OpenRCT2::Ui

View File

@@ -15,6 +15,9 @@
class Formatter; class Formatter;
struct Objective; struct Objective;
void formatObjective(Formatter& ft, Objective objective); namespace OpenRCT2::Ui
{
void formatObjective(Formatter& ft, Objective objective);
extern const StringId kObjectiveNames[12]; extern const StringId kObjectiveNames[12];
} // namespace OpenRCT2::Ui

File diff suppressed because it is too large Load Diff

View File

@@ -12,37 +12,40 @@
#include <openrct2/interface/Colour.h> #include <openrct2/interface/Colour.h>
#include <openrct2/interface/Window.h> #include <openrct2/interface/Window.h>
enum namespace OpenRCT2::Ui
{ {
UITHEME_FLAG_PREDEFINED = 1 << 0, enum
UITHEME_FLAG_USE_LIGHTS_RIDE = 1 << 1, {
UITHEME_FLAG_USE_LIGHTS_PARK = 1 << 2, UITHEME_FLAG_PREDEFINED = 1 << 0,
UITHEME_FLAG_USE_ALTERNATIVE_SCENARIO_SELECT_FONT = 1 << 3, UITHEME_FLAG_USE_LIGHTS_RIDE = 1 << 1,
UITHEME_FLAG_USE_FULL_BOTTOM_TOOLBAR = 1 << 4, UITHEME_FLAG_USE_LIGHTS_PARK = 1 << 2,
}; UITHEME_FLAG_USE_ALTERNATIVE_SCENARIO_SELECT_FONT = 1 << 3,
UITHEME_FLAG_USE_FULL_BOTTOM_TOOLBAR = 1 << 4,
};
void ColourSchemeUpdate(WindowBase* window); void ColourSchemeUpdate(WindowBase* window);
void ColourSchemeUpdateAll(); void ColourSchemeUpdateAll();
void ColourSchemeUpdateByClass(WindowBase* window, WindowClass classification); void ColourSchemeUpdateByClass(WindowBase* window, WindowClass classification);
void ThemeManagerInitialise(); void ThemeManagerInitialise();
void ThemeManagerLoadAvailableThemes(); void ThemeManagerLoadAvailableThemes();
size_t ThemeManagerGetNumAvailableThemes(); size_t ThemeManagerGetNumAvailableThemes();
const utf8* ThemeManagerGetAvailableThemePath(size_t index); const utf8* ThemeManagerGetAvailableThemePath(size_t index);
const utf8* ThemeManagerGetAvailableThemeConfigName(size_t index); const utf8* ThemeManagerGetAvailableThemeConfigName(size_t index);
const utf8* ThemeManagerGetAvailableThemeName(size_t index); const utf8* ThemeManagerGetAvailableThemeName(size_t index);
size_t ThemeManagerGetAvailableThemeIndex(); size_t ThemeManagerGetAvailableThemeIndex();
void ThemeManagerSetActiveAvailableTheme(size_t index); void ThemeManagerSetActiveAvailableTheme(size_t index);
size_t ThemeGetIndexForName(const utf8* name); size_t ThemeGetIndexForName(const utf8* name);
ColourWithFlags ThemeGetColour(WindowClass wc, uint8_t index); ColourWithFlags ThemeGetColour(WindowClass wc, uint8_t index);
void ThemeSetColour(WindowClass wc, uint8_t index, ColourWithFlags colour); void ThemeSetColour(WindowClass wc, uint8_t index, ColourWithFlags colour);
uint8_t ThemeGetFlags(); uint8_t ThemeGetFlags();
void ThemeSetFlags(uint8_t flags); void ThemeSetFlags(uint8_t flags);
void ThemeSave(); void ThemeSave();
void ThemeRename(const utf8* name); void ThemeRename(const utf8* name);
void ThemeDuplicate(const utf8* name); void ThemeDuplicate(const utf8* name);
void ThemeDelete(); void ThemeDelete();
uint8_t ThemeDescGetNumColours(WindowClass wc); uint8_t ThemeDescGetNumColours(WindowClass wc);
StringId ThemeDescGetName(WindowClass wc); StringId ThemeDescGetName(WindowClass wc);
} // namespace OpenRCT2::Ui

File diff suppressed because it is too large Load Diff

View File

@@ -15,9 +15,9 @@
#include <openrct2/drawing/Drawing.h> #include <openrct2/drawing/Drawing.h>
#include <openrct2/interface/Widget.h> #include <openrct2/interface/Widget.h>
using namespace OpenRCT2; namespace OpenRCT2::Ui
{
// clang-format off // clang-format off
#define WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, CLOSE_STR) \ #define WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, CLOSE_STR) \
{ WindowWidgetType::Frame, 0, 0, WIDTH - 1, 0, HEIGHT - 1, 0xFFFFFFFF, STR_NONE }, \ { WindowWidgetType::Frame, 0, 0, WIDTH - 1, 0, HEIGHT - 1, 0xFFFFFFFF, STR_NONE }, \
{ WindowWidgetType::Caption, 0, 1, WIDTH - 2, 1, 14, TITLE, STR_WINDOW_TITLE_TIP }, \ { WindowWidgetType::Caption, 0, 1, WIDTH - 2, 1, 14, TITLE, STR_WINDOW_TITLE_TIP }, \
@@ -25,168 +25,169 @@ using namespace OpenRCT2;
#define WINDOW_SHIM(TITLE, WIDTH, HEIGHT) WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, STR_CLOSE_X) #define WINDOW_SHIM(TITLE, WIDTH, HEIGHT) WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, STR_CLOSE_X)
#define WINDOW_SHIM_WHITE(TITLE, WIDTH, HEIGHT) WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, STR_CLOSE_X_WHITE) #define WINDOW_SHIM_WHITE(TITLE, WIDTH, HEIGHT) WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, STR_CLOSE_X_WHITE)
// clang-format on // clang-format on
ImageId GetColourButtonImage(colour_t colour); ImageId GetColourButtonImage(colour_t colour);
Widget* GetWidgetByIndex(const WindowBase& w, WidgetIndex widgetIndex); Widget* GetWidgetByIndex(const WindowBase& w, WidgetIndex widgetIndex);
constexpr auto kWidgetsEnd = Widget{ WindowWidgetType::Last, 0, 0, 0, 0, 0, 0, 0 }; constexpr auto kWidgetsEnd = Widget{ WindowWidgetType::Last, 0, 0, 0, 0, 0, 0, 0 };
constexpr uint32_t kWidgetContentEmpty = 0xFFFFFFFF; constexpr uint32_t kWidgetContentEmpty = 0xFFFFFFFF;
constexpr auto kBarBlink = (1u << 31); constexpr auto kBarBlink = (1u << 31);
constexpr uint8_t kScrollBarWidth = 10; constexpr uint8_t kScrollBarWidth = 10;
constexpr ScreenSize kTabSize = { 31, 27 }; constexpr ScreenSize kTabSize = { 31, 27 };
constexpr const char* kBlackUpArrowString = u8"{BLACK}▲"; constexpr const char* kBlackUpArrowString = u8"{BLACK}▲";
constexpr const char* kBlackDownArrowString = u8"{BLACK}▼"; constexpr const char* kBlackDownArrowString = u8"{BLACK}▼";
constexpr const char* kBlackLeftArrowString = u8"{BLACK}◀"; constexpr const char* kBlackLeftArrowString = u8"{BLACK}◀";
constexpr const char* kBlackRightArrowString = u8"{BLACK}▶"; constexpr const char* kBlackRightArrowString = u8"{BLACK}▶";
constexpr const char* kCheckMarkString = u8""; constexpr const char* kCheckMarkString = u8"";
constexpr const char* kEyeString = u8"👁"; constexpr const char* kEyeString = u8"👁";
enum class WindowColour : uint8_t enum class WindowColour : uint8_t
{ {
Primary, Primary,
Secondary, Secondary,
Tertiary, Tertiary,
Quaternary, Quaternary,
}; };
constexpr Widget MakeWidget( constexpr Widget MakeWidget(
const ScreenCoordsXY& origin, const ScreenSize& size, WindowWidgetType type, WindowColour colour, const ScreenCoordsXY& origin, const ScreenSize& size, WindowWidgetType type, WindowColour colour,
uint32_t content = kWidgetContentEmpty, StringId tooltip = STR_NONE) uint32_t content = kWidgetContentEmpty, StringId tooltip = STR_NONE)
{ {
Widget out = {}; Widget out = {};
out.left = origin.x; out.left = origin.x;
out.right = origin.x + size.width - 1; out.right = origin.x + size.width - 1;
out.top = origin.y; out.top = origin.y;
out.bottom = origin.y + size.height - 1; out.bottom = origin.y + size.height - 1;
out.type = type; out.type = type;
out.colour = static_cast<uint8_t>(colour); out.colour = static_cast<uint8_t>(colour);
out.content = content; out.content = content;
out.tooltip = tooltip; out.tooltip = tooltip;
return out; return out;
} }
constexpr Widget MakeWidget( constexpr Widget MakeWidget(
const ScreenCoordsXY& origin, const ScreenSize& size, WindowWidgetType type, WindowColour colour, ImageId image, const ScreenCoordsXY& origin, const ScreenSize& size, WindowWidgetType type, WindowColour colour, ImageId image,
StringId tooltip = STR_NONE) StringId tooltip = STR_NONE)
{ {
Widget out = {}; Widget out = {};
out.left = origin.x; out.left = origin.x;
out.right = origin.x + size.width - 1; out.right = origin.x + size.width - 1;
out.top = origin.y; out.top = origin.y;
out.bottom = origin.y + size.height - 1; out.bottom = origin.y + size.height - 1;
out.type = type; out.type = type;
out.colour = static_cast<uint8_t>(colour); out.colour = static_cast<uint8_t>(colour);
out.image = image; out.image = image;
out.tooltip = tooltip; out.tooltip = tooltip;
return out; return out;
} }
constexpr Widget MakeRemapWidget( constexpr Widget MakeRemapWidget(
const ScreenCoordsXY& origin, const ScreenSize& size, WindowWidgetType type, WindowColour colour, ImageIndex content, const ScreenCoordsXY& origin, const ScreenSize& size, WindowWidgetType type, WindowColour colour, ImageIndex content,
StringId tooltip = STR_NONE) StringId tooltip = STR_NONE)
{ {
return MakeWidget(origin, size, type, colour, ImageId(content, FilterPaletteID::PaletteNull), tooltip); return MakeWidget(origin, size, type, colour, ImageId(content, FilterPaletteID::PaletteNull), tooltip);
} }
constexpr Widget MakeTab(const ScreenCoordsXY& origin, StringId tooltip = STR_NONE) constexpr Widget MakeTab(const ScreenCoordsXY& origin, StringId tooltip = STR_NONE)
{ {
const ScreenSize size = kTabSize; const ScreenSize size = kTabSize;
const WindowWidgetType type = WindowWidgetType::Tab; const WindowWidgetType type = WindowWidgetType::Tab;
const WindowColour colour = WindowColour::Secondary; const WindowColour colour = WindowColour::Secondary;
const auto content = ImageId(ImageIndexUndefined); const auto content = ImageId(ImageIndexUndefined);
return MakeWidget(origin, size, type, colour, content, tooltip); return MakeWidget(origin, size, type, colour, content, tooltip);
} }
constexpr Widget MakeProgressBar( constexpr Widget MakeProgressBar(
const ScreenCoordsXY& origin, const ScreenSize& size, colour_t colour, uint8_t lowerBlinkBound = 0, const ScreenCoordsXY& origin, const ScreenSize& size, colour_t colour, uint8_t lowerBlinkBound = 0,
uint8_t upperBlinkBound = 0) uint8_t upperBlinkBound = 0)
{ {
Widget out = {}; Widget out = {};
out.left = origin.x; out.left = origin.x;
out.right = origin.x + size.width - 1; out.right = origin.x + size.width - 1;
out.top = origin.y; out.top = origin.y;
out.bottom = origin.y + size.height - 1; out.bottom = origin.y + size.height - 1;
out.type = WindowWidgetType::ProgressBar; out.type = WindowWidgetType::ProgressBar;
out.colour = colour; out.colour = colour;
out.content = 0 | (lowerBlinkBound << 8) | (upperBlinkBound << 16); out.content = 0 | (lowerBlinkBound << 8) | (upperBlinkBound << 16);
out.tooltip = STR_NONE; out.tooltip = STR_NONE;
return out; return out;
} }
// NOLINTBEGIN // NOLINTBEGIN
#define MakeSpinnerWidgets(...) \ #define MakeSpinnerWidgets(...) \
MakeWidget(__VA_ARGS__), MakeSpinnerIncreaseWidget(__VA_ARGS__), MakeSpinnerDecreaseWidget(__VA_ARGS__) MakeWidget(__VA_ARGS__), MakeSpinnerIncreaseWidget(__VA_ARGS__), MakeSpinnerDecreaseWidget(__VA_ARGS__)
// NOLINTEND // NOLINTEND
constexpr Widget MakeSpinnerDecreaseWidget( constexpr Widget MakeSpinnerDecreaseWidget(
const ScreenCoordsXY& origin, const ScreenSize& size, [[maybe_unused]] WindowWidgetType type, WindowColour colour, const ScreenCoordsXY& origin, const ScreenSize& size, [[maybe_unused]] WindowWidgetType type, WindowColour colour,
[[maybe_unused]] uint32_t content = kWidgetContentEmpty, StringId tooltip = STR_NONE) [[maybe_unused]] uint32_t content = kWidgetContentEmpty, StringId tooltip = STR_NONE)
{ {
const int16_t xPos = origin.x + size.width - 26; const int16_t xPos = origin.x + size.width - 26;
const int16_t yPos = origin.y + 1; const int16_t yPos = origin.y + 1;
const uint16_t width = 13; const uint16_t width = 13;
const uint16_t height = size.height - 2; const uint16_t height = size.height - 2;
return MakeWidget({ xPos, yPos }, { width, height }, WindowWidgetType::Button, colour, STR_NUMERIC_DOWN, tooltip); return MakeWidget({ xPos, yPos }, { width, height }, WindowWidgetType::Button, colour, STR_NUMERIC_DOWN, tooltip);
} }
constexpr Widget MakeSpinnerIncreaseWidget( constexpr Widget MakeSpinnerIncreaseWidget(
const ScreenCoordsXY& origin, const ScreenSize& size, [[maybe_unused]] WindowWidgetType type, WindowColour colour, const ScreenCoordsXY& origin, const ScreenSize& size, [[maybe_unused]] WindowWidgetType type, WindowColour colour,
[[maybe_unused]] uint32_t content = kWidgetContentEmpty, StringId tooltip = STR_NONE) [[maybe_unused]] uint32_t content = kWidgetContentEmpty, StringId tooltip = STR_NONE)
{ {
const int16_t xPos = origin.x + size.width - 13; const int16_t xPos = origin.x + size.width - 13;
const int16_t yPos = origin.y + 1; const int16_t yPos = origin.y + 1;
const uint16_t width = 12; const uint16_t width = 12;
const uint16_t height = size.height - 2; const uint16_t height = size.height - 2;
return MakeWidget({ xPos, yPos }, { width, height }, WindowWidgetType::Button, colour, STR_NUMERIC_UP, tooltip); return MakeWidget({ xPos, yPos }, { width, height }, WindowWidgetType::Button, colour, STR_NUMERIC_UP, tooltip);
} }
// NOLINTNEXTLINE // NOLINTNEXTLINE
#define MakeDropdownWidgets(...) MakeDropdownBoxWidget(__VA_ARGS__), MakeDropdownButtonWidget(__VA_ARGS__) #define MakeDropdownWidgets(...) MakeDropdownBoxWidget(__VA_ARGS__), MakeDropdownButtonWidget(__VA_ARGS__)
constexpr Widget MakeDropdownBoxWidget( constexpr Widget MakeDropdownBoxWidget(
const ScreenCoordsXY& origin, const ScreenSize& size, [[maybe_unused]] WindowWidgetType type, WindowColour colour, const ScreenCoordsXY& origin, const ScreenSize& size, [[maybe_unused]] WindowWidgetType type, WindowColour colour,
[[maybe_unused]] uint32_t content = kWidgetContentEmpty, StringId tooltip = STR_NONE) [[maybe_unused]] uint32_t content = kWidgetContentEmpty, StringId tooltip = STR_NONE)
{ {
return MakeWidget(origin, size, type, colour, content); return MakeWidget(origin, size, type, colour, content);
} }
constexpr Widget MakeDropdownButtonWidget( constexpr Widget MakeDropdownButtonWidget(
const ScreenCoordsXY& origin, const ScreenSize& size, [[maybe_unused]] WindowWidgetType type, WindowColour colour, const ScreenCoordsXY& origin, const ScreenSize& size, [[maybe_unused]] WindowWidgetType type, WindowColour colour,
[[maybe_unused]] uint32_t content = kWidgetContentEmpty, StringId tooltip = STR_NONE) [[maybe_unused]] uint32_t content = kWidgetContentEmpty, StringId tooltip = STR_NONE)
{ {
const int16_t xPos = origin.x + size.width - 11; const int16_t xPos = origin.x + size.width - 11;
const int16_t yPos = origin.y + 1; const int16_t yPos = origin.y + 1;
const uint16_t width = 11; const uint16_t width = 11;
const uint16_t height = 10; const uint16_t height = 10;
return MakeWidget({ xPos, yPos }, { width, height }, WindowWidgetType::Button, colour, STR_DROPDOWN_GLYPH, tooltip); return MakeWidget({ xPos, yPos }, { width, height }, WindowWidgetType::Button, colour, STR_DROPDOWN_GLYPH, tooltip);
} }
void WidgetDraw(DrawPixelInfo& dpi, WindowBase& w, WidgetIndex widgetIndex); void WidgetDraw(DrawPixelInfo& dpi, WindowBase& w, WidgetIndex widgetIndex);
bool WidgetIsDisabled(const WindowBase& w, WidgetIndex widgetIndex); bool WidgetIsDisabled(const WindowBase& w, WidgetIndex widgetIndex);
bool WidgetIsHoldable(const WindowBase& w, WidgetIndex widgetIndex); bool WidgetIsHoldable(const WindowBase& w, WidgetIndex widgetIndex);
bool WidgetIsVisible(const WindowBase& w, WidgetIndex widgetIndex); bool WidgetIsVisible(const WindowBase& w, WidgetIndex widgetIndex);
bool WidgetIsPressed(const WindowBase& w, WidgetIndex widgetIndex); bool WidgetIsPressed(const WindowBase& w, WidgetIndex widgetIndex);
bool WidgetIsHighlighted(const WindowBase& w, WidgetIndex widgetIndex); bool WidgetIsHighlighted(const WindowBase& w, WidgetIndex widgetIndex);
bool WidgetIsActiveTool(const WindowBase& w, WidgetIndex widgetIndex); bool WidgetIsActiveTool(const WindowBase& w, WidgetIndex widgetIndex);
void WidgetScrollGetPart( void WidgetScrollGetPart(
WindowBase& w, const Widget* widget, const ScreenCoordsXY& screenCoords, ScreenCoordsXY& retScreenCoords, WindowBase& w, const Widget* widget, const ScreenCoordsXY& screenCoords, ScreenCoordsXY& retScreenCoords,
int32_t* output_scroll_area, int32_t* scroll_id); int32_t* output_scroll_area, int32_t* scroll_id);
void WidgetSetEnabled(WindowBase& w, WidgetIndex widgetIndex, bool enabled); void WidgetSetEnabled(WindowBase& w, WidgetIndex widgetIndex, bool enabled);
void WidgetSetDisabled(WindowBase& w, WidgetIndex widgetIndex, bool value); void WidgetSetDisabled(WindowBase& w, WidgetIndex widgetIndex, bool value);
void WidgetSetHoldable(WindowBase& w, WidgetIndex widgetIndex, bool value); void WidgetSetHoldable(WindowBase& w, WidgetIndex widgetIndex, bool value);
void WidgetSetVisible(WindowBase& w, WidgetIndex widgetIndex, bool value); void WidgetSetVisible(WindowBase& w, WidgetIndex widgetIndex, bool value);
void WidgetSetPressed(WindowBase& w, WidgetIndex widgetIndex, bool value); void WidgetSetPressed(WindowBase& w, WidgetIndex widgetIndex, bool value);
void WidgetSetCheckboxValue(WindowBase& w, WidgetIndex widgetIndex, bool value); void WidgetSetCheckboxValue(WindowBase& w, WidgetIndex widgetIndex, bool value);
void WidgetProgressBarSetNewPercentage(Widget& widget, uint8_t newPercentage); void WidgetProgressBarSetNewPercentage(Widget& widget, uint8_t newPercentage);
} // namespace OpenRCT2::Ui

View File

@@ -30,6 +30,7 @@
#include <openrct2/world/Location.hpp> #include <openrct2/world/Location.hpp>
using namespace OpenRCT2; using namespace OpenRCT2;
using namespace OpenRCT2::Ui;
// The amount of pixels to scroll per wheel click // The amount of pixels to scroll per wheel click
constexpr int32_t WindowScrollPixels = 17; constexpr int32_t WindowScrollPixels = 17;

View File

@@ -300,7 +300,7 @@ namespace OpenRCT2::Scripting
auto w = GetWindow(); auto w = GetWindow();
if (w != nullptr) if (w != nullptr)
{ {
return WidgetIsDisabled(*w, _widgetIndex); return Ui::WidgetIsDisabled(*w, _widgetIndex);
} }
return false; return false;
} }
@@ -309,19 +309,19 @@ namespace OpenRCT2::Scripting
auto w = GetWindow(); auto w = GetWindow();
if (w != nullptr) if (w != nullptr)
{ {
WidgetSetDisabled(*w, _widgetIndex, value); Ui::WidgetSetDisabled(*w, _widgetIndex, value);
auto widget = GetWidget(); auto widget = GetWidget();
if (widget != nullptr) if (widget != nullptr)
{ {
if (widget->type == WindowWidgetType::DropdownMenu) if (widget->type == WindowWidgetType::DropdownMenu)
{ {
WidgetSetDisabled(*w, _widgetIndex + 1, value); Ui::WidgetSetDisabled(*w, _widgetIndex + 1, value);
} }
else if (widget->type == WindowWidgetType::Spinner) else if (widget->type == WindowWidgetType::Spinner)
{ {
WidgetSetDisabled(*w, _widgetIndex + 1, value); Ui::WidgetSetDisabled(*w, _widgetIndex + 1, value);
WidgetSetDisabled(*w, _widgetIndex + 2, value); Ui::WidgetSetDisabled(*w, _widgetIndex + 2, value);
} }
} }
Invalidate(widget); Invalidate(widget);
@@ -333,7 +333,7 @@ namespace OpenRCT2::Scripting
auto w = GetWindow(); auto w = GetWindow();
if (w != nullptr) if (w != nullptr)
{ {
return WidgetIsVisible(*w, _widgetIndex); return Ui::WidgetIsVisible(*w, _widgetIndex);
} }
return false; return false;
} }
@@ -342,19 +342,19 @@ namespace OpenRCT2::Scripting
auto w = GetWindow(); auto w = GetWindow();
if (w != nullptr) if (w != nullptr)
{ {
WidgetSetVisible(*w, _widgetIndex, value); Ui::WidgetSetVisible(*w, _widgetIndex, value);
auto widget = GetWidget(); auto widget = GetWidget();
if (widget != nullptr) if (widget != nullptr)
{ {
if (widget->type == WindowWidgetType::DropdownMenu) if (widget->type == WindowWidgetType::DropdownMenu)
{ {
WidgetSetVisible(*w, _widgetIndex + 1, value); Ui::WidgetSetVisible(*w, _widgetIndex + 1, value);
} }
else if (widget->type == WindowWidgetType::Spinner) else if (widget->type == WindowWidgetType::Spinner)
{ {
WidgetSetVisible(*w, _widgetIndex + 1, value); Ui::WidgetSetVisible(*w, _widgetIndex + 1, value);
WidgetSetVisible(*w, _widgetIndex + 2, value); Ui::WidgetSetVisible(*w, _widgetIndex + 2, value);
} }
} }
Invalidate(widget); Invalidate(widget);
@@ -486,7 +486,7 @@ namespace OpenRCT2::Scripting
auto w = GetWindow(); auto w = GetWindow();
if (w != nullptr) if (w != nullptr)
{ {
return WidgetIsPressed(*w, _widgetIndex); return Ui::WidgetIsPressed(*w, _widgetIndex);
} }
return false; return false;
} }
@@ -495,7 +495,7 @@ namespace OpenRCT2::Scripting
auto w = GetWindow(); auto w = GetWindow();
if (w != nullptr) if (w != nullptr)
{ {
WidgetSetCheckboxValue(*w, _widgetIndex, value ? 1 : 0); Ui::WidgetSetCheckboxValue(*w, _widgetIndex, value ? 1 : 0);
Invalidate(); Invalidate();
} }
} }
@@ -548,7 +548,7 @@ namespace OpenRCT2::Scripting
auto w = GetWindow(); auto w = GetWindow();
if (w != nullptr) if (w != nullptr)
{ {
return WidgetIsPressed(*w, _widgetIndex); return Ui::WidgetIsPressed(*w, _widgetIndex);
} }
return false; return false;
} }
@@ -557,7 +557,7 @@ namespace OpenRCT2::Scripting
auto w = GetWindow(); auto w = GetWindow();
if (w != nullptr) if (w != nullptr)
{ {
WidgetSetCheckboxValue(*w, _widgetIndex, value ? 1 : 0); Ui::WidgetSetCheckboxValue(*w, _widgetIndex, value ? 1 : 0);
Invalidate(); Invalidate();
} }
} }

View File

@@ -536,6 +536,7 @@ static constexpr colour_t kColoursDropdownOrder[] = {
} // namespace OpenRCT2::Ui::Windows } // namespace OpenRCT2::Ui::Windows
using namespace OpenRCT2::Ui::Windows; using namespace OpenRCT2::Ui::Windows;
using namespace OpenRCT2;
bool Dropdown::IsChecked(int32_t index) bool Dropdown::IsChecked(int32_t index)
{ {