From 74995014e6c409cf90a9b54226c751b936fadcc4 Mon Sep 17 00:00:00 2001 From: Duncan Date: Fri, 18 Jun 2021 13:15:17 +0100 Subject: [PATCH] Make widget::colour safe (#1001) * Initial start of making widget::colour safe * Switch all makeWidgets to use enum class * Modify name to WindowColour * Use accessors for window colours * Add assert --- src/OpenLoco/Ui/Dropdown.cpp | 26 ++- src/OpenLoco/Ui/WindowManager.cpp | 10 +- src/OpenLoco/Widget.cpp | 12 +- src/OpenLoco/Widget.h | 28 ++-- src/OpenLoco/Window.h | 22 ++- src/OpenLoco/Windows/About.cpp | 14 +- src/OpenLoco/Windows/AboutMusic.cpp | 14 +- src/OpenLoco/Windows/BuildVehicle.cpp | 52 +++--- src/OpenLoco/Windows/Cheats.cpp | 64 ++++---- src/OpenLoco/Windows/CompanyFaceSelection.cpp | 20 +-- src/OpenLoco/Windows/CompanyList.cpp | 50 +++--- src/OpenLoco/Windows/CompanyWindow.cpp | 116 ++++++------- src/OpenLoco/Windows/Construction/Common.cpp | 2 +- .../Windows/Construction/Construction.h | 18 +- .../Windows/Construction/ConstructionTab.cpp | 48 +++--- .../Windows/Construction/OverheadTab.cpp | 16 +- .../Windows/Construction/SignalTab.cpp | 10 +- .../Windows/Construction/StationTab.cpp | 12 +- src/OpenLoco/Windows/DragVehiclePart.cpp | 2 +- src/OpenLoco/Windows/EditKeyboardShortcut.cpp | 12 +- src/OpenLoco/Windows/Error.cpp | 6 +- src/OpenLoco/Windows/IndustryList.cpp | 36 ++-- src/OpenLoco/Windows/IndustryWindow.cpp | 38 ++--- src/OpenLoco/Windows/KeyboardShortcuts.cpp | 18 +- src/OpenLoco/Windows/LandscapeGeneration.cpp | 88 +++++----- .../Windows/LandscapeGenerationConfirm.cpp | 14 +- src/OpenLoco/Windows/Main.cpp | 2 +- src/OpenLoco/Windows/MapWindow.cpp | 26 +-- src/OpenLoco/Windows/MessageWindow.cpp | 46 +++--- src/OpenLoco/Windows/MusicSelection.cpp | 22 +-- src/OpenLoco/Windows/News/Common.cpp | 4 +- src/OpenLoco/Windows/News/News.h | 14 +- src/OpenLoco/Windows/News/Ticker.cpp | 2 +- .../Windows/ObjectSelectionWindow.cpp | 38 ++--- src/OpenLoco/Windows/Options.cpp | 154 +++++++++--------- src/OpenLoco/Windows/PlayerInfoPanel.cpp | 20 +-- src/OpenLoco/Windows/ProgressBar.cpp | 10 +- src/OpenLoco/Windows/PromptBrowseWindow.cpp | 30 ++-- src/OpenLoco/Windows/PromptOkCancelWindow.cpp | 14 +- src/OpenLoco/Windows/PromptSaveWindow.cpp | 16 +- src/OpenLoco/Windows/ScenarioOptions.cpp | 104 ++++++------ src/OpenLoco/Windows/ScenarioSelect.cpp | 32 ++-- src/OpenLoco/Windows/StationList.cpp | 34 ++-- src/OpenLoco/Windows/StationWindow.cpp | 40 ++--- src/OpenLoco/Windows/TerraForm.cpp | 68 ++++---- src/OpenLoco/Windows/TextInputWindow.cpp | 24 +-- src/OpenLoco/Windows/TileInspector.cpp | 22 +-- src/OpenLoco/Windows/TimePanel.cpp | 24 +-- src/OpenLoco/Windows/TitleExit.cpp | 6 +- src/OpenLoco/Windows/TitleLogo.cpp | 6 +- src/OpenLoco/Windows/TitleMenu.cpp | 18 +- src/OpenLoco/Windows/TitleOptions.cpp | 6 +- src/OpenLoco/Windows/TitleVersion.cpp | 2 +- src/OpenLoco/Windows/ToolTip.cpp | 2 +- src/OpenLoco/Windows/ToolbarBottomEditor.cpp | 24 +-- src/OpenLoco/Windows/ToolbarTop.cpp | 44 ++--- src/OpenLoco/Windows/ToolbarTopAlt.cpp | 48 +++--- src/OpenLoco/Windows/ToolbarTopCommon.cpp | 2 +- src/OpenLoco/Windows/TownList.cpp | 50 +++--- src/OpenLoco/Windows/TownWindow.cpp | 38 ++--- src/OpenLoco/Windows/Tutorial.cpp | 6 +- src/OpenLoco/Windows/Vehicle.cpp | 92 +++++------ src/OpenLoco/Windows/VehicleList.cpp | 38 ++--- 63 files changed, 946 insertions(+), 930 deletions(-) diff --git a/src/OpenLoco/Ui/Dropdown.cpp b/src/OpenLoco/Ui/Dropdown.cpp index 86dbee52..fc706819 100644 --- a/src/OpenLoco/Ui/Dropdown.cpp +++ b/src/OpenLoco/Ui/Dropdown.cpp @@ -151,7 +151,7 @@ namespace OpenLoco::Ui::Dropdown }; Widget widgets[] = { - makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::wt_3, 0), + makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::wt_3, WindowColour::primary), widgetEnd() }; @@ -221,7 +221,7 @@ namespace OpenLoco::Ui::Dropdown } } - auto colour = Colour::opaque(self->colours[0]); + auto colour = Colour::opaque(self->getColour(WindowColour::primary)); if (itemCount == _dropdownHighlightedIndex) { @@ -232,7 +232,7 @@ namespace OpenLoco::Ui::Dropdown { if (itemCount < 32) { - colour = Colour::inset(Colour::opaque(self->colours[0])); + colour = Colour::inset(Colour::opaque(self->getColour(WindowColour::primary))); } } @@ -261,14 +261,14 @@ namespace OpenLoco::Ui::Dropdown auto x = _windowDropdownOnpaintCellX * _dropdownItemWidth + self->x + 2; auto y = _windowDropdownOnpaintCellY * _dropdownItemHeight + self->y + 1 + _dropdownItemHeight / 2; - if (!(self->colours[0] & Colour::translucent_flag)) + if (!(self->getColour(WindowColour::primary) & Colour::translucent_flag)) { - Gfx::drawRect(context, x, y, _dropdownItemWidth - 1, 1, Colour::getShade(self->colours[0], 3)); - Gfx::drawRect(context, x, y + 1, _dropdownItemWidth - 1, 1, Colour::getShade(self->colours[0], 7)); + Gfx::drawRect(context, x, y, _dropdownItemWidth - 1, 1, Colour::getShade(self->getColour(WindowColour::primary), 3)); + Gfx::drawRect(context, x, y + 1, _dropdownItemWidth - 1, 1, Colour::getShade(self->getColour(WindowColour::primary), 7)); } else { - uint32_t colour = _byte_5045FA[Colour::opaque(self->colours[0])] | (1 << 25); + uint32_t colour = _byte_5045FA[Colour::opaque(self->getColour(WindowColour::primary))] | (1 << 25); colour++; Gfx::drawRect(context, x, y, _dropdownItemWidth - 1, 1, colour); colour++; @@ -305,8 +305,8 @@ namespace OpenLoco::Ui::Dropdown common::initEvents(); - common::widgets[0].colour = Colour::black; - window->colours[0] = colour; + common::widgets[0].windowColour = WindowColour::primary; + window->setColour(WindowColour::primary, colour); _dropdownHighlightedIndex = -1; _dropdownDisabledItems = 0; @@ -378,7 +378,6 @@ namespace OpenLoco::Ui::Dropdown _dropdownItemWidth = maxStringWidth; _dropdownItemCount = static_cast(count); _dropdownRowCount = static_cast(count); - widgets[0].colour = colour; uint16_t dropdownHeight = _dropdownItemHeight * static_cast(count) + 3; widgets[0].bottom = dropdownHeight; dropdownHeight++; @@ -472,7 +471,6 @@ namespace OpenLoco::Ui::Dropdown _dropdownRowCount = 0; _dropdownRowCount = count; - common::widgets[0].colour = colour; int16_t dropdownHeight = (static_cast(count) * _dropdownItemHeight) + 3; common::widgets[0].bottom = dropdownHeight; dropdownHeight++; @@ -570,7 +568,6 @@ namespace OpenLoco::Ui::Dropdown _dropdownItemCount = count; _dropdownColumnCount = columnCount; - common::widgets[0].colour = colour; _dropdownRowCount = _dropdownItemCount / _dropdownColumnCount + 1 * (_dropdownItemCount % _dropdownColumnCount); uint16_t dropdownWidth = _dropdownItemWidth * _dropdownColumnCount + 3; common::widgets[0].right = dropdownWidth; @@ -648,7 +645,7 @@ namespace OpenLoco::Ui::Dropdown WindowManager::invalidateWidget(_pressedWindowType, _pressedWindowNumber, _pressedWidgetIndex); auto widget = window->widgets[widgetIndex]; - auto colour = window->colours[widget.colour]; + auto colour = window->getColour(widget.windowColour); colour = Colour::translucent(colour); auto x = widget.left + window->x; @@ -741,7 +738,6 @@ namespace OpenLoco::Ui::Dropdown _dropdownItemCount = static_cast(count); _dropdownRowCount = static_cast(count); - common::widgets[0].colour = colour; uint16_t dropdownHeight = static_cast(count) * _dropdownItemHeight + 3; common::widgets[0].bottom = dropdownHeight; dropdownHeight++; @@ -837,7 +833,7 @@ namespace OpenLoco::Ui::Dropdown } auto x = widget->left + window->x; auto y = widget->top + window->y; - auto colour = Colour::translucent(window->colours[widget->colour]); + auto colour = Colour::translucent(window->getColour(widget->windowColour)); showText(x, y, widget->width(), widget->height(), 25, colour, index, (1 << 6)); diff --git a/src/OpenLoco/Ui/WindowManager.cpp b/src/OpenLoco/Ui/WindowManager.cpp index 285f08bd..7f0673c2 100644 --- a/src/OpenLoco/Ui/WindowManager.cpp +++ b/src/OpenLoco/Ui/WindowManager.cpp @@ -1164,7 +1164,7 @@ namespace OpenLoco::Ui::WindowManager // Company colour if (w->owner != CompanyId::null) { - w->colours[0] = CompanyManager::getCompanyColour(w->owner); + w->setColour(WindowColour::primary, CompanyManager::getCompanyColour(w->owner)); } addr<0x1136F9C, int16_t>() = w->x; @@ -1172,10 +1172,10 @@ namespace OpenLoco::Ui::WindowManager loco_global windowColours; // Text colouring - windowColours[0] = Colour::opaque(w->colours[0]); - windowColours[1] = Colour::opaque(w->colours[1]); - windowColours[2] = Colour::opaque(w->colours[2]); - windowColours[3] = Colour::opaque(w->colours[3]); + windowColours[0] = Colour::opaque(w->getColour(WindowColour::primary)); + windowColours[1] = Colour::opaque(w->getColour(WindowColour::secondary)); + windowColours[2] = Colour::opaque(w->getColour(WindowColour::tertiary)); + windowColours[3] = Colour::opaque(w->getColour(WindowColour::quaternary)); w->callPrepareDraw(); w->callDraw(&context); diff --git a/src/OpenLoco/Widget.cpp b/src/OpenLoco/Widget.cpp index f59608d0..dc7b3bb0 100644 --- a/src/OpenLoco/Widget.cpp +++ b/src/OpenLoco/Widget.cpp @@ -68,12 +68,12 @@ namespace OpenLoco::Ui } uint16_t widgetFlags = 0; - if (colour == 0 && window->flags & WindowFlags::flag_11) + if (windowColour == WindowColour::primary && window->flags & WindowFlags::flag_11) { widgetFlags = 0x80; } - uint8_t wndColour = window->colours[colour]; + uint8_t wndColour = window->getColour(windowColour); auto widgetIndex = this - &window->widgets[0]; bool enabled = (window->enabled_widgets & (1ULL << widgetIndex)) != 0; bool disabled = (window->disabled_widgets & (1ULL << widgetIndex)) != 0; @@ -205,10 +205,10 @@ namespace OpenLoco::Ui if (Input::isPressed(window->type, window->number, widgetIndex)) flags = 0x20; - Gfx::drawRectInset(context, widget.left + window->x, widget.top + window->y, widget.width(), widget.height(), Colour::translucent(window->colours[1]), flags); + Gfx::drawRectInset(context, widget.left + window->x, widget.top + window->y, widget.width(), widget.height(), Colour::translucent(window->getColour(WindowColour::secondary)), flags); } - Gfx::drawImage(context, widget.left + window->x, widget.top + window->y, Gfx::recolour(ImageIds::centre_viewport, window->colours[1])); + Gfx::drawImage(context, widget.left + window->x, widget.top + window->y, Gfx::recolour(ImageIds::centre_viewport, window->getColour(WindowColour::secondary))); } // 0x004CAB8E @@ -918,7 +918,7 @@ namespace OpenLoco::Ui void Widget::drawGroupbox(Gfx::Context* const context, const Window* window, Widget* widget) { - const uint8_t colour = window->colours[widget->colour] & 0x7F; + const uint8_t colour = window->getColour(widget->windowColour) & 0x7F; int32_t l = window->x + widget->left + 5; int32_t t = window->y + widget->top; int32_t r = window->x + widget->right; @@ -1005,7 +1005,7 @@ namespace OpenLoco::Ui Gfx::drawImage(ctx, pos.x, pos.y + 1, imageId); } Gfx::drawImage(ctx, pos.x, pos.y, (1 << 30) | (51 << 19) | ImageIds::tab); - Gfx::drawRect(ctx, pos.x, pos.y + 26, 31, 1, Colour::getShade(w->colours[1], 7)); + Gfx::drawRect(ctx, pos.x, pos.y + 26, 31, 1, Colour::getShade(w->getColour(WindowColour::secondary), 7)); } } } diff --git a/src/OpenLoco/Widget.h b/src/OpenLoco/Widget.h index f5424262..8f610098 100644 --- a/src/OpenLoco/Widget.h +++ b/src/OpenLoco/Widget.h @@ -9,12 +9,12 @@ namespace OpenLoco::Ui { struct Widget { - WidgetType type; // 0x00 - uint8_t colour; // 0x01 - int16_t left; // 0x02 - int16_t right; // 0x04 - int16_t top; // 0x06 - int16_t bottom; // 0x08 + WidgetType type; // 0x00 + WindowColour windowColour; // 0x01 + int16_t left; // 0x02 + int16_t right; // 0x04 + int16_t top; // 0x06 + int16_t bottom; // 0x08 union { uint32_t image; @@ -66,7 +66,7 @@ namespace OpenLoco::Ui static void drawGroupbox(Gfx::Context* const context, const Window* window, Widget* widget); }; - static constexpr Widget makeWidget(Gfx::point_t origin, Gfx::ui_size_t size, WidgetType type, uint8_t colour, uint32_t content = 0xFFFFFFFF, string_id tooltip = StringIds::null) + static constexpr Widget makeWidget(Gfx::point_t origin, Gfx::ui_size_t size, WidgetType type, WindowColour colour, uint32_t content = 0xFFFFFFFF, string_id tooltip = StringIds::null) { Widget out = {}; out.left = origin.x; @@ -74,14 +74,14 @@ namespace OpenLoco::Ui out.top = origin.y; out.bottom = origin.y + size.height - 1; out.type = type; - out.colour = colour; + out.windowColour = colour; out.content = content; out.tooltip = tooltip; return out; } - constexpr Widget makeRemapWidget(Gfx::point_t origin, Gfx::ui_size_t size, WidgetType type, uint8_t colour, uint32_t content = 0xFFFFFFFF, string_id tooltip = StringIds::null) + constexpr Widget makeRemapWidget(Gfx::point_t origin, Gfx::ui_size_t size, WidgetType type, WindowColour colour, uint32_t content = 0xFFFFFFFF, string_id tooltip = StringIds::null) { Widget out = makeWidget(origin, size, type, colour, content, tooltip); @@ -95,7 +95,7 @@ namespace OpenLoco::Ui makeWidget(__VA_ARGS__), \ makeDropdownButtonWidget(__VA_ARGS__) - [[maybe_unused]] static constexpr Widget makeDropdownButtonWidget(Gfx::point_t origin, Gfx::ui_size_t size, [[maybe_unused]] WidgetType type, uint8_t colour, [[maybe_unused]] uint32_t content = 0xFFFFFFFF, [[maybe_unused]] string_id tooltip = StringIds::null) + [[maybe_unused]] static constexpr Widget makeDropdownButtonWidget(Gfx::point_t origin, Gfx::ui_size_t size, [[maybe_unused]] WidgetType type, WindowColour colour, [[maybe_unused]] uint32_t content = 0xFFFFFFFF, [[maybe_unused]] string_id tooltip = StringIds::null) { const int16_t xPos = origin.x + size.width - 12; const int16_t yPos = origin.y + 1; @@ -110,7 +110,7 @@ namespace OpenLoco::Ui makeStepperDecreaseWidget(__VA_ARGS__), \ makeStepperIncreaseWidget(__VA_ARGS__) - [[maybe_unused]] static constexpr Widget makeStepperDecreaseWidget(Gfx::point_t origin, Gfx::ui_size_t size, [[maybe_unused]] WidgetType type, uint8_t colour, [[maybe_unused]] uint32_t content = 0xFFFFFFFF, [[maybe_unused]] string_id tooltip = StringIds::null) + [[maybe_unused]] static constexpr Widget makeStepperDecreaseWidget(Gfx::point_t origin, Gfx::ui_size_t size, [[maybe_unused]] WidgetType type, WindowColour colour, [[maybe_unused]] uint32_t content = 0xFFFFFFFF, [[maybe_unused]] string_id tooltip = StringIds::null) { const int16_t xPos = origin.x + size.width - 26; const int16_t yPos = origin.y + 1; @@ -120,7 +120,7 @@ namespace OpenLoco::Ui return makeWidget({ xPos, yPos }, { width, height }, WidgetType::wt_11, colour, StringIds::stepper_minus); } - [[maybe_unused]] static constexpr Widget makeStepperIncreaseWidget(Gfx::point_t origin, Gfx::ui_size_t size, [[maybe_unused]] WidgetType type, uint8_t colour, [[maybe_unused]] uint32_t content = 0xFFFFFFFF, [[maybe_unused]] string_id tooltip = StringIds::null) + [[maybe_unused]] static constexpr Widget makeStepperIncreaseWidget(Gfx::point_t origin, Gfx::ui_size_t size, [[maybe_unused]] WidgetType type, WindowColour colour, [[maybe_unused]] uint32_t content = 0xFFFFFFFF, [[maybe_unused]] string_id tooltip = StringIds::null) { const int16_t xPos = origin.x + size.width - 13; const int16_t yPos = origin.y + 1; @@ -130,7 +130,7 @@ namespace OpenLoco::Ui return makeWidget({ xPos, yPos }, { width, height }, WidgetType::wt_11, colour, StringIds::stepper_plus); } - constexpr Widget makeTextWidget(Gfx::point_t origin, Gfx::ui_size_t size, WidgetType type, uint8_t colour, string_id content, string_id tooltip = StringIds::null) + constexpr Widget makeTextWidget(Gfx::point_t origin, Gfx::ui_size_t size, WidgetType type, WindowColour colour, string_id content, string_id tooltip = StringIds::null) { Widget out = {}; out.left = origin.x; @@ -138,7 +138,7 @@ namespace OpenLoco::Ui out.top = origin.y; out.bottom = origin.y + size.height - 1; out.type = type; - out.colour = colour; + out.windowColour = colour; out.text = content; out.tooltip = tooltip; diff --git a/src/OpenLoco/Window.h b/src/OpenLoco/Window.h index 6b7e4f4d..8e53be88 100644 --- a/src/OpenLoco/Window.h +++ b/src/OpenLoco/Window.h @@ -62,6 +62,15 @@ namespace OpenLoco::Ui end = 30, }; + enum class WindowColour : uint8_t + { + primary, + secondary, + tertiary, + quaternary, + count + }; + namespace Scrollbars { constexpr uint8_t none = 0; @@ -287,7 +296,7 @@ namespace OpenLoco::Ui uint8_t pad_883[1]; CompanyId_t owner = CompanyId::null; // 0x884 uint8_t var_885 = 0xFF; - uint8_t colours[4]; // 0x886 + uint8_t colours[static_cast(WindowColour::count)]; // 0x886 int16_t var_88A; int16_t var_88C; @@ -336,6 +345,17 @@ namespace OpenLoco::Ui setSize(size, size); } + constexpr uint8_t getColour(WindowColour index) const + { + assert(index < WindowColour::count); + return colours[static_cast(index)]; + } + constexpr void setColour(WindowColour index, Colour_t colour) + { + assert(index < WindowColour::count); + colours[static_cast(index)] = colour; + } + bool isVisible() { return true; diff --git a/src/OpenLoco/Windows/About.cpp b/src/OpenLoco/Windows/About.cpp index 2150c69e..4876947a 100644 --- a/src/OpenLoco/Windows/About.cpp +++ b/src/OpenLoco/Windows/About.cpp @@ -24,11 +24,11 @@ namespace OpenLoco::Ui::Windows::About } static Widget _widgets[] = { - makeWidget({ 0, 0 }, windowSize, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { windowSize.width - 2, 13 }, WidgetType::caption_25, 0, StringIds::about_locomotion_caption), - makeWidget({ windowSize.width - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 15 }, { windowSize.width, 245 }, WidgetType::panel, 1), - makeWidget({ 100, 234 }, { windowSize.width / 2, 12 }, WidgetType::wt_11, 1, StringIds::music_acknowledgements_btn), + makeWidget({ 0, 0 }, windowSize, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { windowSize.width - 2, 13 }, WidgetType::caption_25, WindowColour::primary, StringIds::about_locomotion_caption), + makeWidget({ windowSize.width - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 15 }, { windowSize.width, 245 }, WidgetType::panel, WindowColour::secondary), + makeWidget({ 100, 234 }, { windowSize.width / 2, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::music_acknowledgements_btn), widgetEnd(), }; @@ -55,8 +55,8 @@ namespace OpenLoco::Ui::Windows::About window->initScrollWidgets(); const auto interface = ObjectManager::get(); - window->colours[0] = interface->colour_0B; - window->colours[1] = interface->colour_10; + window->setColour(WindowColour::primary, interface->colour_0B); + window->setColour(WindowColour::secondary, interface->colour_10); } // 0x0043B4AF diff --git a/src/OpenLoco/Windows/AboutMusic.cpp b/src/OpenLoco/Windows/AboutMusic.cpp index b0109e3c..79f7a772 100644 --- a/src/OpenLoco/Windows/AboutMusic.cpp +++ b/src/OpenLoco/Windows/AboutMusic.cpp @@ -30,11 +30,11 @@ namespace OpenLoco::Ui::Windows::AboutMusic } static Widget _widgets[] = { - makeWidget({ 0, 0 }, windowSize, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { windowSize.width - 2, 13 }, WidgetType::caption_25, 0, StringIds::music_acknowledgements_caption), - makeWidget({ windowSize.width - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 15 }, { windowSize.width, 297 }, WidgetType::panel, 1), - makeWidget({ 4, 18 }, { windowSize.width - 8, 289 }, WidgetType::scrollview, 1, Ui::Scrollbars::vertical), + makeWidget({ 0, 0 }, windowSize, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { windowSize.width - 2, 13 }, WidgetType::caption_25, WindowColour::primary, StringIds::music_acknowledgements_caption), + makeWidget({ windowSize.width - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 15 }, { windowSize.width, 297 }, WidgetType::panel, WindowColour::secondary), + makeWidget({ 4, 18 }, { windowSize.width - 8, 289 }, WidgetType::scrollview, WindowColour::secondary, Ui::Scrollbars::vertical), widgetEnd(), }; @@ -61,8 +61,8 @@ namespace OpenLoco::Ui::Windows::AboutMusic window->initScrollWidgets(); const auto interface = ObjectManager::get(); - window->colours[0] = interface->colour_0B; - window->colours[1] = interface->colour_10; + window->setColour(WindowColour::primary, interface->colour_0B); + window->setColour(WindowColour::secondary, interface->colour_10); } // 0x0043BFB0 diff --git a/src/OpenLoco/Windows/BuildVehicle.cpp b/src/OpenLoco/Windows/BuildVehicle.cpp index c237f7c1..345cd18d 100644 --- a/src/OpenLoco/Windows/BuildVehicle.cpp +++ b/src/OpenLoco/Windows/BuildVehicle.cpp @@ -190,26 +190,26 @@ namespace OpenLoco::Ui::Windows::BuildVehicle // 0x5231D0 static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 380, 233 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 378, 13 }, WidgetType::caption_24, 0), - makeWidget({ 365, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 41 }, { 380, 192 }, WidgetType::panel, 1), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_build_new_train_vehicles), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_build_new_buses), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_build_new_trucks), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_build_new_trams), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_build_new_aircraft), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_build_new_ships), - makeRemapWidget({ 5, 43 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_vehicles_for), - makeRemapWidget({ 36, 43 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_vehicles_for), - makeRemapWidget({ 67, 43 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_vehicles_for), - makeRemapWidget({ 98, 43 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_vehicles_for), - makeRemapWidget({ 129, 43 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_vehicles_for), - makeRemapWidget({ 160, 43 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_vehicles_for), - makeRemapWidget({ 191, 43 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_vehicles_for), - makeRemapWidget({ 222, 43 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_vehicles_for), - makeWidget({ 3, 72 }, { 374, 146 }, WidgetType::scrollview, 1, Scrollbars::vertical), - makeWidget({ 250, 44 }, { 180, 66 }, WidgetType::scrollview, 1, Scrollbars::none), + makeWidget({ 0, 0 }, { 380, 233 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 378, 13 }, WidgetType::caption_24, WindowColour::primary), + makeWidget({ 365, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 41 }, { 380, 192 }, WidgetType::panel, WindowColour::secondary), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_build_new_train_vehicles), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_build_new_buses), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_build_new_trucks), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_build_new_trams), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_build_new_aircraft), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_build_new_ships), + makeRemapWidget({ 5, 43 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_vehicles_for), + makeRemapWidget({ 36, 43 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_vehicles_for), + makeRemapWidget({ 67, 43 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_vehicles_for), + makeRemapWidget({ 98, 43 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_vehicles_for), + makeRemapWidget({ 129, 43 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_vehicles_for), + makeRemapWidget({ 160, 43 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_vehicles_for), + makeRemapWidget({ 191, 43 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_vehicles_for), + makeRemapWidget({ 222, 43 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_vehicles_for), + makeWidget({ 3, 72 }, { 374, 146 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), + makeWidget({ 250, 44 }, { 180, 66 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::none), widgetEnd(), }; @@ -261,7 +261,7 @@ namespace OpenLoco::Ui::Windows::BuildVehicle auto skin = OpenLoco::ObjectManager::get(); if (skin != nullptr) { - window->colours[1] = skin->colour_0A; + window->setColour(WindowColour::secondary, skin->colour_0A); } setDisabledTransportTabs(window); return window; @@ -1038,7 +1038,7 @@ namespace OpenLoco::Ui::Windows::BuildVehicle { case scrollIdx::vehicle_selection: { - auto colour = Colour::getShade(window->colours[1], 4); + auto colour = Colour::getShade(window->getColour(WindowColour::secondary), 4); Gfx::clear(*context, colour * 0x01010101); if (window->var_83C == 0) { @@ -1099,7 +1099,7 @@ namespace OpenLoco::Ui::Windows::BuildVehicle } case scrollIdx::vehicle_preview: { - auto colour = Colour::getShade(window->colours[1], 0); + auto colour = Colour::getShade(window->getColour(WindowColour::secondary), 0); // Gfx::clear needs the colour copied to each byte of eax Gfx::clear(*context, colour * 0x01010101); @@ -1331,13 +1331,13 @@ namespace OpenLoco::Ui::Windows::BuildVehicle auto top = window->y + 69; auto right = left + window->width - 187; auto bottom = top; - Gfx::fillRect(context, left, top, right, bottom, Colour::getShade(window->colours[1], 7)); + Gfx::fillRect(context, left, top, right, bottom, Colour::getShade(window->getColour(WindowColour::secondary), 7)); left = window->x + window->width - 187; top = window->y + 41; right = left; bottom = top + 27; - Gfx::fillRect(context, left, top, right, bottom, Colour::getShade(window->colours[1], 7)); + Gfx::fillRect(context, left, top, right, bottom, Colour::getShade(window->getColour(WindowColour::secondary), 7)); for (uint32_t tab = 0; tab < _numTrackTypeTabs; ++tab) { @@ -1348,7 +1348,7 @@ namespace OpenLoco::Ui::Windows::BuildVehicle top = widget.top + window->y + 26; right = left + 29; bottom = top; - Gfx::fillRect(context, left, top, right, bottom, Colour::getShade(window->colours[1], 5)); + Gfx::fillRect(context, left, top, right, bottom, Colour::getShade(window->getColour(WindowColour::secondary), 5)); } auto img = 0; diff --git a/src/OpenLoco/Windows/Cheats.cpp b/src/OpenLoco/Windows/Cheats.cpp index 880ef1c3..dfe5683a 100644 --- a/src/OpenLoco/Windows/Cheats.cpp +++ b/src/OpenLoco/Windows/Cheats.cpp @@ -33,15 +33,15 @@ namespace OpenLoco::Ui::Windows::Cheats }; } -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, 0, windowCaptionId), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { frameWidth, frameHeight - 41 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab), \ - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, WindowColour::primary, windowCaptionId), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { frameWidth, frameHeight - 41 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab), \ + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab) constexpr uint64_t enabledWidgets = (1 << Widx::close_button) | (1 << Widx::tab_finances) | (1 << Widx::tab_companies) | (1 << Widx::tab_vehicles) | (1 << Widx::tab_towns); @@ -145,12 +145,12 @@ namespace OpenLoco::Ui::Windows::Cheats static Widget _widgets[] = { commonWidgets(windowSize.width, windowSize.height, StringIds::financial_cheats), - makeWidget({ 4, 48 }, { windowSize.width - 8, 33 }, WidgetType::groupbox, 1, StringIds::cheat_increase_funds), - makeStepperWidgets({ 80, 62 }, { 95, 12 }, WidgetType::wt_17, 1, StringIds::empty), - makeWidget({ 180, 62 }, { 60, 12 }, WidgetType::wt_11, 1, StringIds::cheat_add), - makeWidget({ 4, 86 }, { windowSize.width - 8, 33 }, WidgetType::groupbox, 1, StringIds::cheat_clear_loan), - makeWidget({ 80, 100 }, { 95, 12 }, WidgetType::wt_17, 1), - makeWidget({ 180, 100 }, { 60, 12 }, WidgetType::wt_11, 1, StringIds::cheat_clear), + makeWidget({ 4, 48 }, { windowSize.width - 8, 33 }, WidgetType::groupbox, WindowColour::secondary, StringIds::cheat_increase_funds), + makeStepperWidgets({ 80, 62 }, { 95, 12 }, WidgetType::wt_17, WindowColour::secondary, StringIds::empty), + makeWidget({ 180, 62 }, { 60, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_add), + makeWidget({ 4, 86 }, { windowSize.width - 8, 33 }, WidgetType::groupbox, WindowColour::secondary, StringIds::cheat_clear_loan), + makeWidget({ 80, 100 }, { 95, 12 }, WidgetType::wt_17, WindowColour::secondary), + makeWidget({ 180, 100 }, { 60, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_clear), widgetEnd(), }; @@ -309,13 +309,13 @@ namespace OpenLoco::Ui::Windows::Cheats static Widget _widgets[] = { commonWidgets(windowSize.width, windowSize.height, StringIds::company_cheats), - makeWidget({ 4, 48 }, { windowSize.width - 8, 33 }, WidgetType::groupbox, 1, StringIds::cheat_select_target_company), - makeDropdownWidgets({ 10, 62 }, { windowSize.width - 20, 12 }, WidgetType::wt_17, 1), - makeWidget({ 4, 86 }, { windowSize.width - 8, 80 }, WidgetType::groupbox, 1, StringIds::cheat_select_cheat_to_apply), - makeWidget({ 10, 100 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, 1, StringIds::cheat_switch_to_company), - makeWidget({ 10, 116 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, 1, StringIds::cheat_acquire_company_assets), - makeWidget({ 10, 132 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, 1, StringIds::cheat_toggle_bankruptcy), - makeWidget({ 10, 148 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, 1, StringIds::cheat_toggle_jail_status), + makeWidget({ 4, 48 }, { windowSize.width - 8, 33 }, WidgetType::groupbox, WindowColour::secondary, StringIds::cheat_select_target_company), + makeDropdownWidgets({ 10, 62 }, { windowSize.width - 20, 12 }, WidgetType::wt_17, WindowColour::secondary), + makeWidget({ 4, 86 }, { windowSize.width - 8, 80 }, WidgetType::groupbox, WindowColour::secondary, StringIds::cheat_select_cheat_to_apply), + makeWidget({ 10, 100 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_switch_to_company), + makeWidget({ 10, 116 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_acquire_company_assets), + makeWidget({ 10, 132 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_toggle_bankruptcy), + makeWidget({ 10, 148 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_toggle_jail_status), widgetEnd(), }; @@ -454,9 +454,9 @@ namespace OpenLoco::Ui::Windows::Cheats static Widget _widgets[] = { commonWidgets(windowSize.width, windowSize.height, StringIds::vehicle_cheats), - makeWidget({ 4, 48 }, { windowSize.width - 8, 49 }, WidgetType::groupbox, 1, StringIds::cheat_set_vehicle_reliability), - makeWidget({ 10, 62 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, 1, StringIds::cheat_reliability_zero), - makeWidget({ 10, 78 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, 1, StringIds::cheat_reliability_hundred), + makeWidget({ 4, 48 }, { windowSize.width - 8, 49 }, WidgetType::groupbox, WindowColour::secondary, StringIds::cheat_set_vehicle_reliability), + makeWidget({ 10, 62 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_reliability_zero), + makeWidget({ 10, 78 }, { windowSize.width - 20, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_reliability_hundred), widgetEnd(), }; @@ -543,11 +543,11 @@ namespace OpenLoco::Ui::Windows::Cheats static Widget _widgets[] = { commonWidgets(windowSize.width, windowSize.height, StringIds::town_cheats), - makeWidget({ 4, 48 }, { windowSize.width - 8, 49 }, WidgetType::groupbox, 1, StringIds::cheat_set_ratings), - makeWidget({ 10, 62 }, { (windowSize.width - 26) / 2, 12 }, WidgetType::wt_11, 1, StringIds::cheat_ratings_min_10pct), - makeWidget({ 3 + (windowSize.width / 2), 62 }, { (windowSize.width - 26) / 2, 12 }, WidgetType::wt_11, 1, StringIds::cheat_ratings_plus_10pct), - makeWidget({ 10, 78 }, { (windowSize.width - 26) / 2, 12 }, WidgetType::wt_11, 1, StringIds::cheat_ratings_to_min), - makeWidget({ 3 + (windowSize.width / 2), 78 }, { (windowSize.width - 26) / 2, 12 }, WidgetType::wt_11, 1, StringIds::cheat_ratings_to_max), + makeWidget({ 4, 48 }, { windowSize.width - 8, 49 }, WidgetType::groupbox, WindowColour::secondary, StringIds::cheat_set_ratings), + makeWidget({ 10, 62 }, { (windowSize.width - 26) / 2, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_ratings_min_10pct), + makeWidget({ 3 + (windowSize.width / 2), 62 }, { (windowSize.width - 26) / 2, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_ratings_plus_10pct), + makeWidget({ 10, 78 }, { (windowSize.width - 26) / 2, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_ratings_to_min), + makeWidget({ 3 + (windowSize.width / 2), 78 }, { (windowSize.width - 26) / 2, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::cheat_ratings_to_max), widgetEnd(), }; @@ -649,8 +649,8 @@ namespace OpenLoco::Ui::Windows::Cheats window->initScrollWidgets(); auto skin = ObjectManager::get(); - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_0C; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_0C); return window; } diff --git a/src/OpenLoco/Windows/CompanyFaceSelection.cpp b/src/OpenLoco/Windows/CompanyFaceSelection.cpp index d93b24cd..e226bdf3 100644 --- a/src/OpenLoco/Windows/CompanyFaceSelection.cpp +++ b/src/OpenLoco/Windows/CompanyFaceSelection.cpp @@ -40,12 +40,12 @@ namespace OpenLoco::Ui::Windows::CompanyFaceSelection // 0x509680 static Widget widgets[] = { - makeWidget({ 0, 0 }, windowSize, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 398, 13 }, WidgetType::caption_24, 0, StringIds::company_face_selection_title), - makeWidget({ 385, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 15 }, { 400, 257 }, WidgetType::panel, 1), - makeWidget({ 4, 19 }, { 188, 248 }, WidgetType::scrollview, 1, Scrollbars::vertical, StringIds::tooltip_company_face_selection), - makeWidget({ 265, 23 }, { 66, 66 }, WidgetType::wt_5, 1), + makeWidget({ 0, 0 }, windowSize, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 398, 13 }, WidgetType::caption_24, WindowColour::primary, StringIds::company_face_selection_title), + makeWidget({ 385, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 15 }, { 400, 257 }, WidgetType::panel, WindowColour::secondary), + makeWidget({ 4, 19 }, { 188, 248 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical, StringIds::tooltip_company_face_selection), + makeWidget({ 265, 23 }, { 66, 66 }, WidgetType::wt_5, WindowColour::secondary), widgetEnd(), }; @@ -102,7 +102,7 @@ namespace OpenLoco::Ui::Windows::CompanyFaceSelection _9C68F2 = id; self->owner = id; const auto* skin = ObjectManager::get(); - self->colours[1] = skin->colour_0A; + self->setColour(WindowColour::secondary, skin->colour_0A); findAllInUseCompetitors(id); self->row_count = _numberCompetitorObjects; self->row_hover = -1; @@ -218,7 +218,7 @@ namespace OpenLoco::Ui::Windows::CompanyFaceSelection } { - const auto colour = Colour::getShade(self->colours[1], 0); + const auto colour = Colour::getShade(self->getColour(WindowColour::secondary), 0); const auto l = self->x + 1 + self->widgets[widx::face_frame].left; const auto t = self->y + 1 + self->widgets[widx::face_frame].top; const auto r = self->x - 1 + self->widgets[widx::face_frame].right; @@ -248,7 +248,7 @@ namespace OpenLoco::Ui::Windows::CompanyFaceSelection // 0x00435152 static void drawScroll(Window* const self, Gfx::Context* const context, const uint32_t scrollIndex) { - Gfx::clearSingle(*context, Colour::getShade(self->colours[1], 4)); + Gfx::clearSingle(*context, Colour::getShade(self->getColour(WindowColour::secondary), 4)); auto index = 0; for (const auto& object : ObjectManager::getAvailableObjects(ObjectType::competitor)) @@ -270,7 +270,7 @@ namespace OpenLoco::Ui::Windows::CompanyFaceSelection if (isInUseCompetitor(object.first)) { _currentFontSpriteBase = Font::m1; - stringColour = Colour::opaque(self->colours[1]) | (1 << 6); + stringColour = Colour::opaque(self->getColour(WindowColour::secondary)) | (1 << 6); } Gfx::drawString(context, 0, y - 1, stringColour, const_cast(name.c_str())); diff --git a/src/OpenLoco/Windows/CompanyList.cpp b/src/OpenLoco/Windows/CompanyList.cpp index 65c350c8..ddbb6219 100644 --- a/src/OpenLoco/Windows/CompanyList.cpp +++ b/src/OpenLoco/Windows/CompanyList.cpp @@ -72,18 +72,18 @@ namespace OpenLoco::Ui::Windows::CompanyList const uint64_t enabledWidgets = (1 << widx::close_button) | (1 << widx::tab_company_list) | (1 << widx::tab_performance) | (1 << widx::tab_cargo_units) | (1 << widx::tab_cargo_distance) | (1 << widx::tab_values) | (1 << widx::tab_payment_rates) | (1 << widx::tab_speed_records); -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, 0, windowCaptionId), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { frameWidth, 231 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_compare_companies), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_company_performance), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_cargo_graphs), \ - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_cargo_distance_graphs), \ - makeRemapWidget({ 127, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_company_values), \ - makeRemapWidget({ 158, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_cargo_payment_rates), \ - makeRemapWidget({ 189, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_speed_records) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, WindowColour::primary, windowCaptionId), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { frameWidth, 231 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_compare_companies), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_company_performance), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_cargo_graphs), \ + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_cargo_distance_graphs), \ + makeRemapWidget({ 127, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_company_values), \ + makeRemapWidget({ 158, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_cargo_payment_rates), \ + makeRemapWidget({ 189, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_speed_records) static void onMouseUp(Window* self, WidgetIndex_t widgetIndex); static void onUpdate(Window* self); @@ -117,11 +117,11 @@ namespace OpenLoco::Ui::Windows::CompanyList Widget widgets[] = { commonWidgets(640, 272, StringIds::title_company_list), - makeWidget({ 4, 43 }, { 175, 12 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::tooltip_sort_company_name), - makeWidget({ 179, 43 }, { 210, 12 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::tooltip_sort_company_status), - makeWidget({ 389, 43 }, { 145, 12 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::tooltip_sort_company_performance), - makeWidget({ 534, 43 }, { 100, 12 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::tooltip_sort_company_value), - makeWidget({ 3, 56 }, { 634, 201 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 4, 43 }, { 175, 12 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::tooltip_sort_company_name), + makeWidget({ 179, 43 }, { 210, 12 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::tooltip_sort_company_status), + makeWidget({ 389, 43 }, { 145, 12 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::tooltip_sort_company_performance), + makeWidget({ 534, 43 }, { 100, 12 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::tooltip_sort_company_value), + makeWidget({ 3, 56 }, { 634, 201 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd(), }; @@ -456,7 +456,7 @@ namespace OpenLoco::Ui::Windows::CompanyList // 0x00435EA7 static void drawScroll(Window* self, Gfx::Context* context, uint32_t scrollIndex) { - auto colour = Colour::getShade(self->colours[1], 3); + auto colour = Colour::getShade(self->getColour(WindowColour::secondary), 3); Gfx::clearSingle(*context, colour); auto yBottom = 0; @@ -604,8 +604,8 @@ namespace OpenLoco::Ui::Windows::CompanyList Common::refreshCompanyList(window); auto skin = ObjectManager::get(); - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_0C; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_0C); window->var_854 = 0; } @@ -1552,7 +1552,7 @@ namespace OpenLoco::Ui::Windows::CompanyList else imageId += performanceImageIds[0]; - imageId = Gfx::recolour(imageId, self->colours[1]); + imageId = Gfx::recolour(imageId, self->getColour(WindowColour::secondary)); Widget::drawTab(self, context, imageId, widx::tab_performance); } @@ -1576,7 +1576,7 @@ namespace OpenLoco::Ui::Windows::CompanyList else imageId += cargoUnitsImageIds[0]; - imageId = Gfx::recolour(imageId, self->colours[1]); + imageId = Gfx::recolour(imageId, self->getColour(WindowColour::secondary)); Widget::drawTab(self, context, imageId, widx::tab_cargo_units); } @@ -1600,7 +1600,7 @@ namespace OpenLoco::Ui::Windows::CompanyList else imageId += cargoDistanceImageIds[0]; - imageId = Gfx::recolour(imageId, self->colours[1]); + imageId = Gfx::recolour(imageId, self->getColour(WindowColour::secondary)); Widget::drawTab(self, context, imageId, widx::tab_cargo_distance); } @@ -1624,7 +1624,7 @@ namespace OpenLoco::Ui::Windows::CompanyList else imageId += companyValuesImageIds[0]; - imageId = Gfx::recolour(imageId, self->colours[1]); + imageId = Gfx::recolour(imageId, self->getColour(WindowColour::secondary)); Widget::drawTab(self, context, imageId, widx::tab_values); @@ -1657,7 +1657,7 @@ namespace OpenLoco::Ui::Windows::CompanyList uint32_t imageId = skin->img; imageId += InterfaceSkin::ImageIds::tab_awards; - imageId = Gfx::recolour(imageId, self->colours[1]); + imageId = Gfx::recolour(imageId, self->getColour(WindowColour::secondary)); Widget::drawTab(self, context, imageId, widx::tab_speed_records); } diff --git a/src/OpenLoco/Windows/CompanyWindow.cpp b/src/OpenLoco/Windows/CompanyWindow.cpp index a32e9822..567fc821 100644 --- a/src/OpenLoco/Windows/CompanyWindow.cpp +++ b/src/OpenLoco/Windows/CompanyWindow.cpp @@ -46,18 +46,18 @@ namespace OpenLoco::Ui::Windows::CompanyWindow constexpr uint64_t enabledWidgets = (1 << widx::caption) | (1 << widx::close_button) | (1 << widx::tab_status) | (1 << widx::tab_details) | (1 << widx::tab_colour_scheme) | (1 << widx::tab_finances) | (1 << widx::tab_cargo_delivered) | (1 << widx::tab_challenge); -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_24, 0, windowCaptionId), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { frameWidth, 120 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_company_owner_and_status), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_company_headquarters_and_details), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_company_colour_scheme), \ - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_company_finances), \ - makeRemapWidget({ 127, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_cargo_delivered), \ - makeRemapWidget({ 158, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_company_challenge_for_this_game), \ - makeWidget({ 0, 14 }, { 26, 26 }, WidgetType::wt_9, 0, ImageIds::null, StringIds::tooltip_select_company) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_24, WindowColour::primary, windowCaptionId), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { frameWidth, 120 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_company_owner_and_status), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_company_headquarters_and_details), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_company_colour_scheme), \ + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_company_finances), \ + makeRemapWidget({ 127, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_cargo_delivered), \ + makeRemapWidget({ 158, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_company_challenge_for_this_game), \ + makeWidget({ 0, 14 }, { 26, 26 }, WidgetType::wt_9, WindowColour::primary, ImageIds::null, StringIds::tooltip_select_company) // 0x004343FC static void disableChallengeTab(Window* self) @@ -107,11 +107,11 @@ namespace OpenLoco::Ui::Windows::CompanyWindow static Widget widgets[] = { commonWidgets(270, 182, StringIds::title_company), - makeWidget({ 3, 160 }, { 242, 21 }, WidgetType::wt_13, 1), - makeWidget({ 3, 44 }, { 96, 120 }, WidgetType::viewport, 1, -2), - makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::null, StringIds::move_main_view_to_show_this), - makeWidget({ 178, 57 }, { 66, 66 }, WidgetType::wt_9, 1, ImageIds::null), - makeWidget({ 154, 124 }, { 112, 22 }, WidgetType::wt_9, 1, ImageIds::null, StringIds::tooltip_change_owner_name), + makeWidget({ 3, 160 }, { 242, 21 }, WidgetType::wt_13, WindowColour::secondary), + makeWidget({ 3, 44 }, { 96, 120 }, WidgetType::viewport, WindowColour::secondary, -2), + makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::null, StringIds::move_main_view_to_show_this), + makeWidget({ 178, 57 }, { 66, 66 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::null), + makeWidget({ 154, 124 }, { 112, 22 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::null, StringIds::tooltip_change_owner_name), widgetEnd(), }; @@ -574,7 +574,7 @@ namespace OpenLoco::Ui::Windows::CompanyWindow window->saved_view.clear(); auto skin = ObjectManager::get(); - window->colours[1] = skin->colour_0A; + window->setColour(WindowColour::secondary, skin->colour_0A); window->flags |= WindowFlags::resizable; @@ -651,9 +651,9 @@ namespace OpenLoco::Ui::Windows::CompanyWindow static Widget widgets[] = { commonWidgets(340, 194, StringIds::title_company_details), - makeWidget({ 219, 54 }, { 96, 120 }, WidgetType::viewport, 1, -2), - makeWidget({ 315, 92 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::null, StringIds::tooltip_build_or_move_headquarters), - makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::null, StringIds::move_main_view_to_show_this), + makeWidget({ 219, 54 }, { 96, 120 }, WidgetType::viewport, WindowColour::secondary, -2), + makeWidget({ 315, 92 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::null, StringIds::tooltip_build_or_move_headquarters), + makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::null, StringIds::move_main_view_to_show_this), widgetEnd(), }; @@ -1167,38 +1167,38 @@ namespace OpenLoco::Ui::Windows::CompanyWindow static Widget widgets[] = { commonWidgets(265, 252, StringIds::title_company_colour_scheme), - makeWidget({ 15, 81 }, { 204, 12 }, WidgetType::checkbox, 1, StringIds::colour_steam_locomotives, StringIds::tooltip_toggle_vehicle_colour_scheme), - makeWidget({ 15, 98 }, { 204, 12 }, WidgetType::checkbox, 1, StringIds::colour_diesel_locomotives, StringIds::tooltip_toggle_vehicle_colour_scheme), - makeWidget({ 15, 115 }, { 204, 12 }, WidgetType::checkbox, 1, StringIds::colour_electric_locomotives, StringIds::tooltip_toggle_vehicle_colour_scheme), - makeWidget({ 15, 132 }, { 204, 12 }, WidgetType::checkbox, 1, StringIds::colour_multiple_units, StringIds::tooltip_toggle_vehicle_colour_scheme), - makeWidget({ 15, 149 }, { 204, 12 }, WidgetType::checkbox, 1, StringIds::colour_passenger_vehicles, StringIds::tooltip_toggle_vehicle_colour_scheme), - makeWidget({ 15, 166 }, { 204, 12 }, WidgetType::checkbox, 1, StringIds::colour_freight_vehicles, StringIds::tooltip_toggle_vehicle_colour_scheme), - makeWidget({ 15, 183 }, { 204, 12 }, WidgetType::checkbox, 1, StringIds::colour_buses, StringIds::tooltip_toggle_vehicle_colour_scheme), - makeWidget({ 15, 200 }, { 204, 12 }, WidgetType::checkbox, 1, StringIds::colour_trucks, StringIds::tooltip_toggle_vehicle_colour_scheme), - makeWidget({ 15, 217 }, { 204, 12 }, WidgetType::checkbox, 1, StringIds::colour_aircraft, StringIds::tooltip_toggle_vehicle_colour_scheme), - makeWidget({ 15, 234 }, { 204, 12 }, WidgetType::checkbox, 1, StringIds::colour_ships, StringIds::tooltip_toggle_vehicle_colour_scheme), - makeWidget({ 221, 48 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 221, 78 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 221, 95 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 221, 112 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 221, 129 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 221, 146 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 221, 163 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 221, 180 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 221, 197 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 221, 214 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 221, 231 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_main_colour), - makeWidget({ 239, 48 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), - makeWidget({ 239, 78 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), - makeWidget({ 239, 95 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), - makeWidget({ 239, 112 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), - makeWidget({ 239, 129 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), - makeWidget({ 239, 146 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), - makeWidget({ 239, 163 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), - makeWidget({ 239, 180 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), - makeWidget({ 239, 197 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), - makeWidget({ 239, 214 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), - makeWidget({ 239, 231 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 15, 81 }, { 204, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::colour_steam_locomotives, StringIds::tooltip_toggle_vehicle_colour_scheme), + makeWidget({ 15, 98 }, { 204, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::colour_diesel_locomotives, StringIds::tooltip_toggle_vehicle_colour_scheme), + makeWidget({ 15, 115 }, { 204, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::colour_electric_locomotives, StringIds::tooltip_toggle_vehicle_colour_scheme), + makeWidget({ 15, 132 }, { 204, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::colour_multiple_units, StringIds::tooltip_toggle_vehicle_colour_scheme), + makeWidget({ 15, 149 }, { 204, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::colour_passenger_vehicles, StringIds::tooltip_toggle_vehicle_colour_scheme), + makeWidget({ 15, 166 }, { 204, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::colour_freight_vehicles, StringIds::tooltip_toggle_vehicle_colour_scheme), + makeWidget({ 15, 183 }, { 204, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::colour_buses, StringIds::tooltip_toggle_vehicle_colour_scheme), + makeWidget({ 15, 200 }, { 204, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::colour_trucks, StringIds::tooltip_toggle_vehicle_colour_scheme), + makeWidget({ 15, 217 }, { 204, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::colour_aircraft, StringIds::tooltip_toggle_vehicle_colour_scheme), + makeWidget({ 15, 234 }, { 204, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::colour_ships, StringIds::tooltip_toggle_vehicle_colour_scheme), + makeWidget({ 221, 48 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 221, 78 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 221, 95 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 221, 112 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 221, 129 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 221, 146 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 221, 163 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 221, 180 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 221, 197 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 221, 214 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 221, 231 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_main_colour), + makeWidget({ 239, 48 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 239, 78 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 239, 95 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 239, 112 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 239, 129 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 239, 146 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 239, 163 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 239, 180 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 239, 197 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 239, 214 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), + makeWidget({ 239, 231 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_secondary_colour), widgetEnd(), }; @@ -1526,8 +1526,8 @@ namespace OpenLoco::Ui::Windows::CompanyWindow static Widget widgets[] = { commonWidgets(636, 319, StringIds::title_company_finances), - makeWidget({ 133, 45 }, { 499, 215 }, WidgetType::scrollview, 1, Scrollbars::horizontal), - makeStepperWidgets({ 87, 264 }, { 100, 12 }, WidgetType::wt_17, 1, StringIds::company_current_loan_value), + makeWidget({ 133, 45 }, { 499, 215 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::horizontal), + makeStepperWidgets({ 87, 264 }, { 100, 12 }, WidgetType::wt_17, WindowColour::secondary, StringIds::company_current_loan_value), widgetEnd(), }; @@ -1627,7 +1627,7 @@ namespace OpenLoco::Ui::Windows::CompanyWindow // Add zebra stripes to even labels. if (i % 2 == 0) { - auto colour = Colour::getShade(self->colours[1], 6) | 0x1000000; + auto colour = Colour::getShade(self->getColour(WindowColour::secondary), 6) | 0x1000000; Gfx::fillRect(context, self->x + 4, y, self->x + 129, y + 9, colour); } @@ -1797,7 +1797,7 @@ namespace OpenLoco::Ui::Windows::CompanyWindow // Add zebra stripes to even labels. if (i % 2 == 0) { - auto colour = Colour::getShade(self->colours[1], 6) | 0x1000000; + auto colour = Colour::getShade(self->getColour(WindowColour::secondary), 6) | 0x1000000; Gfx::fillRect(context, 0, y, expenditureColumnWidth * 17, y + 9, colour); } @@ -2588,7 +2588,7 @@ namespace OpenLoco::Ui::Windows::CompanyWindow // Details tab { - const uint32_t imageId = Gfx::recolour(skin->img + InterfaceSkin::ImageIds::tab_company_details, self->colours[0]); + const uint32_t imageId = Gfx::recolour(skin->img + InterfaceSkin::ImageIds::tab_company_details, self->getColour(WindowColour::primary)); Widget::drawTab(self, context, imageId, widx::tab_details); } diff --git a/src/OpenLoco/Windows/Construction/Common.cpp b/src/OpenLoco/Windows/Construction/Common.cpp index 16401a17..26087de2 100644 --- a/src/OpenLoco/Windows/Construction/Common.cpp +++ b/src/OpenLoco/Windows/Construction/Common.cpp @@ -798,7 +798,7 @@ namespace OpenLoco::Ui::Windows::Construction window->owner = _playerCompany; auto skin = ObjectManager::get(); - window->colours[1] = skin->colour_0D; + window->setColour(WindowColour::secondary, skin->colour_0D); WindowManager::sub_4CEE0B(window); Ui::Windows::showDirectionArrows(); diff --git a/src/OpenLoco/Windows/Construction/Construction.h b/src/OpenLoco/Windows/Construction/Construction.h index 329a50ff..48a4135d 100644 --- a/src/OpenLoco/Windows/Construction/Construction.h +++ b/src/OpenLoco/Windows/Construction/Construction.h @@ -94,15 +94,15 @@ namespace OpenLoco::Ui::Windows::Construction tab_overhead, }; -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_24, 0, windowCaptionId), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { frameWidth, frameHeight - 41 }, WidgetType::wt_3, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_track_road_construction), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_station_construction), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_signal_construction), \ - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tab_electrification_construction) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_24, WindowColour::primary, windowCaptionId), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { frameWidth, frameHeight - 41 }, WidgetType::wt_3, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_track_road_construction), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_station_construction), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_signal_construction), \ + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tab_electrification_construction) constexpr uint64_t enabledWidgets = (1 << widx::caption) | (1 << widx::close_button) | (1 << widx::tab_construction) | (1 << widx::tab_station) | (1 << widx::tab_signal) | (1 << widx::tab_overhead); diff --git a/src/OpenLoco/Windows/Construction/ConstructionTab.cpp b/src/OpenLoco/Windows/Construction/ConstructionTab.cpp index 6ae56e64..c3c9102a 100644 --- a/src/OpenLoco/Windows/Construction/ConstructionTab.cpp +++ b/src/OpenLoco/Windows/Construction/ConstructionTab.cpp @@ -71,29 +71,29 @@ namespace OpenLoco::Ui::Windows::Construction::Construction Widget widgets[] = { commonWidgets(138, 276, StringIds::stringid_2), - makeWidget({ 3, 45 }, { 22, 24 }, WidgetType::wt_9, 1, ImageIds::construction_left_hand_curve_very_small, StringIds::tooltip_left_hand_curve_very_small), - makeWidget({ 3, 45 }, { 22, 24 }, WidgetType::wt_9, 1, ImageIds::construction_left_hand_curve_small, StringIds::tooltip_left_hand_curve_small), - makeWidget({ 25, 45 }, { 22, 24 }, WidgetType::wt_9, 1, ImageIds::construction_left_hand_curve, StringIds::tooltip_left_hand_curve), - makeWidget({ 47, 45 }, { 22, 24 }, WidgetType::wt_9, 1, ImageIds::construction_left_hand_curve_large, StringIds::tooltip_left_hand_curve_large), - makeWidget({ 69, 45 }, { 22, 24 }, WidgetType::wt_9, 1, ImageIds::construction_right_hand_curve_large, StringIds::tooltip_right_hand_curve_large), - makeWidget({ 91, 45 }, { 22, 24 }, WidgetType::wt_9, 1, ImageIds::construction_right_hand_curve, StringIds::tooltip_right_hand_curve), - makeWidget({ 113, 45 }, { 22, 24 }, WidgetType::wt_9, 1, ImageIds::construction_right_hand_curve_small, StringIds::tooltip_right_hand_curve_small), - makeWidget({ 113, 45 }, { 22, 24 }, WidgetType::wt_9, 1, ImageIds::construction_right_hand_curve_very_small, StringIds::tooltip_right_hand_curve_very_small), - makeWidget({ 9, 69 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_s_bend_dual_track_left, StringIds::tooltip_s_bend_left_dual_track), - makeWidget({ 33, 69 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_s_bend_left, StringIds::tooltip_s_bend_left), - makeWidget({ 57, 69 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_straight, StringIds::tooltip_straight), - makeWidget({ 81, 69 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_s_bend_right, StringIds::tooltip_s_bend_right), - makeWidget({ 105, 69 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_s_bend_dual_track_right, StringIds::tooltip_s_bend_right_dual_track), - makeWidget({ 9, 96 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_steep_slope_down, StringIds::tooltip_steep_slope_down), - makeWidget({ 33, 96 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_slope_down, StringIds::tooltip_slope_down), - makeWidget({ 57, 96 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_level, StringIds::tooltip_level), - makeWidget({ 81, 96 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_slope_up, StringIds::tooltip_slope_up), - makeWidget({ 105, 96 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_steep_slope_up, StringIds::tooltip_steep_slope_up), - makeWidget({ 40, 123 }, { 58, 20 }, WidgetType::wt_18, 1, StringIds::empty, StringIds::tooltip_bridge_stats), - makeWidget({ 86, 124 }, { 11, 18 }, WidgetType::wt_11, 1, StringIds::dropdown, StringIds::tooltip_bridge_stats), - makeWidget({ 3, 145 }, { 132, 100 }, WidgetType::wt_5, 1, 0xFFFFFFFF, StringIds::tooltip_construct), - makeWidget({ 6, 248 }, { 46, 24 }, WidgetType::wt_9, 1, ImageIds::construction_remove, StringIds::tooltip_remove), - makeWidget({ 57, 248 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::rotate_object, StringIds::rotate_90), + makeWidget({ 3, 45 }, { 22, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_left_hand_curve_very_small, StringIds::tooltip_left_hand_curve_very_small), + makeWidget({ 3, 45 }, { 22, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_left_hand_curve_small, StringIds::tooltip_left_hand_curve_small), + makeWidget({ 25, 45 }, { 22, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_left_hand_curve, StringIds::tooltip_left_hand_curve), + makeWidget({ 47, 45 }, { 22, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_left_hand_curve_large, StringIds::tooltip_left_hand_curve_large), + makeWidget({ 69, 45 }, { 22, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_right_hand_curve_large, StringIds::tooltip_right_hand_curve_large), + makeWidget({ 91, 45 }, { 22, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_right_hand_curve, StringIds::tooltip_right_hand_curve), + makeWidget({ 113, 45 }, { 22, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_right_hand_curve_small, StringIds::tooltip_right_hand_curve_small), + makeWidget({ 113, 45 }, { 22, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_right_hand_curve_very_small, StringIds::tooltip_right_hand_curve_very_small), + makeWidget({ 9, 69 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_s_bend_dual_track_left, StringIds::tooltip_s_bend_left_dual_track), + makeWidget({ 33, 69 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_s_bend_left, StringIds::tooltip_s_bend_left), + makeWidget({ 57, 69 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_straight, StringIds::tooltip_straight), + makeWidget({ 81, 69 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_s_bend_right, StringIds::tooltip_s_bend_right), + makeWidget({ 105, 69 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_s_bend_dual_track_right, StringIds::tooltip_s_bend_right_dual_track), + makeWidget({ 9, 96 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_steep_slope_down, StringIds::tooltip_steep_slope_down), + makeWidget({ 33, 96 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_slope_down, StringIds::tooltip_slope_down), + makeWidget({ 57, 96 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_level, StringIds::tooltip_level), + makeWidget({ 81, 96 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_slope_up, StringIds::tooltip_slope_up), + makeWidget({ 105, 96 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_steep_slope_up, StringIds::tooltip_steep_slope_up), + makeWidget({ 40, 123 }, { 58, 20 }, WidgetType::wt_18, WindowColour::secondary, StringIds::empty, StringIds::tooltip_bridge_stats), + makeWidget({ 86, 124 }, { 11, 18 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown, StringIds::tooltip_bridge_stats), + makeWidget({ 3, 145 }, { 132, 100 }, WidgetType::wt_5, WindowColour::secondary, 0xFFFFFFFF, StringIds::tooltip_construct), + makeWidget({ 6, 248 }, { 46, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_remove, StringIds::tooltip_remove), + makeWidget({ 57, 248 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::rotate_object, StringIds::rotate_90), widgetEnd(), }; @@ -1238,7 +1238,7 @@ namespace OpenLoco::Ui::Windows::Construction::Construction auto width = 155; auto height = widget.height(); - Dropdown::show(x, y, width, height, self->colours[1], bridgeCount, 22, flags); + Dropdown::show(x, y, width, height, self->getColour(WindowColour::secondary), bridgeCount, 22, flags); for (auto i = 0; i < 9; i++) { auto bridge = _bridgeList[i]; diff --git a/src/OpenLoco/Windows/Construction/OverheadTab.cpp b/src/OpenLoco/Windows/Construction/OverheadTab.cpp index 1d953022..0dd7fb87 100644 --- a/src/OpenLoco/Windows/Construction/OverheadTab.cpp +++ b/src/OpenLoco/Windows/Construction/OverheadTab.cpp @@ -21,13 +21,13 @@ namespace OpenLoco::Ui::Windows::Construction::Overhead Widget widgets[] = { commonWidgets(138, 192, StringIds::stringid_2), - makeWidget({ 3, 45 }, { 132, 12 }, WidgetType::checkbox, 1, StringIds::empty, StringIds::tooltip_select_track_mod), - makeWidget({ 3, 57 }, { 132, 12 }, WidgetType::checkbox, 1, StringIds::empty, StringIds::tooltip_select_track_mod), - makeWidget({ 3, 69 }, { 132, 12 }, WidgetType::checkbox, 1, StringIds::empty, StringIds::tooltip_select_track_mod), - makeWidget({ 3, 81 }, { 132, 12 }, WidgetType::checkbox, 1, StringIds::empty, StringIds::tooltip_select_track_mod), - makeWidget({ 35, 110 }, { 66, 66 }, WidgetType::wt_3, 1), - makeWidget({ 3, 95 }, { 132, 12 }, WidgetType::wt_18, 1, 0xFFFFFFFF, StringIds::tooltip_select_track_to_upgrade), - makeWidget({ 123, 96 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown, StringIds::tooltip_select_track_to_upgrade), + makeWidget({ 3, 45 }, { 132, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::empty, StringIds::tooltip_select_track_mod), + makeWidget({ 3, 57 }, { 132, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::empty, StringIds::tooltip_select_track_mod), + makeWidget({ 3, 69 }, { 132, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::empty, StringIds::tooltip_select_track_mod), + makeWidget({ 3, 81 }, { 132, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::empty, StringIds::tooltip_select_track_mod), + makeWidget({ 35, 110 }, { 66, 66 }, WidgetType::wt_3, WindowColour::secondary), + makeWidget({ 3, 95 }, { 132, 12 }, WidgetType::wt_18, WindowColour::secondary, 0xFFFFFFFF, StringIds::tooltip_select_track_to_upgrade), + makeWidget({ 123, 96 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown, StringIds::tooltip_select_track_to_upgrade), widgetEnd(), }; @@ -82,7 +82,7 @@ namespace OpenLoco::Ui::Windows::Construction::Overhead auto width = widget.width() + 2; auto height = widget.height(); - Dropdown::show(xPos, yPos, width, height, self->colours[1], modCount, (1 << 7)); + Dropdown::show(xPos, yPos, width, height, self->getColour(WindowColour::secondary), modCount, (1 << 7)); Dropdown::add(0, StringIds::single_section); Dropdown::add(1, StringIds::block_section); diff --git a/src/OpenLoco/Windows/Construction/SignalTab.cpp b/src/OpenLoco/Windows/Construction/SignalTab.cpp index 931ebec4..aa3e2c4b 100644 --- a/src/OpenLoco/Windows/Construction/SignalTab.cpp +++ b/src/OpenLoco/Windows/Construction/SignalTab.cpp @@ -16,10 +16,10 @@ namespace OpenLoco::Ui::Windows::Construction::Signal { Widget widgets[] = { commonWidgets(138, 167, StringIds::stringid_2), - makeWidget({ 3, 45 }, { 132, 12 }, WidgetType::wt_18, 1, 0xFFFFFFFF, StringIds::tooltip_select_signal_type), - makeWidget({ 123, 46 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown, StringIds::tooltip_select_signal_type), - makeWidget({ 27, 110 }, { 40, 40 }, WidgetType::wt_9, 1, 0xFFFFFFFF, StringIds::tooltip_signal_both_directions), - makeWidget({ 71, 110 }, { 40, 40 }, WidgetType::wt_9, 1, 0xFFFFFFFF, StringIds::tooltip_signal_single_direction), + makeWidget({ 3, 45 }, { 132, 12 }, WidgetType::wt_18, WindowColour::secondary, 0xFFFFFFFF, StringIds::tooltip_select_signal_type), + makeWidget({ 123, 46 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown, StringIds::tooltip_select_signal_type), + makeWidget({ 27, 110 }, { 40, 40 }, WidgetType::wt_9, WindowColour::secondary, 0xFFFFFFFF, StringIds::tooltip_signal_both_directions), + makeWidget({ 71, 110 }, { 40, 40 }, WidgetType::wt_9, WindowColour::secondary, 0xFFFFFFFF, StringIds::tooltip_signal_single_direction), widgetEnd(), }; @@ -60,7 +60,7 @@ namespace OpenLoco::Ui::Windows::Construction::Signal auto width = widget.width() + 2; auto height = widget.height(); - Dropdown::show(xPos, yPos, width, height, self->colours[1], signalCount, (1 << 7)); + Dropdown::show(xPos, yPos, width, height, self->getColour(WindowColour::secondary), signalCount, (1 << 7)); for (auto signalIndex = 0; signalIndex < signalCount; signalIndex++) { diff --git a/src/OpenLoco/Windows/Construction/StationTab.cpp b/src/OpenLoco/Windows/Construction/StationTab.cpp index c2dbb56b..6a0d706e 100644 --- a/src/OpenLoco/Windows/Construction/StationTab.cpp +++ b/src/OpenLoco/Windows/Construction/StationTab.cpp @@ -23,10 +23,10 @@ namespace OpenLoco::Ui::Windows::Construction::Station { Widget widgets[] = { commonWidgets(138, 190, StringIds::stringid_2), - makeWidget({ 3, 45 }, { 132, 12 }, WidgetType::wt_18, 1, 0xFFFFFFFF, StringIds::tooltip_select_station_type), - makeWidget({ 123, 46 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown, StringIds::tooltip_select_station_type), - makeWidget({ 35, 60 }, { 68, 68 }, WidgetType::wt_3, 1), - makeWidget({ 112, 104 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::rotate_object, StringIds::rotate_90), + makeWidget({ 3, 45 }, { 132, 12 }, WidgetType::wt_18, WindowColour::secondary, 0xFFFFFFFF, StringIds::tooltip_select_station_type), + makeWidget({ 123, 46 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown, StringIds::tooltip_select_station_type), + makeWidget({ 35, 60 }, { 68, 68 }, WidgetType::wt_3, WindowColour::secondary), + makeWidget({ 112, 104 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::rotate_object, StringIds::rotate_90), widgetEnd(), }; @@ -87,7 +87,7 @@ namespace OpenLoco::Ui::Windows::Construction::Station auto yPos = widget.top + self->y; auto width = widget.width() + 2; auto height = widget.height(); - Dropdown::show(xPos, yPos, width, height, self->colours[1], stationCount, (1 << 7)); + Dropdown::show(xPos, yPos, width, height, self->getColour(WindowColour::secondary), stationCount, (1 << 7)); if (_byte_1136063 & (1 << 7)) { @@ -300,7 +300,7 @@ namespace OpenLoco::Ui::Windows::Construction::Station xPos = self->x + 3; yPos = self->widgets[widx::image].bottom + self->y + 16; auto width = self->width - 4; - Gfx::drawRectInset(context, xPos, yPos, width, 1, self->colours[1], (1 << 5)); + Gfx::drawRectInset(context, xPos, yPos, width, 1, self->getColour(WindowColour::secondary), (1 << 5)); if (!(_byte_522096 & (1 << 3))) return; diff --git a/src/OpenLoco/Windows/DragVehiclePart.cpp b/src/OpenLoco/Windows/DragVehiclePart.cpp index 4ab2e4e2..53c48ea5 100644 --- a/src/OpenLoco/Windows/DragVehiclePart.cpp +++ b/src/OpenLoco/Windows/DragVehiclePart.cpp @@ -18,7 +18,7 @@ namespace OpenLoco::Ui::Windows::DragVehiclePart // 0x00522504 static Widget widgets[] = { - makeWidget({ 0, 0 }, { 150, 60 }, WidgetType::wt_3, 0), + makeWidget({ 0, 0 }, { 150, 60 }, WidgetType::wt_3, WindowColour::primary), widgetEnd() }; diff --git a/src/OpenLoco/Windows/EditKeyboardShortcut.cpp b/src/OpenLoco/Windows/EditKeyboardShortcut.cpp index 661eca2d..bf9abb5b 100644 --- a/src/OpenLoco/Windows/EditKeyboardShortcut.cpp +++ b/src/OpenLoco/Windows/EditKeyboardShortcut.cpp @@ -22,10 +22,10 @@ namespace OpenLoco::Ui::Windows::EditKeyboardShortcut static loco_global _11364A4; static Widget _widgets[] = { - makeWidget({ 0, 0 }, windowSize, WidgetType::frame, 0, 0xFFFFFFFF), // 0, - makeWidget({ 1, 1 }, { windowSize.width - 2, 13 }, WidgetType::caption_25, 0, StringIds::change_keyboard_shortcut), // 1, - makeWidget({ 265, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), // 2, - makeWidget({ 0, 15 }, { windowSize.width, 57 }, WidgetType::panel, 1, 0xFFFFFFFF), // 3, + makeWidget({ 0, 0 }, windowSize, WidgetType::frame, WindowColour::primary, 0xFFFFFFFF), // 0, + makeWidget({ 1, 1 }, { windowSize.width - 2, 13 }, WidgetType::caption_25, WindowColour::primary, StringIds::change_keyboard_shortcut), // 1, + makeWidget({ 265, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), // 2, + makeWidget({ 0, 15 }, { windowSize.width, 57 }, WidgetType::panel, WindowColour::secondary, 0xFFFFFFFF), // 3, widgetEnd(), }; @@ -58,8 +58,8 @@ namespace OpenLoco::Ui::Windows::EditKeyboardShortcut window->initScrollWidgets(); const auto skin = ObjectManager::get(); - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_10; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_10); return window; } diff --git a/src/OpenLoco/Windows/Error.cpp b/src/OpenLoco/Windows/Error.cpp index 3e005aff..acf80e11 100644 --- a/src/OpenLoco/Windows/Error.cpp +++ b/src/OpenLoco/Windows/Error.cpp @@ -40,7 +40,7 @@ namespace OpenLoco::Ui::Windows::Error }; Widget widgets[] = { - makeWidget({ 0, 0 }, { 200, 42 }, WidgetType::wt_3, 0), + makeWidget({ 0, 0 }, { 200, 42 }, WidgetType::wt_3, WindowColour::primary), widgetEnd(), }; } @@ -54,8 +54,8 @@ namespace OpenLoco::Ui::Windows::Error }; Widget widgets[] = { - makeWidget({ 0, 0 }, { 250, 70 }, WidgetType::wt_3, 0), - makeWidget({ 3, 3 }, { 64, 64 }, WidgetType::wt_3, 1), + makeWidget({ 0, 0 }, { 250, 70 }, WidgetType::wt_3, WindowColour::primary), + makeWidget({ 3, 3 }, { 64, 64 }, WidgetType::wt_3, WindowColour::secondary), widgetEnd(), }; } diff --git a/src/OpenLoco/Windows/IndustryList.cpp b/src/OpenLoco/Windows/IndustryList.cpp index aaa2ce30..8b246eaa 100644 --- a/src/OpenLoco/Windows/IndustryList.cpp +++ b/src/OpenLoco/Windows/IndustryList.cpp @@ -43,13 +43,13 @@ namespace OpenLoco::Ui::Windows::IndustryList const uint64_t enabledWidgets = (1 << widx::close_button) | (1 << widx::tab_industry_list) | (1 << widx::tab_new_industry); -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, 0, windowCaptionId), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { frameWidth, 154 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_industries_list), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_fund_new_industries) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, WindowColour::primary, windowCaptionId), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { frameWidth, 154 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_industries_list), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_fund_new_industries) static WindowEventList _events; @@ -80,10 +80,10 @@ namespace OpenLoco::Ui::Windows::IndustryList Widget widgets[] = { commonWidgets(600, 197, StringIds::title_industries), - makeWidget({ 4, 44 }, { 199, 11 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::sort_industry_name), - makeWidget({ 204, 44 }, { 204, 11 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::sort_industry_status), - makeWidget({ 444, 44 }, { 159, 11 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::sort_industry_production_transported), - makeWidget({ 3, 56 }, { 593, 125 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 4, 44 }, { 199, 11 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::sort_industry_name), + makeWidget({ 204, 44 }, { 204, 11 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::sort_industry_status), + makeWidget({ 444, 44 }, { 159, 11 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::sort_industry_production_transported), + makeWidget({ 3, 56 }, { 593, 125 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd(), }; @@ -379,7 +379,7 @@ namespace OpenLoco::Ui::Windows::IndustryList // 0x00457D2A static void drawScroll(Ui::Window* self, Gfx::Context* context, uint32_t scrollIndex) { - auto shade = Colour::getShade(self->colours[1], 4); + auto shade = Colour::getShade(self->getColour(WindowColour::secondary), 4); Gfx::clearSingle(*context, shade); uint16_t yPos = 0; @@ -543,8 +543,8 @@ namespace OpenLoco::Ui::Windows::IndustryList window->flags |= WindowFlags::resizable; auto skin = ObjectManager::get(); - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_0C; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_0C); // 0x00457878 end @@ -585,7 +585,7 @@ namespace OpenLoco::Ui::Windows::IndustryList Widget widgets[] = { commonWidgets(577, 171, StringIds::title_fund_new_industries), - makeWidget({ 3, 45 }, { 549, 111 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 3, 45 }, { 549, 111 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd(), }; @@ -869,7 +869,7 @@ namespace OpenLoco::Ui::Windows::IndustryList // 0x00458352 static void drawScroll(Ui::Window* self, Gfx::Context* context, uint32_t scrollIndex) { - auto shade = Colour::getShade(self->colours[1], 4); + auto shade = Colour::getShade(self->getColour(WindowColour::secondary), 4); Gfx::clearSingle(*context, shade); loco_global word_E0C3C6; @@ -883,13 +883,13 @@ namespace OpenLoco::Ui::Windows::IndustryList if (self->row_info[i] == self->var_846) { word_E0C3C6 = Colour::translucent_flag; - Gfx::drawRectInset(context, xPos, yPos, rowHeight, rowHeight, self->colours[1], Colour::translucent_flag); + Gfx::drawRectInset(context, xPos, yPos, rowHeight, rowHeight, self->getColour(WindowColour::secondary), Colour::translucent_flag); } } else { word_E0C3C6 = Colour::translucent_flag | Colour::outline_flag; - Gfx::drawRectInset(context, xPos, yPos, rowHeight, rowHeight, self->colours[1], (Colour::translucent_flag | Colour::outline_flag)); + Gfx::drawRectInset(context, xPos, yPos, rowHeight, rowHeight, self->getColour(WindowColour::secondary), (Colour::translucent_flag | Colour::outline_flag)); } auto industryObj = ObjectManager::get(self->row_info[i]); diff --git a/src/OpenLoco/Windows/IndustryWindow.cpp b/src/OpenLoco/Windows/IndustryWindow.cpp index 55d86c3d..b94208d1 100644 --- a/src/OpenLoco/Windows/IndustryWindow.cpp +++ b/src/OpenLoco/Windows/IndustryWindow.cpp @@ -42,15 +42,15 @@ namespace OpenLoco::Ui::Windows::Industry const uint64_t enabledWidgets = (1 << widx::caption) | (1 << widx::close_button) | (1 << widx::tab_industry) | (1 << widx::tab_production) | (1 << widx::tab_production_2) | (1 << widx::tab_transported); -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, 0, windowCaptionId), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { frameWidth, 95 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_industry), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_production_graph), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_production_graph), \ - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_statistics) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, WindowColour::primary, windowCaptionId), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { frameWidth, 95 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_industry), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_production_graph), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_production_graph), \ + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_statistics) // Defined at the bottom of this file. static void prepareDraw(Window* self); @@ -84,10 +84,10 @@ namespace OpenLoco::Ui::Windows::Industry static Widget widgets[] = { commonWidgets(223, 137, StringIds::title_town), - makeWidget({ 3, 44 }, { 195, 80 }, WidgetType::viewport, 1, 0xFFFFFFFE), - makeWidget({ 3, 115 }, { 195, 21 }, WidgetType::wt_13, 1), - makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::null, StringIds::move_main_view_to_show_this), - makeWidget({ 198, 44 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::rubbish_bin, StringIds::demolish_this_industry), + makeWidget({ 3, 44 }, { 195, 80 }, WidgetType::viewport, WindowColour::secondary, 0xFFFFFFFE), + makeWidget({ 3, 115 }, { 195, 21 }, WidgetType::wt_13, WindowColour::secondary), + makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::null, StringIds::move_main_view_to_show_this), + makeWidget({ 198, 44 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::rubbish_bin, StringIds::demolish_this_industry), widgetEnd(), }; @@ -313,8 +313,8 @@ namespace OpenLoco::Ui::Windows::Industry auto skin = ObjectManager::get(); if (skin != nullptr) { - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_0C; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_0C); } // 0x00456DBC end @@ -593,7 +593,7 @@ namespace OpenLoco::Ui::Windows::Industry auto args = FormatArguments(); args.push(yTick); - Gfx::drawRect(context, self->x + 41, yPos, 239, 1, Colour::getShade(self->colours[1], 4)); + Gfx::drawRect(context, self->x + 41, yPos, 239, 1, Colour::getShade(self->getColour(WindowColour::secondary), 4)); Gfx::drawString_494C78(*context, self->x + 39, yPos - 6, Colour::black, StringIds::population_graph_people, &args); @@ -623,7 +623,7 @@ namespace OpenLoco::Ui::Windows::Industry Gfx::drawStringCentred(*context, xPos, yPos, Colour::black, StringIds::population_graph_year, &args); } - Gfx::drawRect(context, xPos, yPos + 11, 1, self->height - 74, Colour::getShade(self->colours[1], 4)); + Gfx::drawRect(context, xPos, yPos + 11, 1, self->height - 74, Colour::getShade(self->getColour(WindowColour::secondary), 4)); } const auto history = productionTabWidx == widx::tab_production ? industry->history_1 : industry->history_2; @@ -638,7 +638,7 @@ namespace OpenLoco::Ui::Windows::Industry { if (yPos2 <= graphBottom) { - Gfx::drawLine(context, xPos, yPos1, xPos + 1, yPos2, Colour::getShade(self->colours[1], 7)); + Gfx::drawLine(context, xPos, yPos1, xPos + 1, yPos2, Colour::getShade(self->getColour(WindowColour::secondary), 7)); } } } @@ -840,7 +840,7 @@ namespace OpenLoco::Ui::Windows::Industry if (industryObj->produced_cargo_type[productionTabNumber] != 0xFF) { - imageId = Gfx::recolour(skin->img, self->colours[1]); + imageId = Gfx::recolour(skin->img, self->getColour(WindowColour::secondary)); if (self->current_tab == tab - widx::tab_industry) imageId += productionTabImageIds[(self->frame_no / 4) % std::size(productionTabImageIds)]; diff --git a/src/OpenLoco/Windows/KeyboardShortcuts.cpp b/src/OpenLoco/Windows/KeyboardShortcuts.cpp index c37bec6b..bcdff19a 100644 --- a/src/OpenLoco/Windows/KeyboardShortcuts.cpp +++ b/src/OpenLoco/Windows/KeyboardShortcuts.cpp @@ -20,12 +20,12 @@ namespace OpenLoco::Ui::Windows::KeyboardShortcuts static WindowEventList _events; static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 360, 238 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 358, 13 }, WidgetType::caption_25, 0, StringIds::keyboard_shortcuts), - makeWidget({ 345, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 15 }, { 360, 223 }, WidgetType::panel, 1), - makeWidget({ 4, 19 }, { 352, 202 }, WidgetType::scrollview, 1, Scrollbars::vertical, StringIds::keyboard_shortcut_list_tip), - makeWidget({ 4, 223 }, { 150, 12 }, WidgetType::wt_11, 1, StringIds::reset_keys, StringIds::reset_keys_tip), + makeWidget({ 0, 0 }, { 360, 238 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 358, 13 }, WidgetType::caption_25, WindowColour::primary, StringIds::keyboard_shortcuts), + makeWidget({ 345, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 15 }, { 360, 223 }, WidgetType::panel, WindowColour::secondary), + makeWidget({ 4, 19 }, { 352, 202 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical, StringIds::keyboard_shortcut_list_tip), + makeWidget({ 4, 223 }, { 150, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::reset_keys, StringIds::reset_keys_tip), widgetEnd(), }; @@ -81,8 +81,8 @@ namespace OpenLoco::Ui::Windows::KeyboardShortcuts window->initScrollWidgets(); auto skin = ObjectManager::get(); - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_10; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_10); window->row_count = static_cast(ShortcutManager::count()); window->row_hover = -1; @@ -100,7 +100,7 @@ namespace OpenLoco::Ui::Windows::KeyboardShortcuts // 0x004BE72C static void drawScroll(Ui::Window* self, Gfx::Context* context, uint32_t scrollIndex) { - auto colour = self->colours[1]; + auto colour = self->getColour(WindowColour::secondary); auto shade = Colour::getShade(colour, 4); Gfx::clearSingle(*context, shade); diff --git a/src/OpenLoco/Windows/LandscapeGeneration.cpp b/src/OpenLoco/Windows/LandscapeGeneration.cpp index 962fcfec..321c7edf 100644 --- a/src/OpenLoco/Windows/LandscapeGeneration.cpp +++ b/src/OpenLoco/Windows/LandscapeGeneration.cpp @@ -51,16 +51,16 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration const uint64_t enabled_widgets = (1 << widx::close_button) | (1 << tab_options) | (1 << tab_land) | (1 << tab_forests) | (1 << tab_towns) | (1 << tab_industries); -#define common_options_widgets(frame_height, window_caption_id) \ - makeWidget({ 0, 0 }, { 366, frame_height }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { 364, 13 }, WidgetType::caption_25, 0, window_caption_id), \ - makeWidget({ 351, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { 366, 175 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_landscape_generation_options), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_landscape_generation_land), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_landscape_generation_forests), \ - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_landscape_generation_towns), \ - makeRemapWidget({ 127, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_landscape_generation_industries) +#define common_options_widgets(frame_height, window_caption_id) \ + makeWidget({ 0, 0 }, { 366, frame_height }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { 364, 13 }, WidgetType::caption_25, WindowColour::primary, window_caption_id), \ + makeWidget({ 351, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { 366, 175 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_landscape_generation_options), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_landscape_generation_land), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_landscape_generation_forests), \ + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_landscape_generation_towns), \ + makeRemapWidget({ 127, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_landscape_generation_industries) // Defined at the bottom of this file. static void initEvents(); @@ -162,9 +162,9 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration static Widget widgets[] = { common_options_widgets(217, StringIds::title_landscape_generation_options), - makeStepperWidgets({ 256, 52 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::start_year_value), - makeWidget({ 10, 68 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::label_generate_random_landscape_when_game_starts, StringIds::tooltip_generate_random_landscape_when_game_starts), - makeWidget({ 196, 200 }, { 160, 12 }, WidgetType::wt_11, 1, StringIds::button_generate_landscape, StringIds::tooltip_generate_random_landscape), + makeStepperWidgets({ 256, 52 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::start_year_value), + makeWidget({ 10, 68 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::label_generate_random_landscape_when_game_starts, StringIds::tooltip_generate_random_landscape_when_game_starts), + makeWidget({ 196, 200 }, { 160, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::button_generate_landscape, StringIds::tooltip_generate_random_landscape), widgetEnd() }; @@ -313,8 +313,8 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration window->row_hover = -1; auto interface = ObjectManager::get(); - window->colours[0] = interface->colour_0B; - window->colours[1] = interface->colour_0E; + window->setColour(WindowColour::primary, interface->colour_0B); + window->setColour(WindowColour::secondary, interface->colour_0E); } // End of 0x0043DAEA @@ -359,13 +359,13 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration static Widget widgets[] = { common_options_widgets(247, StringIds::title_landscape_generation_land), - makeDropdownWidgets({ 176, 52 }, { 180, 12 }, WidgetType::wt_18, 1), - makeStepperWidgets({ 256, 67 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::sea_level_units), - makeStepperWidgets({ 256, 82 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::min_land_height_units), - makeDropdownWidgets({ 176, 97 }, { 180, 12 }, WidgetType::wt_18, 1), - makeStepperWidgets({ 256, 112 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::hill_density_percent), - makeWidget({ 10, 128 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::create_hills_right_up_to_edge_of_map), - makeWidget({ 4, 142 }, { 358, 100 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeDropdownWidgets({ 176, 52 }, { 180, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeStepperWidgets({ 256, 67 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::sea_level_units), + makeStepperWidgets({ 256, 82 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::min_land_height_units), + makeDropdownWidgets({ 176, 97 }, { 180, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeStepperWidgets({ 256, 112 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::hill_density_percent), + makeWidget({ 10, 128 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::create_hills_right_up_to_edge_of_map), + makeWidget({ 4, 142 }, { 358, 100 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd() }; @@ -443,7 +443,7 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration Gfx::drawString_494BBF(*context, 24, yPos + 5, 121, Colour::black, StringIds::wcolour2_stringid, &*commonFormatArgs); // Draw rectangle. - Gfx::fillRectInset(context, 150, yPos + 5, 340, yPos + 16, window->colours[1], 0b110000); + Gfx::fillRectInset(context, 150, yPos + 5, 340, yPos + 16, window->getColour(WindowColour::secondary), 0b110000); // Draw current distribution setting. const string_id distributionId = landDistributionLabelIds[S5::getOptions().landDistributionPatterns[i]]; @@ -452,7 +452,7 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration // Draw rectangle (knob). const uint8_t flags = window->row_hover == i ? 0b110000 : 0; - Gfx::fillRectInset(context, 329, yPos + 6, 339, yPos + 15, window->colours[1], flags); + Gfx::fillRectInset(context, 329, yPos + 6, 339, yPos + 15, window->getColour(WindowColour::secondary), flags); // Draw triangle (knob). Gfx::drawString_494B3F(*context, 330, yPos + 6, Colour::black, StringIds::dropdown, nullptr); @@ -546,7 +546,7 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration case widx::generator_btn: { Widget& target = window->widgets[widx::generator]; - Dropdown::show(window->x + target.left, window->y + target.top, target.width() - 4, target.height(), window->colours[1], std::size(generatorIds), 0x80); + Dropdown::show(window->x + target.left, window->y + target.top, target.width() - 4, target.height(), window->getColour(WindowColour::secondary), std::size(generatorIds), 0x80); for (size_t i = 0; i < std::size(generatorIds); i++) Dropdown::add(i, generatorIds[i]); @@ -558,7 +558,7 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration case widx::topography_style_btn: { Widget& target = window->widgets[widx::topography_style]; - Dropdown::show(window->x + target.left, window->y + target.top, target.width() - 4, target.height(), window->colours[1], std::size(topographyStyleIds), 0x80); + Dropdown::show(window->x + target.left, window->y + target.top, target.width() - 4, target.height(), window->getColour(WindowColour::secondary), std::size(topographyStyleIds), 0x80); for (size_t i = 0; i < std::size(topographyStyleIds); i++) Dropdown::add(i, topographyStyleIds[i]); @@ -642,7 +642,7 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration const Widget& target = window->widgets[widx::scrollview]; const int16_t dropdownX = window->x + target.left + 151; const int16_t dropdownY = window->y + target.top + 6 + landIndex * rowHeight - window->scroll_areas[0].contentOffsetY; - Dropdown::show(dropdownX, dropdownY, 188, 12, window->colours[1], std::size(landDistributionLabelIds), 0x80); + Dropdown::show(dropdownX, dropdownY, 188, 12, window->getColour(WindowColour::secondary), std::size(landDistributionLabelIds), 0x80); for (size_t i = 0; i < std::size(landDistributionLabelIds); i++) Dropdown::add(i, StringIds::dropdown_stringid, landDistributionLabelIds[i]); @@ -741,14 +741,14 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration static Widget widgets[] = { common_options_widgets(217, StringIds::title_landscape_generation_forests), - makeStepperWidgets({ 256, 52 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::number_of_forests_value), - makeStepperWidgets({ 256, 67 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::min_forest_radius_blocks), - makeStepperWidgets({ 256, 82 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::max_forest_radius_blocks), - makeStepperWidgets({ 256, 97 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::min_forest_density_percent), - makeStepperWidgets({ 256, 112 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::max_forest_density_percent), - makeStepperWidgets({ 256, 127 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::number_random_trees_value), - makeStepperWidgets({ 256, 142 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::min_altitude_for_trees_height), - makeStepperWidgets({ 256, 157 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::max_altitude_for_trees_height), + makeStepperWidgets({ 256, 52 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::number_of_forests_value), + makeStepperWidgets({ 256, 67 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::min_forest_radius_blocks), + makeStepperWidgets({ 256, 82 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::max_forest_radius_blocks), + makeStepperWidgets({ 256, 97 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::min_forest_density_percent), + makeStepperWidgets({ 256, 112 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::max_forest_density_percent), + makeStepperWidgets({ 256, 127 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::number_random_trees_value), + makeStepperWidgets({ 256, 142 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::min_altitude_for_trees_height), + makeStepperWidgets({ 256, 157 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::max_altitude_for_trees_height), widgetEnd() }; @@ -985,9 +985,9 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration static Widget widgets[] = { common_options_widgets(217, StringIds::title_landscape_generation_towns), - makeStepperWidgets({ 256, 52 }, { 100, 12 }, WidgetType::wt_18, 1, StringIds::number_of_towns_value), - makeWidget({ 176, 67 }, { 180, 12 }, WidgetType::wt_18, 1), - makeWidget({ 344, 68 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), + makeStepperWidgets({ 256, 52 }, { 100, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::number_of_towns_value), + makeWidget({ 176, 67 }, { 180, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 344, 68 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), widgetEnd() }; @@ -1060,7 +1060,7 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration case widx::max_town_size_btn: { Widget& target = window->widgets[widx::max_town_size]; - Dropdown::show(window->x + target.left, window->y + target.top, target.width() - 4, target.height(), window->colours[1], std::size(townSizeLabels), 0x80); + Dropdown::show(window->x + target.left, window->y + target.top, target.width() - 4, target.height(), window->getColour(WindowColour::secondary), std::size(townSizeLabels), 0x80); for (size_t i = 0; i < std::size(townSizeLabels); i++) Dropdown::add(i, townSizeLabels[i]); @@ -1126,10 +1126,10 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration static Widget widgets[] = { common_options_widgets(217, StringIds::title_landscape_generation_industries), - makeWidget({ 176, 52 }, { 180, 12 }, WidgetType::wt_18, 1), - makeWidget({ 344, 53 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 10, 68 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::allow_industries_to_close_down_during_game), - makeWidget({ 10, 83 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::allow_new_industries_to_start_up_during_game), + makeWidget({ 176, 52 }, { 180, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 344, 53 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 10, 68 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::allow_industries_to_close_down_during_game), + makeWidget({ 10, 83 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::allow_new_industries_to_start_up_during_game), widgetEnd() }; @@ -1171,7 +1171,7 @@ namespace OpenLoco::Ui::Windows::LandscapeGeneration return; Widget& target = window->widgets[widx::num_industries]; - Dropdown::show(window->x + target.left, window->y + target.top, target.width() - 4, target.height(), window->colours[1], std::size(numIndustriesLabels), 0x80); + Dropdown::show(window->x + target.left, window->y + target.top, target.width() - 4, target.height(), window->getColour(WindowColour::secondary), std::size(numIndustriesLabels), 0x80); for (size_t i = 0; i < std::size(numIndustriesLabels); i++) Dropdown::add(i, numIndustriesLabels[i]); diff --git a/src/OpenLoco/Windows/LandscapeGenerationConfirm.cpp b/src/OpenLoco/Windows/LandscapeGenerationConfirm.cpp index 5538a8a4..a261d991 100644 --- a/src/OpenLoco/Windows/LandscapeGenerationConfirm.cpp +++ b/src/OpenLoco/Windows/LandscapeGenerationConfirm.cpp @@ -25,11 +25,11 @@ namespace OpenLoco::Ui::Windows::LandscapeGenerationConfirm }; static Widget widgets[] = { - makeWidget({ 0, 0 }, { 280, 92 }, WidgetType::panel, 0), - makeWidget({ 1, 1 }, { 278, 13 }, WidgetType::caption_22, 0), - makeWidget({ 267, 2 }, { 11, 11 }, WidgetType::wt_11, 0, StringIds::close_window_cross, StringIds::tooltip_close_window), - makeWidget({ 20, 77 }, { 100, 12 }, WidgetType::wt_11, 0, StringIds::label_ok), - makeWidget({ 160, 77 }, { 100, 12 }, WidgetType::wt_11, 0, StringIds::label_button_cancel), + makeWidget({ 0, 0 }, { 280, 92 }, WidgetType::panel, WindowColour::primary), + makeWidget({ 1, 1 }, { 278, 13 }, WidgetType::caption_22, WindowColour::primary), + makeWidget({ 267, 2 }, { 11, 11 }, WidgetType::wt_11, WindowColour::primary, StringIds::close_window_cross, StringIds::tooltip_close_window), + makeWidget({ 20, 77 }, { 100, 12 }, WidgetType::wt_11, WindowColour::primary, StringIds::label_ok), + makeWidget({ 160, 77 }, { 100, 12 }, WidgetType::wt_11, WindowColour::primary, StringIds::label_button_cancel), widgetEnd() }; @@ -86,8 +86,8 @@ namespace OpenLoco::Ui::Windows::LandscapeGenerationConfirm window->widgets = widgets; window->enabled_widgets = (1 << widx::close_button) | (1 << widx::button_ok) | (1 << widx::button_cancel); window->initScrollWidgets(); - window->colours[0] = Colour::translucent(Colour::salmon_pink); - window->colours[1] = Colour::translucent(Colour::salmon_pink); + window->setColour(WindowColour::primary, Colour::translucent(Colour::salmon_pink)); + window->setColour(WindowColour::secondary, Colour::translucent(Colour::salmon_pink)); window->flags |= WindowFlags::transparent; // TODO(avgeffen): only needs to be called once. diff --git a/src/OpenLoco/Windows/Main.cpp b/src/OpenLoco/Windows/Main.cpp index 6df2cf68..af914fce 100644 --- a/src/OpenLoco/Windows/Main.cpp +++ b/src/OpenLoco/Windows/Main.cpp @@ -20,7 +20,7 @@ namespace OpenLoco::Ui::Windows::Main } static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 0, 0 }, WidgetType::viewport, 0, 0xFFFFFFFE), + makeWidget({ 0, 0 }, { 0, 0 }, WidgetType::viewport, WindowColour::primary, 0xFFFFFFFE), widgetEnd(), }; diff --git a/src/OpenLoco/Windows/MapWindow.cpp b/src/OpenLoco/Windows/MapWindow.cpp index 6f08d8b1..d78f8ea0 100644 --- a/src/OpenLoco/Windows/MapWindow.cpp +++ b/src/OpenLoco/Windows/MapWindow.cpp @@ -91,17 +91,17 @@ namespace OpenLoco::Ui::Windows::MapWindow const uint64_t enabledWidgets = (1 << closeButton) | (1 << tabOverall) | (1 << tabVehicles) | (1 << tabIndustries) | (1 << tabRoutes) | (1 << tabOwnership); Widget widgets[] = { - makeWidget({ 0, 0 }, { 350, 272 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 348, 13 }, WidgetType::caption_25, 0), - makeWidget({ 335, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 41 }, { 350, 230 }, WidgetType::panel, 1), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, 1, ImageIds::tab, StringIds::tab_map_overall), - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_6, 1, ImageIds::tab, StringIds::tab_map_vehicles), - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_6, 1, ImageIds::tab, StringIds::tab_map_industries), - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_6, 1, ImageIds::tab, StringIds::tab_map_routes), - makeRemapWidget({ 158, 15 }, { 31, 27 }, WidgetType::wt_6, 1, ImageIds::tab, StringIds::tab_map_ownership), - makeWidget({ 3, 44 }, { 240, 215 }, WidgetType::scrollview, 1, Scrollbars::horizontal | Scrollbars::vertical), - makeWidget({ 3, 250 }, { 322, 21 }, WidgetType::wt_13, 1), + makeWidget({ 0, 0 }, { 350, 272 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 348, 13 }, WidgetType::caption_25, WindowColour::primary), + makeWidget({ 335, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 41 }, { 350, 230 }, WidgetType::panel, WindowColour::secondary), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, WindowColour::secondary, ImageIds::tab, StringIds::tab_map_overall), + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_6, WindowColour::secondary, ImageIds::tab, StringIds::tab_map_vehicles), + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_6, WindowColour::secondary, ImageIds::tab, StringIds::tab_map_industries), + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_6, WindowColour::secondary, ImageIds::tab, StringIds::tab_map_routes), + makeRemapWidget({ 158, 15 }, { 31, 27 }, WidgetType::wt_6, WindowColour::secondary, ImageIds::tab, StringIds::tab_map_ownership), + makeWidget({ 3, 44 }, { 240, 215 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::horizontal | Scrollbars::vertical), + makeWidget({ 3, 250 }, { 322, 21 }, WidgetType::wt_13, WindowColour::secondary), widgetEnd() }; @@ -1505,8 +1505,8 @@ namespace OpenLoco::Ui::Windows::MapWindow } auto skin = ObjectManager::get(); - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_0F; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_0F); window->var_846 = getCurrentRotation(); diff --git a/src/OpenLoco/Windows/MessageWindow.cpp b/src/OpenLoco/Windows/MessageWindow.cpp index b807b08e..d691a891 100644 --- a/src/OpenLoco/Windows/MessageWindow.cpp +++ b/src/OpenLoco/Windows/MessageWindow.cpp @@ -46,13 +46,13 @@ namespace OpenLoco::Ui::Windows::MessageWindow const uint64_t enabledWidgets = (1 << widx::close_button) | (1 << widx::tab_messages) | (1 << widx::tab_settings); -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_24, 0, windowCaptionId), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { 366, 175 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_recent_messages), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_message_options) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_24, WindowColour::primary, windowCaptionId), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { 366, 175 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_recent_messages), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_message_options) static WindowEventList _events; @@ -78,7 +78,7 @@ namespace OpenLoco::Ui::Windows::MessageWindow Widget widgets[] = { commonWidgets(366, 217, StringIds::title_messages), - makeWidget({ 3, 45 }, { 360, 146 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 3, 45 }, { 360, 146 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd(), }; @@ -217,7 +217,7 @@ namespace OpenLoco::Ui::Windows::MessageWindow // 0x0042A5D7 static void drawScroll(Ui::Window* self, Gfx::Context* context, uint32_t scrollIndex) { - auto colour = Colour::getShade(self->colours[1], 4); + auto colour = Colour::getShade(self->getColour(WindowColour::secondary), 4); Gfx::clearSingle(*context, colour); @@ -341,7 +341,7 @@ namespace OpenLoco::Ui::Windows::MessageWindow window->owner = _playerCompany; auto skin = ObjectManager::get(); - window->colours[1] = skin->colour_0A; + window->setColour(WindowColour::secondary, skin->colour_0A); window->width = Messages::minWindowSize.width; window->height = Messages::minWindowSize.height; @@ -399,18 +399,18 @@ namespace OpenLoco::Ui::Windows::MessageWindow Widget widgets[] = { commonWidgets(366, 217, StringIds::title_messages), - makeWidget({ 236, 47 }, { 124, 12 }, WidgetType::wt_18, 1), - makeWidget({ 348, 48 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 236, 62 }, { 124, 12 }, WidgetType::wt_18, 1), - makeWidget({ 348, 63 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 236, 77 }, { 124, 12 }, WidgetType::wt_18, 1), - makeWidget({ 348, 78 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 236, 92 }, { 124, 12 }, WidgetType::wt_18, 1), - makeWidget({ 348, 93 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 236, 107 }, { 124, 12 }, WidgetType::wt_18, 1), - makeWidget({ 348, 108 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 236, 122 }, { 124, 12 }, WidgetType::wt_18, 1), - makeWidget({ 348, 123 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), + makeWidget({ 236, 47 }, { 124, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 348, 48 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 236, 62 }, { 124, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 348, 63 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 236, 77 }, { 124, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 348, 78 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 236, 92 }, { 124, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 348, 93 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 236, 107 }, { 124, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 348, 108 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 236, 122 }, { 124, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 348, 123 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), widgetEnd(), }; @@ -457,7 +457,7 @@ namespace OpenLoco::Ui::Windows::MessageWindow auto height = widget.height() + 2; auto flags = 1 << 7; - Dropdown::show(xPos, yPos, width, height, self->colours[1], 3, flags); + Dropdown::show(xPos, yPos, width, height, self->getColour(WindowColour::secondary), 3, flags); Dropdown::add(0, StringIds::dropdown_stringid, StringIds::message_off); Dropdown::add(1, StringIds::dropdown_stringid, StringIds::message_ticker); diff --git a/src/OpenLoco/Windows/MusicSelection.cpp b/src/OpenLoco/Windows/MusicSelection.cpp index 313d6834..deb99a12 100644 --- a/src/OpenLoco/Windows/MusicSelection.cpp +++ b/src/OpenLoco/Windows/MusicSelection.cpp @@ -29,11 +29,11 @@ namespace OpenLoco::Ui::Windows::MusicSelection }; static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 360, 238 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 358, 13 }, WidgetType::caption_25, 0, StringIds::music_selection_title), - makeWidget({ 345, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 15 }, { 360, 223 }, WidgetType::panel, 1), - makeWidget({ 4, 19 }, { 352, 218 }, WidgetType::scrollview, 1, Scrollbars::vertical, StringIds::music_selection_tooltip), + makeWidget({ 0, 0 }, { 360, 238 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 358, 13 }, WidgetType::caption_25, WindowColour::primary, StringIds::music_selection_title), + makeWidget({ 345, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 15 }, { 360, 223 }, WidgetType::panel, WindowColour::secondary), + makeWidget({ 4, 19 }, { 352, 218 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical, StringIds::music_selection_tooltip), widgetEnd(), }; @@ -81,8 +81,8 @@ namespace OpenLoco::Ui::Windows::MusicSelection window->initScrollWidgets(); auto interface = ObjectManager::get(); - window->colours[0] = interface->colour_0B; - window->colours[1] = interface->colour_10; + window->setColour(WindowColour::primary, interface->colour_0B); + window->setColour(WindowColour::secondary, interface->colour_10); window->row_count = Audio::num_music_tracks; window->row_hover = -1; @@ -100,7 +100,7 @@ namespace OpenLoco::Ui::Windows::MusicSelection // 0x004C1663 static void drawScroll(Ui::Window* window, Gfx::Context* context, uint32_t scrollIndex) { - auto shade = Colour::getShade(window->colours[1], 4); + auto shade = Colour::getShade(window->getColour(WindowColour::secondary), 4); Gfx::clearSingle(*context, shade); auto config = Config::get(); @@ -118,15 +118,15 @@ namespace OpenLoco::Ui::Windows::MusicSelection } // Draw checkbox. - Gfx::fillRectInset(context, 2, y, 11, y + 10, window->colours[1], 0xE0); + Gfx::fillRectInset(context, 2, y, 11, y + 10, window->getColour(WindowColour::secondary), 0xE0); // Draw checkmark if track is enabled. if (config.enabled_music[i]) - Gfx::drawString_494B3F(*context, 2, y, window->colours[1], StringIds::wcolour2_stringid, (void*)&StringIds::checkmark); + Gfx::drawString_494B3F(*context, 2, y, window->getColour(WindowColour::secondary), StringIds::wcolour2_stringid, (void*)&StringIds::checkmark); // Draw track name. string_id music_title_id = Audio::getMusicInfo(i)->title_id; - Gfx::drawString_494B3F(*context, 15, y, window->colours[1], text_colour_id, (void*)&music_title_id); + Gfx::drawString_494B3F(*context, 15, y, window->getColour(WindowColour::secondary), text_colour_id, (void*)&music_title_id); y += rowHeight; } diff --git a/src/OpenLoco/Windows/News/Common.cpp b/src/OpenLoco/Windows/News/Common.cpp index fcef1a16..3914b006 100644 --- a/src/OpenLoco/Windows/News/Common.cpp +++ b/src/OpenLoco/Windows/News/Common.cpp @@ -36,7 +36,7 @@ namespace OpenLoco::Ui::Windows::NewsWindow Common::initEvents(); window->initScrollWidgets(); - window->colours[0] = colour; + window->setColour(WindowColour::primary, colour); _dword_525CD0 = 0xFFFFFFFF; _dword_525CD4 = 0xFFFFFFFF; @@ -141,7 +141,7 @@ namespace OpenLoco::Ui::Windows::NewsWindow window->initScrollWidgets(); auto skin = ObjectManager::get(); - window->colours[0] = Colour::translucent(skin->colour_0C); + window->setColour(WindowColour::primary, Colour::translucent(skin->colour_0C)); window->var_852 = 0; diff --git a/src/OpenLoco/Windows/News/News.h b/src/OpenLoco/Windows/News/News.h index f1df15dc..4f5dd4ed 100644 --- a/src/OpenLoco/Windows/News/News.h +++ b/src/OpenLoco/Windows/News/News.h @@ -52,13 +52,13 @@ namespace OpenLoco::Ui::Windows::NewsWindow constexpr uint64_t enabledWidgets = (1 << close_button) | (1 << viewport1Button) | (1 << viewport2Button); -#define commonWidgets(frameWidth, frameHeight, frameType) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, frameType, 0), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 2, frameHeight - 73 }, { 168, 64 }, WidgetType::viewport, 0, 0xFFFFFFFE), \ - makeWidget({ 180, frameHeight - 73 }, { 168, 64 }, WidgetType::viewport, 0, 0xFFFFFFFE), \ - makeWidget({ 2, frameHeight - 75 }, { 180, 75 }, WidgetType::wt_9, 0), \ - makeWidget({ 2, frameHeight - 75 }, { 180, 75 }, WidgetType::wt_9, 0) +#define commonWidgets(frameWidth, frameHeight, frameType) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, frameType, WindowColour::primary), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 2, frameHeight - 73 }, { 168, 64 }, WidgetType::viewport, WindowColour::primary, 0xFFFFFFFE), \ + makeWidget({ 180, frameHeight - 73 }, { 168, 64 }, WidgetType::viewport, WindowColour::primary, 0xFFFFFFFE), \ + makeWidget({ 2, frameHeight - 75 }, { 180, 75 }, WidgetType::wt_9, WindowColour::primary), \ + makeWidget({ 2, frameHeight - 75 }, { 180, 75 }, WidgetType::wt_9, WindowColour::primary) void initEvents(); } diff --git a/src/OpenLoco/Windows/News/Ticker.cpp b/src/OpenLoco/Windows/News/Ticker.cpp index 051f09fc..414c1b32 100644 --- a/src/OpenLoco/Windows/News/Ticker.cpp +++ b/src/OpenLoco/Windows/News/Ticker.cpp @@ -11,7 +11,7 @@ using namespace OpenLoco::Interop; namespace OpenLoco::Ui::Windows::NewsWindow::Ticker { Widget widgets[] = { - makeWidget({ 0, 0 }, { 111, 26 }, WidgetType::wt_3, 0), + makeWidget({ 0, 0 }, { 111, 26 }, WidgetType::wt_3, WindowColour::primary), widgetEnd(), }; diff --git a/src/OpenLoco/Windows/ObjectSelectionWindow.cpp b/src/OpenLoco/Windows/ObjectSelectionWindow.cpp index c9635ebb..9a76ed2f 100644 --- a/src/OpenLoco/Windows/ObjectSelectionWindow.cpp +++ b/src/OpenLoco/Windows/ObjectSelectionWindow.cpp @@ -84,14 +84,14 @@ namespace OpenLoco::Ui::Windows::ObjectSelectionWindow }; Widget widgets[] = { - makeWidget({ 0, 0 }, { 600, 398 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 598, 13 }, WidgetType::caption_25, 0, StringIds::title_object_selection), - makeWidget({ 585, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 65 }, { 600, 333 }, WidgetType::panel, 1), - makeWidget({ 3, 15 }, { 589, 50 }, WidgetType::wt_5, 1), - makeWidget({ 470, 20 }, { 122, 12 }, WidgetType::wt_11, 0, StringIds::object_selection_advanced, StringIds::object_selection_advanced_tooltip), - makeWidget({ 4, 68 }, { 288, 317 }, WidgetType::scrollview, 1, Scrollbars::vertical), - makeWidget({ 391, 68 }, { 114, 114 }, WidgetType::wt_9, 1), + makeWidget({ 0, 0 }, { 600, 398 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 598, 13 }, WidgetType::caption_25, WindowColour::primary, StringIds::title_object_selection), + makeWidget({ 585, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 65 }, { 600, 333 }, WidgetType::panel, WindowColour::secondary), + makeWidget({ 3, 15 }, { 589, 50 }, WidgetType::wt_5, WindowColour::secondary), + makeWidget({ 470, 20 }, { 122, 12 }, WidgetType::wt_11, WindowColour::primary, StringIds::object_selection_advanced, StringIds::object_selection_advanced_tooltip), + makeWidget({ 4, 68 }, { 288, 317 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), + makeWidget({ 391, 68 }, { 114, 114 }, WidgetType::wt_9, WindowColour::secondary), widgetEnd(), }; @@ -178,8 +178,8 @@ namespace OpenLoco::Ui::Windows::ObjectSelectionWindow } auto skin = ObjectManager::get(); - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_0C; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_0C); return window; } @@ -269,10 +269,10 @@ namespace OpenLoco::Ui::Windows::ObjectSelectionWindow if (_tabInformation[index].row != row) continue; - auto image = Gfx::recolour(ImageIds::tab, self->colours[1]); + auto image = Gfx::recolour(ImageIds::tab, self->getColour(WindowColour::secondary)); if (_tabInformation[index].index == self->current_tab) { - image = Gfx::recolour(ImageIds::selected_tab, self->colours[1]); + image = Gfx::recolour(ImageIds::selected_tab, self->getColour(WindowColour::secondary)); Gfx::drawImage(context, xPos, yPos, image); image = Gfx::recolour(_tabDisplayInfo[_tabInformation[index].index].image, Colour::saturated_green); @@ -290,7 +290,7 @@ namespace OpenLoco::Ui::Windows::ObjectSelectionWindow if (row < 1) { - auto colour = Colour::getShade(self->colours[1], 7); + auto colour = Colour::getShade(self->getColour(WindowColour::secondary), 7); Gfx::drawRect(context, xPos, yPos + 26, 31, 1, colour); } } @@ -500,7 +500,7 @@ namespace OpenLoco::Ui::Windows::ObjectSelectionWindow // 0x004733F5 static void draw(Window* self, Gfx::Context* context) { - Gfx::fillRectInset(context, self->x, self->y + 20, self->x + self->width - 1, self->y + 20 + 60, self->colours[0], 0); + Gfx::fillRectInset(context, self->x, self->y + 20, self->x + self->width - 1, self->y + 20 + 60, self->getColour(WindowColour::primary), 0); self->draw(context); drawTabs(self, context); @@ -519,13 +519,13 @@ namespace OpenLoco::Ui::Windows::ObjectSelectionWindow if (doDefault) { auto widget = widgets[widx::objectImage]; - auto colour = Colour::getShade(self->colours[1], 5); + auto colour = Colour::getShade(self->getColour(WindowColour::secondary), 5); Gfx::drawRect(context, self->x + widget.left, self->y + widget.top, widget.width(), widget.height(), colour); } else { auto widget = widgets[widx::objectImage]; - auto colour = Colour::getShade(self->colours[1], 0); + auto colour = Colour::getShade(self->getColour(WindowColour::secondary), 0); Gfx::drawRect(context, self->x + widget.left + 1, self->y + widget.top + 1, widget.width() - 2, widget.height() - 2, colour); } @@ -587,7 +587,7 @@ namespace OpenLoco::Ui::Windows::ObjectSelectionWindow // 0x0047361D static void drawScroll(Window* self, Gfx::Context* context, uint32_t) { - Gfx::clearSingle(*context, Colour::getShade(self->colours[1], 4)); + Gfx::clearSingle(*context, Colour::getShade(self->getColour(WindowColour::secondary), 4)); if (ObjectManager::getNumInstalledObjects() == 0) return; @@ -597,7 +597,7 @@ namespace OpenLoco::Ui::Windows::ObjectSelectionWindow for (auto [i, object] : objects) { uint8_t flags = (1 << 7) | (1 << 6) | (1 << 5); - Gfx::fillRectInset(context, 2, y, 11, y + 10, self->colours[1], flags); + Gfx::fillRectInset(context, 2, y, 11, y + 10, self->getColour(WindowColour::secondary), flags); uint8_t textColour = ControlCodes::colour_black; @@ -622,7 +622,7 @@ namespace OpenLoco::Ui::Windows::ObjectSelectionWindow _currentFontSpriteBase = Font::m1; } - auto checkColour = Colour::opaque(self->colours[1]); + auto checkColour = Colour::opaque(self->getColour(WindowColour::secondary)); if (_50D144[i] & 0x1C) { diff --git a/src/OpenLoco/Windows/Options.cpp b/src/OpenLoco/Windows/Options.cpp index 72dc1987..94cb6454 100644 --- a/src/OpenLoco/Windows/Options.cpp +++ b/src/OpenLoco/Windows/Options.cpp @@ -147,17 +147,17 @@ namespace OpenLoco::Ui::Windows::Options Widget::drawTab(w, ctx, ImageIds::tab_miscellaneous, Widx::tab_miscellaneous); } -#define common_options_widgets(window_size, window_caption_id) \ - makeWidget({ 0, 0 }, window_size, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { (uint16_t)(window_size.width - 2), 13 }, WidgetType::caption_25, 0, window_caption_id), \ - makeWidget({ (int16_t)(window_size.width - 15), 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { window_size.width, 102 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::display_options), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::sound_options), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::music_options), \ - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::regional_options), \ - makeRemapWidget({ 127, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::control_options), \ - makeRemapWidget({ 158, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::miscellaneous_options) +#define common_options_widgets(window_size, window_caption_id) \ + makeWidget({ 0, 0 }, window_size, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { (uint16_t)(window_size.width - 2), 13 }, WidgetType::caption_25, WindowColour::primary, window_caption_id), \ + makeWidget({ (int16_t)(window_size.width - 15), 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { window_size.width, 102 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::display_options), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::sound_options), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::music_options), \ + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::regional_options), \ + makeRemapWidget({ 127, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::control_options), \ + makeRemapWidget({ 158, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::miscellaneous_options) static constexpr int tabWidgets = (1 << Widx::tab_display) | (1 << Widx::tab_sound) | (1 << Widx::tab_music) | (1 << Widx::tab_regional) | (1 << Widx::tab_controls) | (1 << Widx::tab_miscellaneous); @@ -196,19 +196,19 @@ namespace OpenLoco::Ui::Windows::Options static Widget _widgets[] = { common_options_widgets(_window_size, StringIds::options_title_display), - makeWidget({ 4, 49 }, { 392, 97 }, WidgetType::groupbox, 1, StringIds::frame_hardware), - makeDropdownWidgets({ 235, 63 }, { 154, 12 }, WidgetType::wt_18, 1, StringIds::empty), - makeDropdownWidgets({ 235, 79 }, { 154, 12 }, WidgetType::wt_18, 1, StringIds::display_resolution_label_format), - makeStepperWidgets({ 235, 95 }, { 154, 12 }, WidgetType::wt_17, 1, StringIds::empty), - makeWidget({ 10, 111 }, { 174, 12 }, WidgetType::checkbox, 1, StringIds::option_uncap_fps, StringIds::option_uncap_fps_tooltip), - makeWidget({ 10, 127 }, { 174, 12 }, WidgetType::checkbox, 1, StringIds::option_show_fps_counter, StringIds::option_show_fps_counter_tooltip), + makeWidget({ 4, 49 }, { 392, 97 }, WidgetType::groupbox, WindowColour::secondary, StringIds::frame_hardware), + makeDropdownWidgets({ 235, 63 }, { 154, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::empty), + makeDropdownWidgets({ 235, 79 }, { 154, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::display_resolution_label_format), + makeStepperWidgets({ 235, 95 }, { 154, 12 }, WidgetType::wt_17, WindowColour::secondary, StringIds::empty), + makeWidget({ 10, 111 }, { 174, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::option_uncap_fps, StringIds::option_uncap_fps_tooltip), + makeWidget({ 10, 127 }, { 174, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::option_show_fps_counter, StringIds::option_show_fps_counter_tooltip), - makeWidget({ 4, 150 }, { 392, 96 }, WidgetType::groupbox, 1, StringIds::frame_map_rendering), - makeDropdownWidgets({ 235, 164 }, { 154, 12 }, WidgetType::wt_18, 1, StringIds::empty, StringIds::vehicles_min_scale_tip), - makeDropdownWidgets({ 235, 180 }, { 154, 12 }, WidgetType::wt_18, 1, StringIds::empty, StringIds::station_names_min_scale_tip), - makeDropdownWidgets({ 235, 196 }, { 154, 12 }, WidgetType::wt_18, 1, StringIds::empty), - makeWidget({ 10, 211 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::landscape_smoothing, StringIds::landscape_smoothing_tip), - makeWidget({ 10, 227 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::gridlines_on_landscape, StringIds::gridlines_on_landscape_tip), + makeWidget({ 4, 150 }, { 392, 96 }, WidgetType::groupbox, WindowColour::secondary, StringIds::frame_map_rendering), + makeDropdownWidgets({ 235, 164 }, { 154, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::empty, StringIds::vehicles_min_scale_tip), + makeDropdownWidgets({ 235, 180 }, { 154, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::empty, StringIds::station_names_min_scale_tip), + makeDropdownWidgets({ 235, 196 }, { 154, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::empty), + makeWidget({ 10, 211 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::landscape_smoothing, StringIds::landscape_smoothing_tip), + makeWidget({ 10, 227 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::gridlines_on_landscape, StringIds::gridlines_on_landscape_tip), widgetEnd(), }; @@ -304,7 +304,7 @@ namespace OpenLoco::Ui::Windows::Options static void constructionMarkerMouseDown(Window* w, WidgetIndex_t wi) { Widget dropdown = w->widgets[Widx::construction_marker]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], 2, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), 2, 0x80); Dropdown::add(0, StringIds::dropdown_stringid, StringIds::white); Dropdown::add(1, StringIds::dropdown_stringid, StringIds::translucent); @@ -332,7 +332,7 @@ namespace OpenLoco::Ui::Windows::Options static void vehicleZoomMouseDown(Window* w, WidgetIndex_t wi) { Widget dropdown = w->widgets[Widx::vehicles_min_scale]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], 4, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), 4, 0x80); Dropdown::add(0, StringIds::dropdown_stringid, StringIds::full_scale); Dropdown::add(1, StringIds::dropdown_stringid, StringIds::half_scale); @@ -362,7 +362,7 @@ namespace OpenLoco::Ui::Windows::Options static void stationNamesScaleMouseDown(Window* w, WidgetIndex_t wi) { Widget dropdown = w->widgets[Widx::station_names_min_scale]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], 4, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), 4, 0x80); Dropdown::add(0, StringIds::dropdown_stringid, StringIds::full_scale); Dropdown::add(1, StringIds::dropdown_stringid, StringIds::half_scale); @@ -405,7 +405,7 @@ namespace OpenLoco::Ui::Windows::Options static void screenModeMouseDown(Window* w, WidgetIndex_t wi) { Widget dropdown = w->widgets[Widx::screen_mode]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], 3, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), 3, 0x80); Dropdown::add(0, StringIds::dropdown_stringid, StringIds::options_mode_windowed); Dropdown::add(1, StringIds::dropdown_stringid, StringIds::options_mode_fullscreen); @@ -437,7 +437,7 @@ namespace OpenLoco::Ui::Windows::Options std::vector resolutions = getFullscreenResolutions(); Widget dropdown = w->widgets[Widx::display_resolution]; - Dropdown::showText2(w->x + dropdown.left, w->y + dropdown.top, dropdown.width(), dropdown.height(), w->colours[1], resolutions.size(), 0x80); + Dropdown::showText2(w->x + dropdown.left, w->y + dropdown.top, dropdown.width(), dropdown.height(), w->getColour(WindowColour::secondary), resolutions.size(), 0x80); auto& cfg = Config::getNew(); for (size_t i = 0; i < resolutions.size(); i++) @@ -694,9 +694,9 @@ namespace OpenLoco::Ui::Windows::Options static Widget _widgets[] = { common_options_widgets(_window_size, StringIds::options_title_sound), - makeWidget({ 10, 49 }, { 346, 12 }, WidgetType::wt_18, 1, StringIds::stringid), - makeWidget({ 344, 50 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 10, 65 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::play_title_music), + makeWidget({ 10, 49 }, { 346, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::stringid), + makeWidget({ 344, 50 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 10, 65 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::play_title_music), widgetEnd(), }; @@ -803,7 +803,7 @@ namespace OpenLoco::Ui::Windows::Options if (devices.size() != 0) { Widget dropdown = w->widgets[Widx::audio_device]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], devices.size(), 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), devices.size(), 0x80); for (size_t i = 0; i < devices.size(); i++) { auto name = devices[i].c_str(); @@ -885,15 +885,15 @@ namespace OpenLoco::Ui::Windows::Options static Widget _widgets[] = { common_options_widgets(_window_size, StringIds::options_title_music), - makeWidget({ 160, 49 }, { 196, 12 }, WidgetType::wt_18, 1, StringIds::stringid), - makeWidget({ 344, 50 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 10, 64 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::music_controls_stop, StringIds::music_controls_stop_tip), - makeWidget({ 34, 64 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::music_controls_play, StringIds::music_controls_play_tip), - makeWidget({ 58, 64 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::music_controls_next, StringIds::music_controls_next_tip), - makeWidget({ 256, 64 }, { 109, 24 }, WidgetType::wt_5, 1, -1, StringIds::set_volume_tip), - makeWidget({ 10, 93 }, { 346, 12 }, WidgetType::wt_18, 1, StringIds::arg2_stringid), - makeWidget({ 344, 94 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 183, 108 }, { 173, 12 }, WidgetType::wt_11, 1, StringIds::edit_music_selection, StringIds::edit_music_selection_tip), + makeWidget({ 160, 49 }, { 196, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::stringid), + makeWidget({ 344, 50 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 10, 64 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::music_controls_stop, StringIds::music_controls_stop_tip), + makeWidget({ 34, 64 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::music_controls_play, StringIds::music_controls_play_tip), + makeWidget({ 58, 64 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::music_controls_next, StringIds::music_controls_next_tip), + makeWidget({ 256, 64 }, { 109, 24 }, WidgetType::wt_5, WindowColour::secondary, -1, StringIds::set_volume_tip), + makeWidget({ 10, 93 }, { 346, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::arg2_stringid), + makeWidget({ 344, 94 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 183, 108 }, { 173, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::edit_music_selection, StringIds::edit_music_selection_tip), widgetEnd(), }; @@ -974,10 +974,10 @@ namespace OpenLoco::Ui::Windows::Options Gfx::drawString_494B3F(*context, w->x + 183, w->y + w->widgets[Widx::volume].top + 7, 0, StringIds::volume, nullptr); - Gfx::drawImage(context, w->x + w->widgets[Widx::volume].left, w->y + w->widgets[Widx::volume].top, 0x20000000 | (w->colours[1] << 19) | ImageIds::volume_slider_track); + Gfx::drawImage(context, w->x + w->widgets[Widx::volume].left, w->y + w->widgets[Widx::volume].top, 0x20000000 | (w->getColour(WindowColour::secondary) << 19) | ImageIds::volume_slider_track); int16_t x = 90 + (Config::get().volume / 32); - Gfx::drawImage(context, w->x + w->widgets[Widx::volume].left + x, w->y + w->widgets[Widx::volume].top, 0x20000000 | (w->colours[1] << 19) | ImageIds::volume_slider_thumb); + Gfx::drawImage(context, w->x + w->widgets[Widx::volume].left + x, w->y + w->widgets[Widx::volume].top, 0x20000000 | (w->getColour(WindowColour::secondary) << 19) | ImageIds::volume_slider_thumb); } static void onMouseUp(Window* w, WidgetIndex_t wi) @@ -1111,7 +1111,7 @@ namespace OpenLoco::Ui::Windows::Options static void musicPlaylistMouseDown(Window* w) { Widget dropdown = w->widgets[Widx::music_playlist]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], 3, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), 3, 0x80); Dropdown::add(0, StringIds::dropdown_stringid, StringIds::play_only_music_from_current_era); Dropdown::add(1, StringIds::dropdown_stringid, StringIds::play_all_music); @@ -1190,7 +1190,7 @@ namespace OpenLoco::Ui::Windows::Options auto tracks = get_available_tracks(); Widget dropdown = w->widgets[Widx::currently_playing]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], tracks.size(), 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), tracks.size(), 0x80); int index = -1; for (auto track : tracks) @@ -1271,18 +1271,18 @@ namespace OpenLoco::Ui::Windows::Options static Widget _widgets[] = { common_options_widgets(_window_size, StringIds::options_title_regional), - makeWidget({ 183, 49 }, { 173, 12 }, WidgetType::wt_18, 1, StringIds::stringptr), - makeWidget({ 344, 50 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 183, 69 }, { 173, 12 }, WidgetType::wt_18, 1, StringIds::arg12_stringid), - makeWidget({ 344, 70 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 183, 84 }, { 173, 12 }, WidgetType::wt_18, 1, StringIds::arg6_stringid), - makeWidget({ 344, 85 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 183, 104 }, { 173, 12 }, WidgetType::wt_18, 1, StringIds::arg10_stringid, StringIds::current_game_currency_tip), - makeWidget({ 344, 105 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown, StringIds::current_game_currency_tip), - makeWidget({ 183, 119 }, { 173, 12 }, WidgetType::wt_18, 1, StringIds::preferred_currency_buffer, StringIds::new_game_currency_tip), - makeWidget({ 344, 120 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown, StringIds::new_game_currency_tip), - makeWidget({ 10, 134 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::use_preferred_currency_new_game, StringIds::use_preferred_currency_new_game_tip), - makeWidget({ 10, 148 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::use_preferred_currency_always, StringIds::use_preferred_currency_always_tip), + makeWidget({ 183, 49 }, { 173, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::stringptr), + makeWidget({ 344, 50 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 183, 69 }, { 173, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::arg12_stringid), + makeWidget({ 344, 70 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 183, 84 }, { 173, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::arg6_stringid), + makeWidget({ 344, 85 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 183, 104 }, { 173, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::arg10_stringid, StringIds::current_game_currency_tip), + makeWidget({ 344, 105 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown, StringIds::current_game_currency_tip), + makeWidget({ 183, 119 }, { 173, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::preferred_currency_buffer, StringIds::new_game_currency_tip), + makeWidget({ 344, 120 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown, StringIds::new_game_currency_tip), + makeWidget({ 10, 134 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::use_preferred_currency_new_game, StringIds::use_preferred_currency_new_game_tip), + makeWidget({ 10, 148 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::use_preferred_currency_always, StringIds::use_preferred_currency_always_tip), widgetEnd(), }; @@ -1464,7 +1464,7 @@ namespace OpenLoco::Ui::Windows::Options uint8_t num_languages = static_cast(lds.size()); Widget dropdown = w->widgets[Widx::language]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], num_languages - 1, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), num_languages - 1, 0x80); std::string& current_language = Config::getNew().language; @@ -1500,7 +1500,7 @@ namespace OpenLoco::Ui::Windows::Options uint8_t* _11364A0 = (uint8_t*)*__11364A0; Widget dropdown = w->widgets[Widx::currency]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], _112C185, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), _112C185, 0x80); int index = -1; for (auto object : ObjectManager::getAvailableObjects(ObjectType::currency)) { @@ -1559,7 +1559,7 @@ namespace OpenLoco::Ui::Windows::Options static void preferredCurrencyMouseDown(Window* w) { Widget dropdown = w->widgets[Widx::preferred_currency]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], _112C185, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), _112C185, 0x80); int index = -1; for (auto object : ObjectManager::getAvailableObjects(ObjectType::currency)) @@ -1643,7 +1643,7 @@ namespace OpenLoco::Ui::Windows::Options static void distanceSpeedMouseDown(Window* w) { Widget dropdown = w->widgets[Widx::distance_speed]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], 2, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), 2, 0x80); Dropdown::add(0, StringIds::dropdown_stringid, StringIds::imperial); Dropdown::add(1, StringIds::dropdown_stringid, StringIds::metric); @@ -1674,7 +1674,7 @@ namespace OpenLoco::Ui::Windows::Options static void heightsLabelsMouseDown(Window* w) { Widget dropdown = w->widgets[Widx::heights]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], 2, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), 2, 0x80); Dropdown::add(0, StringIds::dropdown_stringid, StringIds::height_units); Dropdown::add(1, StringIds::dropdown_stringid, StringIds::height_real_values); @@ -1750,9 +1750,9 @@ namespace OpenLoco::Ui::Windows::Options static Widget _widgets[] = { common_options_widgets(_window_size, StringIds::options_title_controls), - makeWidget({ 10, 49 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::scroll_screen_edge, StringIds::scroll_screen_edge_tip), - makeWidget({ 10, 64 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::zoom_to_cursor, StringIds::zoom_to_cursor_tip), - makeWidget({ 26, 79 }, { 160, 12 }, WidgetType::wt_11, 1, StringIds::customise_keys, StringIds::customise_keys_tip), + makeWidget({ 10, 49 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::scroll_screen_edge, StringIds::scroll_screen_edge_tip), + makeWidget({ 10, 64 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::zoom_to_cursor, StringIds::zoom_to_cursor_tip), + makeWidget({ 26, 79 }, { 160, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::customise_keys, StringIds::customise_keys_tip), widgetEnd(), }; @@ -1899,15 +1899,15 @@ namespace OpenLoco::Ui::Windows::Options static Widget _widgets[] = { common_options_widgets(_window_size, StringIds::options_title_miscellaneous), - makeWidget({ 10, 49 }, { 400, 12 }, WidgetType::checkbox, 1, StringIds::option_cheat_menu_enable, StringIds::tooltip_option_cheat_menu_enable), - makeWidget({ 10, 64 }, { 400, 12 }, WidgetType::checkbox, 1, StringIds::disable_vehicle_breakdowns), - makeWidget({ 10, 79 }, { 400, 12 }, WidgetType::checkbox, 1, StringIds::disableAICompanies, StringIds::disableAICompanies_tip), - makeWidget({ 10, 94 }, { 400, 12 }, WidgetType::checkbox, 1, StringIds::use_preferred_owner_name, StringIds::use_preferred_owner_name_tip), - makeWidget({ 335, 109 }, { 75, 12 }, WidgetType::wt_11, 1, StringIds::change), - makeWidget({ 10, 124 }, { 400, 12 }, WidgetType::checkbox, 1, StringIds::export_plugin_objects, StringIds::export_plugin_objects_tip), - makeWidget({ 250, 139 }, { 156, 12 }, WidgetType::wt_18, 1, StringIds::empty), - makeWidget({ 394, 140 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeStepperWidgets({ 250, 154 }, { 156, 12 }, WidgetType::wt_17, 1, StringIds::empty), + makeWidget({ 10, 49 }, { 400, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::option_cheat_menu_enable, StringIds::tooltip_option_cheat_menu_enable), + makeWidget({ 10, 64 }, { 400, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::disable_vehicle_breakdowns), + makeWidget({ 10, 79 }, { 400, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::disableAICompanies, StringIds::disableAICompanies_tip), + makeWidget({ 10, 94 }, { 400, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::use_preferred_owner_name, StringIds::use_preferred_owner_name_tip), + makeWidget({ 335, 109 }, { 75, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::change), + makeWidget({ 10, 124 }, { 400, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::export_plugin_objects, StringIds::export_plugin_objects_tip), + makeWidget({ 250, 139 }, { 156, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::empty), + makeWidget({ 394, 140 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeStepperWidgets({ 250, 154 }, { 156, 12 }, WidgetType::wt_17, WindowColour::secondary, StringIds::empty), widgetEnd(), }; @@ -2054,7 +2054,7 @@ namespace OpenLoco::Ui::Windows::Options static void showAutosaveFrequencyDropdown(Window* w, WidgetIndex_t wi) { auto dropdown = w->widgets[wi]; - Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->colours[1], 5, 0x80); + Dropdown::show(w->x + dropdown.left, w->y + dropdown.top, dropdown.width() - 4, dropdown.height(), w->getColour(WindowColour::secondary), 5, 0x80); // Add pre-defined entries Dropdown::add(0, StringIds::dropdown_stringid, { StringIds::autosave_never }); @@ -2383,8 +2383,8 @@ namespace OpenLoco::Ui::Windows::Options window->row_hover = -1; auto interface = ObjectManager::get(); - window->colours[0] = interface->colour_0B; - window->colours[1] = interface->colour_10; + window->setColour(WindowColour::primary, interface->colour_0B); + window->setColour(WindowColour::secondary, interface->colour_10); sub_4BF8CD(); sub_4C1519(); diff --git a/src/OpenLoco/Windows/PlayerInfoPanel.cpp b/src/OpenLoco/Windows/PlayerInfoPanel.cpp index be3cd93b..2de4aeac 100644 --- a/src/OpenLoco/Windows/PlayerInfoPanel.cpp +++ b/src/OpenLoco/Windows/PlayerInfoPanel.cpp @@ -45,11 +45,11 @@ namespace OpenLoco::Ui::Windows::PlayerInfoPanel // 0x00509d08 static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 140, 29 }, WidgetType::wt_3, 0), - makeWidget({ 2, 2 }, { 136, 25 }, WidgetType::wt_3, 0), - makeWidget({ 1, 1 }, { 26, 26 }, WidgetType::wt_9, 0), - makeWidget({ 27, 2 }, { 111, 12 }, WidgetType::wt_9, 0, ImageIds::null, StringIds::tooltip_company_value), - makeWidget({ 27, 14 }, { 111, 12 }, WidgetType::wt_9, 0, ImageIds::null, StringIds::tooltip_performance_index), + makeWidget({ 0, 0 }, { 140, 29 }, WidgetType::wt_3, WindowColour::primary), + makeWidget({ 2, 2 }, { 136, 25 }, WidgetType::wt_3, WindowColour::primary), + makeWidget({ 1, 1 }, { 26, 26 }, WidgetType::wt_9, WindowColour::primary), + makeWidget({ 27, 2 }, { 111, 12 }, WidgetType::wt_9, WindowColour::primary, ImageIds::null, StringIds::tooltip_company_value), + makeWidget({ 27, 14 }, { 111, 12 }, WidgetType::wt_9, WindowColour::primary, ImageIds::null, StringIds::tooltip_performance_index), widgetEnd(), }; @@ -194,8 +194,8 @@ namespace OpenLoco::Ui::Windows::PlayerInfoPanel auto skin = ObjectManager::get(); if (skin != nullptr) { - window->colours[0] = Colour::translucent(skin->colour_16); - window->colours[1] = Colour::translucent(skin->colour_16); + window->setColour(WindowColour::primary, Colour::translucent(skin->colour_16)); + window->setColour(WindowColour::secondary, Colour::translucent(skin->colour_16)); } return window; @@ -216,7 +216,7 @@ namespace OpenLoco::Ui::Windows::PlayerInfoPanel // Draw widgets. window->draw(context); - drawRectInset(context, window->x + frame.left + 1, window->y + frame.top + 1, frame.width() - 2, frame.height() - 2, window->colours[1], 0x30); + drawRectInset(context, window->x + frame.left + 1, window->y + frame.top + 1, frame.width() - 2, frame.height() - 2, window->getColour(WindowColour::secondary), 0x30); auto playerCompany = CompanyManager::get(CompanyManager::getControllingId()); auto competitor = ObjectManager::get(playerCompany->competitor_id); @@ -238,7 +238,7 @@ namespace OpenLoco::Ui::Windows::PlayerInfoPanel } } - auto colour = Colour::opaque(window->colours[0]); + auto colour = Colour::opaque(window->getColour(WindowColour::primary)); if (Input::isHovering(WindowType::playerInfoToolbar, 0, Widx::company_value)) { colour = Colour::white; @@ -261,7 +261,7 @@ namespace OpenLoco::Ui::Windows::PlayerInfoPanel performanceString = StringIds::player_info_performance_decrease; } - auto colour = window->colours[0] & 0x7F; + auto colour = window->getColour(WindowColour::primary) & 0x7F; if (Input::isHovering(WindowType::playerInfoToolbar, 0, Widx::performance_index)) { colour = Colour::white; diff --git a/src/OpenLoco/Windows/ProgressBar.cpp b/src/OpenLoco/Windows/ProgressBar.cpp index f77fe3e2..98fdc623 100644 --- a/src/OpenLoco/Windows/ProgressBar.cpp +++ b/src/OpenLoco/Windows/ProgressBar.cpp @@ -26,9 +26,9 @@ namespace OpenLoco::Ui::Windows::ProgressBar constexpr Gfx::ui_size_t windowSize = { 350, 47 }; Widget widgets[] = { - makeWidget({ 0, 0 }, { 350, 47 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 348, 13 }, WidgetType::caption_25, 0, StringIds::buffer_1250), - makeWidget({ 0, 15 }, { 350, 32 }, WidgetType::panel, 1), + makeWidget({ 0, 0 }, { 350, 47 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 348, 13 }, WidgetType::caption_25, WindowColour::primary, StringIds::buffer_1250), + makeWidget({ 0, 15 }, { 350, 32 }, WidgetType::panel, WindowColour::secondary), widgetEnd(), }; @@ -58,8 +58,8 @@ namespace OpenLoco::Ui::Windows::ProgressBar window->widgets = widgets; window->initScrollWidgets(); - window->colours[0] = Colour::black; - window->colours[1] = Colour::black; + window->setColour(WindowColour::primary, Colour::black); + window->setColour(WindowColour::secondary, Colour::black); setProgress(0); return window; diff --git a/src/OpenLoco/Windows/PromptBrowseWindow.cpp b/src/OpenLoco/Windows/PromptBrowseWindow.cpp index bd51f594..462db4c4 100644 --- a/src/OpenLoco/Windows/PromptBrowseWindow.cpp +++ b/src/OpenLoco/Windows/PromptBrowseWindow.cpp @@ -104,14 +104,14 @@ namespace OpenLoco::Ui::Windows::PromptBrowse }; static Widget widgets[] = { - makeWidget({ 0, 0 }, { 500, 380 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 498, 13 }, WidgetType::caption_25, 0, StringIds::buffer_2039), - makeWidget({ 485, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 15 }, { 500, 365 }, WidgetType::panel, 1), - makeWidget({ 473, 18 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::icon_parent_folder, StringIds::window_browse_parent_folder_tooltip), - makeWidget({ 88, 348 }, { 408, 14 }, WidgetType::wt_17, 1), - makeWidget({ 426, 364 }, { 70, 12 }, WidgetType::wt_11, 1, StringIds::label_button_ok), - makeWidget({ 3, 45 }, { 494, 323 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 0, 0 }, { 500, 380 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 498, 13 }, WidgetType::caption_25, WindowColour::primary, StringIds::buffer_2039), + makeWidget({ 485, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 15 }, { 500, 365 }, WidgetType::panel, WindowColour::secondary), + makeWidget({ 473, 18 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::icon_parent_folder, StringIds::window_browse_parent_folder_tooltip), + makeWidget({ 88, 348 }, { 408, 14 }, WidgetType::wt_17, WindowColour::secondary), + makeWidget({ 426, 364 }, { 70, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::label_button_ok), + makeWidget({ 3, 45 }, { 494, 323 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd(), }; @@ -214,8 +214,8 @@ namespace OpenLoco::Ui::Windows::PromptBrowse auto& widget = window->widgets[widx::text_filename]; inputSession.calculateTextOffset(widget.width()); - window->colours[0] = Colour::black; - window->colours[1] = Colour::saturated_green; + window->setColour(WindowColour::primary, Colour::black); + window->setColour(WindowColour::secondary, Colour::saturated_green); WindowManager::setCurrentModalType(WindowType::fileBrowserPrompt); promptTickLoop( @@ -494,7 +494,7 @@ namespace OpenLoco::Ui::Windows::PromptBrowse { loco_global _commonFormatArgs; - Gfx::fillRectInset(&context, x, y, x + width, y + height, window.colours[1], 0x30); + Gfx::fillRectInset(&context, x, y, x + width, y + height, window.getColour(WindowColour::secondary), 0x30); auto imageId = 0; auto g1 = Gfx::getG1Element(imageId); @@ -545,7 +545,7 @@ namespace OpenLoco::Ui::Windows::PromptBrowse static void drawLandscapePreview(Ui::Window& window, Gfx::Context& context, int32_t x, int32_t y, int32_t width, int32_t height) { - Gfx::fillRectInset(&context, x, y, x + width, y + height, window.colours[1], 0x30); + Gfx::fillRectInset(&context, x, y, x + width, y + height, window.getColour(WindowColour::secondary), 0x30); if (S5::getPreviewOptions().scenarioFlags & Scenario::flags::landscape_generation_done) { @@ -569,7 +569,7 @@ namespace OpenLoco::Ui::Windows::PromptBrowse else { // Randomly generated landscape - auto imageId = ImageIds::random_map_watermark | (window.colours[1] << 19) | 0x20000000; + auto imageId = ImageIds::random_map_watermark | (window.getColour(WindowColour::secondary) << 19) | 0x20000000; Gfx::drawImage(&context, x, y, imageId); Gfx::point_t origin = { (int16_t)(x + 64), (int16_t)(y + 60) }; Gfx::drawStringCentredWrapped(&context, &origin, 128, 0, StringIds::randomly_generated_landscape); @@ -604,7 +604,7 @@ namespace OpenLoco::Ui::Windows::PromptBrowse Gfx::drawString_494B3F(context, &origin, 0, StringIds::black_stringid, _commonFormatArgs); // Draw vertical caret - Gfx::drawRect(&context, origin.x, origin.y, 1, 9, byte_1136C99[window->colours[1] * 8]); + Gfx::drawRect(&context, origin.x, origin.y, 1, 9, byte_1136C99[window->getColour(WindowColour::secondary) * 8]); } } } @@ -617,7 +617,7 @@ namespace OpenLoco::Ui::Windows::PromptBrowse static std::string _nameBuffer; // Background - Gfx::clearSingle(*context, Colour::getShade(window->colours[1], 4)); + Gfx::clearSingle(*context, Colour::getShade(window->getColour(WindowColour::secondary), 4)); // Directories / files auto y = 0; diff --git a/src/OpenLoco/Windows/PromptOkCancelWindow.cpp b/src/OpenLoco/Windows/PromptOkCancelWindow.cpp index f49f5356..8cd5ccb7 100644 --- a/src/OpenLoco/Windows/PromptOkCancelWindow.cpp +++ b/src/OpenLoco/Windows/PromptOkCancelWindow.cpp @@ -39,11 +39,11 @@ namespace OpenLoco::Ui::Windows::PromptOkCancel }; static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 280, 92 }, WidgetType::panel, 0), - makeWidget({ 1, 1 }, { 278, 13 }, WidgetType::caption_22, 0, StringIds::buffer_2039), - makeWidget({ 267, 2 }, { 11, 11 }, WidgetType::wt_11, 0, StringIds::close_window_cross, StringIds::tooltip_close_window), - makeWidget({ 20, 77 }, { 100, 12 }, WidgetType::wt_11, 0, StringIds::label_ok), - makeWidget({ 160, 77 }, { 100, 12 }, WidgetType::wt_11, 0, StringIds::label_button_cancel), + makeWidget({ 0, 0 }, { 280, 92 }, WidgetType::panel, WindowColour::primary), + makeWidget({ 1, 1 }, { 278, 13 }, WidgetType::caption_22, WindowColour::primary, StringIds::buffer_2039), + makeWidget({ 267, 2 }, { 11, 11 }, WidgetType::wt_11, WindowColour::primary, StringIds::close_window_cross, StringIds::tooltip_close_window), + makeWidget({ 20, 77 }, { 100, 12 }, WidgetType::wt_11, WindowColour::primary, StringIds::label_ok), + makeWidget({ 160, 77 }, { 100, 12 }, WidgetType::wt_11, WindowColour::primary, StringIds::label_button_cancel), widgetEnd(), }; @@ -75,8 +75,8 @@ namespace OpenLoco::Ui::Windows::PromptOkCancel window->enabled_widgets = (1 << widx::closeButton) | (1 << widx::okButton) | (1 << widx::cancelButton); window->initScrollWidgets(); - window->colours[0] = Colour::translucent(Colour::salmon_pink); - window->colours[1] = Colour::translucent(Colour::salmon_pink); + window->setColour(WindowColour::primary, Colour::translucent(Colour::salmon_pink)); + window->setColour(WindowColour::secondary, Colour::translucent(Colour::salmon_pink)); window->flags |= Ui::WindowFlags::transparent; _result = 0; diff --git a/src/OpenLoco/Windows/PromptSaveWindow.cpp b/src/OpenLoco/Windows/PromptSaveWindow.cpp index 4fa0e73c..703d5e76 100644 --- a/src/OpenLoco/Windows/PromptSaveWindow.cpp +++ b/src/OpenLoco/Windows/PromptSaveWindow.cpp @@ -30,13 +30,13 @@ namespace OpenLoco::Ui::Windows::PromptSaveWindow }; static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 260, 48 }, WidgetType::panel, 0), - makeWidget({ 1, 1 }, { 258, 13 }, WidgetType::caption_22, 0, StringIds::empty), - makeWidget({ 247, 2 }, { 11, 11 }, WidgetType::wt_11, 0, StringIds::close_window_cross, StringIds::tooltip_close_window), - makeWidget({ 2, 17 }, { 256, 12 }, WidgetType::wt_13, 0, StringIds::empty), - makeWidget({ 8, 33 }, { 78, 12 }, WidgetType::wt_11, 0, StringIds::label_button_save), - makeWidget({ 91, 33 }, { 78, 12 }, WidgetType::wt_11, 0, StringIds::label_button_dont_save), - makeWidget({ 174, 33 }, { 78, 12 }, WidgetType::wt_11, 0, StringIds::label_button_cancel), + makeWidget({ 0, 0 }, { 260, 48 }, WidgetType::panel, WindowColour::primary), + makeWidget({ 1, 1 }, { 258, 13 }, WidgetType::caption_22, WindowColour::primary, StringIds::empty), + makeWidget({ 247, 2 }, { 11, 11 }, WidgetType::wt_11, WindowColour::primary, StringIds::close_window_cross, StringIds::tooltip_close_window), + makeWidget({ 2, 17 }, { 256, 12 }, WidgetType::wt_13, WindowColour::primary, StringIds::empty), + makeWidget({ 8, 33 }, { 78, 12 }, WidgetType::wt_11, WindowColour::primary, StringIds::label_button_save), + makeWidget({ 91, 33 }, { 78, 12 }, WidgetType::wt_11, WindowColour::primary, StringIds::label_button_dont_save), + makeWidget({ 174, 33 }, { 78, 12 }, WidgetType::wt_11, WindowColour::primary, StringIds::label_button_cancel), widgetEnd(), }; @@ -61,7 +61,7 @@ namespace OpenLoco::Ui::Windows::PromptSaveWindow window->widgets = _widgets; window->enabled_widgets = (1 << widx::closeButton) | (1 << widx::saveButton) | (1 << widx::dontSaveButton) | (1 << widx::cancelButton); window->initScrollWidgets(); - window->colours[0] = Colour::translucent(Colour::salmon_pink); + window->setColour(WindowColour::primary, Colour::translucent(Colour::salmon_pink)); window->flags |= Ui::WindowFlags::transparent; setPauseFlag(1 << 1); diff --git a/src/OpenLoco/Windows/ScenarioOptions.cpp b/src/OpenLoco/Windows/ScenarioOptions.cpp index 7e981ca6..f822d97b 100644 --- a/src/OpenLoco/Windows/ScenarioOptions.cpp +++ b/src/OpenLoco/Windows/ScenarioOptions.cpp @@ -64,14 +64,14 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions const uint64_t enabledWidgets = (1 << widx::tab_challenge) | (1 << widx::tab_companies) | (1 << widx::tab_finances) | (1 << widx::tab_scenario); -#define commonWidgets(frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { 366, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { 364, 13 }, WidgetType::caption_25, 0, windowCaptionId), \ - makeWidget({ 0, 41 }, { 366, 175 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_scenario_challenge), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_company_options), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_financial_options), \ - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_scenario_options) +#define commonWidgets(frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { 366, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { 364, 13 }, WidgetType::caption_25, WindowColour::primary, windowCaptionId), \ + makeWidget({ 0, 41 }, { 366, 175 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_scenario_challenge), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_company_options), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_financial_options), \ + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_scenario_options) // Defined at the bottom of this file. static void initEvents(); @@ -197,15 +197,15 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions static Widget widgets[] = { commonWidgets(197, StringIds::title_scenario_challenge), - makeWidget({ 10, 52 }, { 346, 12 }, WidgetType::wt_18, 1), - makeWidget({ 344, 53 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeStepperWidgets({ 10, 67 }, { 163, 12 }, WidgetType::wt_17, 1), - makeWidget({ 193, 67 }, { 163, 12 }, WidgetType::wt_18, 1), - makeWidget({ 344, 68 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 10, 83 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::and_be_the_top_company), - makeWidget({ 10, 98 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::and_be_within_the_top_companies), - makeWidget({ 10, 113 }, { 346, 12 }, WidgetType::checkbox, 1, StringIds::with_a_time_limit), - makeStepperWidgets({ 256, 112 }, { 100, 12 }, WidgetType::wt_17, 1, StringIds::time_limit_years_value), + makeWidget({ 10, 52 }, { 346, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 344, 53 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeStepperWidgets({ 10, 67 }, { 163, 12 }, WidgetType::wt_17, WindowColour::secondary), + makeWidget({ 193, 67 }, { 163, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 344, 68 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 10, 83 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::and_be_the_top_company), + makeWidget({ 10, 98 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::and_be_within_the_top_companies), + makeWidget({ 10, 113 }, { 346, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::with_a_time_limit), + makeStepperWidgets({ 256, 112 }, { 100, 12 }, WidgetType::wt_17, WindowColour::secondary, StringIds::time_limit_years_value), widgetEnd(), }; @@ -265,7 +265,7 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions case widx::objective_type_btn: { Widget& target = self->widgets[widx::objective_type]; - Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->colours[1], std::size(objectiveTypeLabelIds), 0x80); + Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->getColour(WindowColour::secondary), std::size(objectiveTypeLabelIds), 0x80); for (size_t i = 0; i < std::size(objectiveTypeLabelIds); i++) Dropdown::add(i, StringIds::dropdown_stringid, objectiveTypeLabelIds[i]); @@ -363,7 +363,7 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions } Widget& target = self->widgets[widx::objective_cargo]; - Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->colours[1], numCargoObjects, 0x80); + Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->getColour(WindowColour::secondary), numCargoObjects, 0x80); uint16_t dropdownIndex = 0; for (uint16_t cargoIdx = 0; cargoIdx < maxCargoObjects; cargoIdx++) @@ -522,8 +522,8 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions auto skin = ObjectManager::get(); if (skin != nullptr) { - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_0E; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_0E); } // 0x0043EEFF end @@ -582,26 +582,26 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions static Widget widgets[] = { commonWidgets(327, StringIds::title_company_options), - makeStepperWidgets({ 256, 52 }, { 100, 12 }, WidgetType::wt_17, 1, StringIds::max_competing_companies_value), - makeStepperWidgets({ 256, 67 }, { 100, 12 }, WidgetType::wt_17, 1, StringIds::delay_before_competing_companies_start_months), - makeWidget({ 246, 102 }, { 110, 12 }, WidgetType::wt_18, 1), - makeWidget({ 344, 103 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 246, 117 }, { 110, 12 }, WidgetType::wt_18, 1), - makeWidget({ 344, 118 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 246, 132 }, { 110, 12 }, WidgetType::wt_18, 1), - makeWidget({ 344, 133 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 15, 160 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_trains), - makeWidget({ 15, 172 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_buses), - makeWidget({ 15, 184 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_trucks), - makeWidget({ 15, 196 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_trams), - makeWidget({ 15, 208 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_aircraft), - makeWidget({ 15, 220 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_ships), - makeWidget({ 15, 247 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_trains), - makeWidget({ 15, 259 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_buses), - makeWidget({ 15, 271 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_trucks), - makeWidget({ 15, 283 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_trams), - makeWidget({ 15, 295 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_aircraft), - makeWidget({ 15, 307 }, { 341, 12 }, WidgetType::checkbox, 1, StringIds::forbid_ships), + makeStepperWidgets({ 256, 52 }, { 100, 12 }, WidgetType::wt_17, WindowColour::secondary, StringIds::max_competing_companies_value), + makeStepperWidgets({ 256, 67 }, { 100, 12 }, WidgetType::wt_17, WindowColour::secondary, StringIds::delay_before_competing_companies_start_months), + makeWidget({ 246, 102 }, { 110, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 344, 103 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 246, 117 }, { 110, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 344, 118 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 246, 132 }, { 110, 12 }, WidgetType::wt_18, WindowColour::secondary), + makeWidget({ 344, 133 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 15, 160 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_trains), + makeWidget({ 15, 172 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_buses), + makeWidget({ 15, 184 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_trucks), + makeWidget({ 15, 196 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_trams), + makeWidget({ 15, 208 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_aircraft), + makeWidget({ 15, 220 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_ships), + makeWidget({ 15, 247 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_trains), + makeWidget({ 15, 259 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_buses), + makeWidget({ 15, 271 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_trucks), + makeWidget({ 15, 283 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_trams), + makeWidget({ 15, 295 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_aircraft), + makeWidget({ 15, 307 }, { 341, 12 }, WidgetType::checkbox, WindowColour::secondary, StringIds::forbid_ships), widgetEnd(), }; @@ -723,7 +723,7 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions case widx::preferred_intelligence_btn: { Widget& target = self->widgets[widx::preferred_intelligence]; - Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->colours[1], std::size(preferenceLabelIds), 0x80); + Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->getColour(WindowColour::secondary), std::size(preferenceLabelIds), 0x80); for (size_t i = 0; i < std::size(preferenceLabelIds); i++) Dropdown::add(i, StringIds::dropdown_stringid, preferenceLabelIds[i]); @@ -735,7 +735,7 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions case widx::preferred_aggressiveness_btn: { Widget& target = self->widgets[widx::preferred_aggressiveness]; - Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->colours[1], std::size(preferenceLabelIds), 0x80); + Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->getColour(WindowColour::secondary), std::size(preferenceLabelIds), 0x80); for (size_t i = 0; i < std::size(preferenceLabelIds); i++) Dropdown::add(i, StringIds::dropdown_stringid, preferenceLabelIds[i]); @@ -747,7 +747,7 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions case widx::preferred_competitiveness_btn: { Widget& target = self->widgets[widx::preferred_competitiveness]; - Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->colours[1], std::size(preferenceLabelIds), 0x80); + Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->getColour(WindowColour::secondary), std::size(preferenceLabelIds), 0x80); for (size_t i = 0; i < std::size(preferenceLabelIds); i++) Dropdown::add(i, StringIds::dropdown_stringid, preferenceLabelIds[i]); @@ -855,9 +855,9 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions static Widget widgets[] = { commonWidgets(217, StringIds::title_financial_options), - makeStepperWidgets({ 256, 52 }, { 100, 12 }, WidgetType::wt_17, 1, StringIds::starting_loan_value), - makeStepperWidgets({ 256, 67 }, { 100, 12 }, WidgetType::wt_17, 1, StringIds::max_loan_size_value), - makeStepperWidgets({ 256, 82 }, { 100, 12 }, WidgetType::wt_17, 1, StringIds::loan_interest_rate_value), + makeStepperWidgets({ 256, 52 }, { 100, 12 }, WidgetType::wt_17, WindowColour::secondary, StringIds::starting_loan_value), + makeStepperWidgets({ 256, 67 }, { 100, 12 }, WidgetType::wt_17, WindowColour::secondary, StringIds::max_loan_size_value), + makeStepperWidgets({ 256, 82 }, { 100, 12 }, WidgetType::wt_17, WindowColour::secondary, StringIds::loan_interest_rate_value), widgetEnd(), }; @@ -982,10 +982,10 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions static Widget widgets[] = { commonWidgets(217, StringIds::title_scenario_options), - makeWidget({ 281, 52 }, { 75, 12 }, WidgetType::wt_11, 1, StringIds::change), - makeWidget({ 196, 67 }, { 160, 12 }, WidgetType::wt_18, 1, StringIds::empty), - makeWidget({ 344, 68 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), - makeWidget({ 281, 82 }, { 75, 12 }, WidgetType::wt_11, 1, StringIds::change), + makeWidget({ 281, 52 }, { 75, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::change), + makeWidget({ 196, 67 }, { 160, 12 }, WidgetType::wt_18, WindowColour::secondary, StringIds::empty), + makeWidget({ 344, 68 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), + makeWidget({ 281, 82 }, { 75, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::change), widgetEnd(), }; @@ -1066,7 +1066,7 @@ namespace OpenLoco::Ui::Windows::ScenarioOptions if (widgetIndex == widx::scenario_group_btn) { Widget& target = self->widgets[widx::scenario_group]; - Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->colours[1], std::size(scenarioGroupLabelIds), 0x80); + Dropdown::show(self->x + target.left, self->y + target.top, target.width() - 4, target.height(), self->getColour(WindowColour::secondary), std::size(scenarioGroupLabelIds), 0x80); for (size_t i = 0; i < std::size(scenarioGroupLabelIds); i++) Dropdown::add(i, StringIds::dropdown_stringid, scenarioGroupLabelIds[i]); diff --git a/src/OpenLoco/Windows/ScenarioSelect.cpp b/src/OpenLoco/Windows/ScenarioSelect.cpp index e73f6404..53f8cf66 100644 --- a/src/OpenLoco/Windows/ScenarioSelect.cpp +++ b/src/OpenLoco/Windows/ScenarioSelect.cpp @@ -38,16 +38,16 @@ namespace OpenLoco::Ui::Windows::ScenarioSelect } static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 610, 412 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 608, 13 }, WidgetType::caption_25, 0, StringIds::select_scenario_for_new_game), - makeWidget({ 595, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 48 }, { 610, 364 }, WidgetType::wt_3, 1), - makeRemapWidget({ 3, 15 }, { 91, 34 }, WidgetType::wt_8, 1, ImageIds::wide_tab), - makeRemapWidget({ 94, 15 }, { 91, 34 }, WidgetType::wt_8, 1, ImageIds::wide_tab), - makeRemapWidget({ 185, 15 }, { 91, 34 }, WidgetType::wt_8, 1, ImageIds::wide_tab), - makeRemapWidget({ 276, 15 }, { 91, 34 }, WidgetType::wt_8, 1, ImageIds::wide_tab), - makeRemapWidget({ 367, 15 }, { 91, 34 }, WidgetType::wt_8, 1, ImageIds::wide_tab), - makeWidget({ 3, 52 }, { 431, 356 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 0, 0 }, { 610, 412 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 608, 13 }, WidgetType::caption_25, WindowColour::primary, StringIds::select_scenario_for_new_game), + makeWidget({ 595, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 48 }, { 610, 364 }, WidgetType::wt_3, WindowColour::secondary), + makeRemapWidget({ 3, 15 }, { 91, 34 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::wide_tab), + makeRemapWidget({ 94, 15 }, { 91, 34 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::wide_tab), + makeRemapWidget({ 185, 15 }, { 91, 34 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::wide_tab), + makeRemapWidget({ 276, 15 }, { 91, 34 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::wide_tab), + makeRemapWidget({ 367, 15 }, { 91, 34 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::wide_tab), + makeWidget({ 3, 52 }, { 431, 356 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd(), }; @@ -113,8 +113,8 @@ namespace OpenLoco::Ui::Windows::ScenarioSelect self->enabled_widgets = (1 << widx::close) | (1 << widx::tab0) | (1 << widx::tab1) | (1 << widx::tab2) | (1 << widx::tab3) | (1 << widx::tab4); self->initScrollWidgets(); - self->colours[0] = Colour::black; - self->colours[1] = Colour::saturated_green; + self->setColour(WindowColour::primary, Colour::black); + self->setColour(WindowColour::secondary, Colour::saturated_green); self->var_846 = 0xFFFF; self->var_85A = static_cast(0xFFFFFFFF); @@ -153,7 +153,7 @@ namespace OpenLoco::Ui::Windows::ScenarioSelect // 0x004439AF static void draw(Window* self, Gfx::Context* context) { - Gfx::drawRectInset(context, self->x, self->y + 20, self->width, 41, self->colours[0], 0); + Gfx::drawRectInset(context, self->x, self->y + 20, self->width, 41, self->getColour(WindowColour::primary), 0); // Draw widgets. self->draw(context); @@ -227,7 +227,7 @@ namespace OpenLoco::Ui::Windows::ScenarioSelect // Outline for preview image { x = baseX + 20; - Gfx::drawRectInset(context, x, y, 130, 130, self->colours[1], 0x30); + Gfx::drawRectInset(context, x, y, 130, 130, self->getColour(WindowColour::secondary), 0x30); x += 1; y += 1; @@ -261,7 +261,7 @@ namespace OpenLoco::Ui::Windows::ScenarioSelect y += 1; // No preview image -- a placeholder will have to do. - auto image = Gfx::recolour(ImageIds::random_map_watermark, self->colours[1]); + auto image = Gfx::recolour(ImageIds::random_map_watermark, self->getColour(WindowColour::secondary)); Gfx::drawImage(context, x, y, image); x += 64; @@ -328,7 +328,7 @@ namespace OpenLoco::Ui::Windows::ScenarioSelect // 0x00443D02 static void drawScroll(Window* self, Gfx::Context* const context, uint32_t) { - auto colour = Colour::getShade(self->colours[1], 4); + auto colour = Colour::getShade(self->getColour(WindowColour::secondary), 4); Gfx::clearSingle(*context, colour); using namespace ScenarioManager; diff --git a/src/OpenLoco/Windows/StationList.cpp b/src/OpenLoco/Windows/StationList.cpp index 12eeb66c..dc91ff8d 100644 --- a/src/OpenLoco/Windows/StationList.cpp +++ b/src/OpenLoco/Windows/StationList.cpp @@ -47,21 +47,21 @@ namespace OpenLoco::Ui::Windows::StationList }; static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 600, 197 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 598, 13 }, WidgetType::caption_24, 0, StringIds::stringid_all_stations), - makeWidget({ 585, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 41 }, { 600, 155 }, WidgetType::panel, 1), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_all_stations), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_rail_stations), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_road_stations), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_airports), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_ship_ports), - makeWidget({ 0, 14 }, { 26, 26 }, WidgetType::wt_9, 0, StringIds::null, StringIds::tooltip_select_company), - makeWidget({ 4, 43 }, { 200, 12 }, WidgetType::wt_14, 1, StringIds::null, StringIds::tooltip_sort_by_name), - makeWidget({ 204, 43 }, { 200, 12 }, WidgetType::wt_14, 1, StringIds::null, StringIds::tooltip_sort_by_station_status), - makeWidget({ 404, 43 }, { 90, 12 }, WidgetType::wt_14, 1, StringIds::null, StringIds::tooltip_sort_by_total_units_waiting), - makeWidget({ 494, 43 }, { 120, 12 }, WidgetType::wt_14, 1, StringIds::null, StringIds::tooltip_sort_by_cargo_accepted), - makeWidget({ 3, 56 }, { 594, 126 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 0, 0 }, { 600, 197 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 598, 13 }, WidgetType::caption_24, WindowColour::primary, StringIds::stringid_all_stations), + makeWidget({ 585, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 41 }, { 600, 155 }, WidgetType::panel, WindowColour::secondary), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_all_stations), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_rail_stations), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_road_stations), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_airports), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_ship_ports), + makeWidget({ 0, 14 }, { 26, 26 }, WidgetType::wt_9, WindowColour::primary, StringIds::null, StringIds::tooltip_select_company), + makeWidget({ 4, 43 }, { 200, 12 }, WidgetType::wt_14, WindowColour::secondary, StringIds::null, StringIds::tooltip_sort_by_name), + makeWidget({ 204, 43 }, { 200, 12 }, WidgetType::wt_14, WindowColour::secondary, StringIds::null, StringIds::tooltip_sort_by_station_status), + makeWidget({ 404, 43 }, { 90, 12 }, WidgetType::wt_14, WindowColour::secondary, StringIds::null, StringIds::tooltip_sort_by_total_units_waiting), + makeWidget({ 494, 43 }, { 120, 12 }, WidgetType::wt_14, WindowColour::secondary, StringIds::null, StringIds::tooltip_sort_by_cargo_accepted), + makeWidget({ 3, 56 }, { 594, 126 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd(), }; @@ -334,7 +334,7 @@ namespace OpenLoco::Ui::Windows::StationList window->flags |= WindowFlags::resizable; auto interface = ObjectManager::get(); - window->colours[1] = interface->colour_0A; + window->setColour(WindowColour::secondary, interface->colour_0A); } // TODO: only needs to be called once. @@ -471,7 +471,7 @@ namespace OpenLoco::Ui::Windows::StationList // 0x0049157F static void drawScroll(Ui::Window* window, Gfx::Context* context, uint32_t scrollIndex) { - auto shade = Colour::getShade(window->colours[1], 4); + auto shade = Colour::getShade(window->getColour(WindowColour::secondary), 4); Gfx::clearSingle(*context, shade); uint16_t yPos = 0; diff --git a/src/OpenLoco/Windows/StationWindow.cpp b/src/OpenLoco/Windows/StationWindow.cpp index efe239da..0e402dc7 100644 --- a/src/OpenLoco/Windows/StationWindow.cpp +++ b/src/OpenLoco/Windows/StationWindow.cpp @@ -47,14 +47,14 @@ namespace OpenLoco::Ui::Windows::Station const uint64_t enabledWidgets = (1 << widx::caption) | (1 << widx::close_button) | (1 << widx::tab_station) | (1 << widx::tab_cargo) | (1 << widx::tab_cargo_ratings); -#define commonWidgets(frameWidth, frameHeight) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_23, 0, StringIds::title_station), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { frameWidth, 95 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_station), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_station_cargo), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_station_cargo_ratings) +#define commonWidgets(frameWidth, frameHeight) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_23, WindowColour::primary, StringIds::title_station), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { frameWidth, 95 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_station), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_station_cargo), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_station_cargo_ratings) // Defined at the bottom of this file. static void prepareDraw(Window* self); @@ -82,9 +82,9 @@ namespace OpenLoco::Ui::Windows::Station Widget widgets[] = { // commonWidgets(windowSize.width, windowSize.height), commonWidgets(223, 136), - makeWidget({ 3, 44 }, { 195, 80 }, WidgetType::viewport, 1, 0xFFFFFFFE), - makeWidget({ 3, 115 }, { 195, 21 }, WidgetType::wt_13, 1), - makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::null, StringIds::move_main_view_to_show_this), + makeWidget({ 3, 44 }, { 195, 80 }, WidgetType::viewport, WindowColour::secondary, 0xFFFFFFFE), + makeWidget({ 3, 115 }, { 195, 21 }, WidgetType::wt_13, WindowColour::secondary), + makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::null, StringIds::move_main_view_to_show_this), widgetEnd(), }; @@ -290,7 +290,7 @@ namespace OpenLoco::Ui::Windows::Station window->saved_view.clear(); auto skin = ObjectManager::get(); - window->colours[1] = skin->colour_0A; + window->setColour(WindowColour::secondary, skin->colour_0A); // 0x0048F29F end } // TODO(avgeffen): only needs to be called once. @@ -322,9 +322,9 @@ namespace OpenLoco::Ui::Windows::Station static Widget widgets[] = { commonWidgets(223, 136), - makeWidget({ 3, 44 }, { 217, 80 }, WidgetType::scrollview, 1, 2), - makeWidget({ 3, 125 }, { 195, 10 }, WidgetType::wt_13, 1), - makeWidget({ 198, 44 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::show_station_catchment, StringIds::station_catchment), + makeWidget({ 3, 44 }, { 217, 80 }, WidgetType::scrollview, WindowColour::secondary, 2), + makeWidget({ 3, 125 }, { 195, 10 }, WidgetType::wt_13, WindowColour::secondary), + makeWidget({ 198, 44 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::show_station_catchment, StringIds::station_catchment), widgetEnd(), }; @@ -462,7 +462,7 @@ namespace OpenLoco::Ui::Windows::Station // 0x0048E986 static void drawScroll(Window* self, Gfx::Context* context, uint32_t scrollIndex) { - Gfx::clearSingle(*context, Colour::getShade(self->colours[1], 4)); + Gfx::clearSingle(*context, Colour::getShade(self->getColour(WindowColour::secondary), 4)); const auto station = StationManager::get(self->number); int16_t y = 1; @@ -575,8 +575,8 @@ namespace OpenLoco::Ui::Windows::Station static Widget widgets[] = { commonWidgets(249, 136), - makeWidget({ 3, 44 }, { 244, 80 }, WidgetType::scrollview, 1, 2), - makeWidget({ 3, 125 }, { 221, 11 }, WidgetType::wt_13, 1), + makeWidget({ 3, 44 }, { 244, 80 }, WidgetType::scrollview, WindowColour::secondary, 2), + makeWidget({ 3, 125 }, { 221, 11 }, WidgetType::wt_13, WindowColour::secondary), widgetEnd(), }; @@ -656,7 +656,7 @@ namespace OpenLoco::Ui::Windows::Station // 0x0048EF02 static void drawRatingBar(Window* self, Gfx::Context* context, int16_t x, int16_t y, uint8_t amount, Colour_t colour) { - Gfx::fillRectInset(context, x, y, x + 99, y + 9, self->colours[1], 48); + Gfx::fillRectInset(context, x, y, x + 99, y + 9, self->getColour(WindowColour::secondary), 48); uint16_t rating = (amount * 96) / 256; if (rating > 2) @@ -668,7 +668,7 @@ namespace OpenLoco::Ui::Windows::Station // 0x0048ED2F static void drawScroll(Window* self, Gfx::Context* context, uint32_t scrollIndex) { - Gfx::clearSingle(*context, Colour::getShade(self->colours[1], 4)); + Gfx::clearSingle(*context, Colour::getShade(self->getColour(WindowColour::secondary), 4)); const auto station = StationManager::get(self->number); int16_t y = 0; diff --git a/src/OpenLoco/Windows/TerraForm.cpp b/src/OpenLoco/Windows/TerraForm.cpp index 501f67eb..43f36642 100644 --- a/src/OpenLoco/Windows/TerraForm.cpp +++ b/src/OpenLoco/Windows/TerraForm.cpp @@ -79,16 +79,16 @@ namespace OpenLoco::Ui::Windows::Terraform const uint64_t enabledWidgets = (1 << widx::close_button) | (1 << widx::tab_adjust_land) | (1 << widx::tab_adjust_water) | (1 << widx::tab_build_walls) | (1 << widx::tab_clear_area) | (1 << widx::tab_plant_trees); -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_24, 0, windowCaptionId), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { 130, 74 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, 1, ImageIds::tab, StringIds::tooltip_clear_land), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, 1, ImageIds::tab, StringIds::tooltip_adjust_land), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, 1, ImageIds::tab, StringIds::tooltip_adjust_water), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, 1, ImageIds::tab, StringIds::tooltip_plant_trees), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, 1, ImageIds::tab, StringIds::tooltip_build_walls) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_24, WindowColour::primary, windowCaptionId), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { 130, 74 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_clear_land), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_adjust_land), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_adjust_water), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_plant_trees), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_6, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_build_walls) static WindowEventList _events; @@ -124,11 +124,11 @@ namespace OpenLoco::Ui::Windows::Terraform Widget widgets[] = { commonWidgets(634, 162, StringIds::title_plant_trees), - makeWidget({ 3, 45 }, { 605, 101 }, WidgetType::scrollview, 1, Scrollbars::vertical), - makeWidget({ 609, 46 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::rotate_object, StringIds::rotate_object_90), - makeWidget({ 609, 70 }, { 24, 24 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_object_colour), - makeWidget({ 609, 94 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::plant_cluster_selected_tree, StringIds::plant_cluster_selected_tree), - makeWidget({ 609, 118 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::plant_cluster_random_tree, StringIds::plant_cluster_random_tree), + makeWidget({ 3, 45 }, { 605, 101 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), + makeWidget({ 609, 46 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::rotate_object, StringIds::rotate_object_90), + makeWidget({ 609, 70 }, { 24, 24 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_object_colour), + makeWidget({ 609, 94 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::plant_cluster_selected_tree, StringIds::plant_cluster_selected_tree), + makeWidget({ 609, 118 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::plant_cluster_random_tree, StringIds::plant_cluster_random_tree), widgetEnd(), }; @@ -614,7 +614,7 @@ namespace OpenLoco::Ui::Windows::Terraform // 0x004BB982 static void drawScroll(Window* self, Gfx::Context* context, uint32_t scrollIndex) { - auto shade = Colour::getShade(self->colours[1], 3); + auto shade = Colour::getShade(self->getColour(WindowColour::secondary), 3); Gfx::clearSingle(*context, shade); uint16_t xPos = 0; @@ -627,13 +627,13 @@ namespace OpenLoco::Ui::Windows::Terraform if (self->row_info[i] == self->var_846) { _lastTreeColourFlag = Colour::translucent_flag; - Gfx::drawRectInset(context, xPos, yPos, 65, rowHeight - 1, self->colours[1], Colour::translucent_flag); + Gfx::drawRectInset(context, xPos, yPos, 65, rowHeight - 1, self->getColour(WindowColour::secondary), Colour::translucent_flag); } } else { _lastTreeColourFlag = Colour::translucent_flag | Colour::outline_flag; - Gfx::drawRectInset(context, xPos, yPos, 65, rowHeight - 1, self->colours[1], (Colour::translucent_flag | Colour::outline_flag)); + Gfx::drawRectInset(context, xPos, yPos, 65, rowHeight - 1, self->getColour(WindowColour::secondary), (Colour::translucent_flag | Colour::outline_flag)); } auto treeObj = ObjectManager::get(self->row_info[i]); @@ -713,7 +713,7 @@ namespace OpenLoco::Ui::Windows::Terraform window->max_height = PlantTrees::windowSize.height; auto skin = ObjectManager::get(); - window->colours[1] = skin->colour_0E; + window->setColour(WindowColour::secondary, skin->colour_0E); // End of 0x004BB586 @@ -760,9 +760,9 @@ namespace OpenLoco::Ui::Windows::Terraform Widget widgets[] = { commonWidgets(130, 105, StringIds::clear_area), - makeWidget({ 33 + 16, 45 }, { 64, 44 }, WidgetType::wt_3, 1, ImageIds::tool_area, StringIds::tooltip_clear_area), - makeWidget({ 34 + 16, 46 }, { 16, 16 }, WidgetType::wt_7, 1, Gfx::recolour(ImageIds::decrease_tool_area, Colour::white), StringIds::tooltip_decrease_clear_area), - makeWidget({ 80 + 16, 72 }, { 16, 16 }, WidgetType::wt_7, 1, Gfx::recolour(ImageIds::increase_tool_area, Colour::white), StringIds::tooltip_increase_clear_area), + makeWidget({ 33 + 16, 45 }, { 64, 44 }, WidgetType::wt_3, WindowColour::secondary, ImageIds::tool_area, StringIds::tooltip_clear_area), + makeWidget({ 34 + 16, 46 }, { 16, 16 }, WidgetType::wt_7, WindowColour::secondary, Gfx::recolour(ImageIds::decrease_tool_area, Colour::white), StringIds::tooltip_decrease_clear_area), + makeWidget({ 80 + 16, 72 }, { 16, 16 }, WidgetType::wt_7, WindowColour::secondary, Gfx::recolour(ImageIds::increase_tool_area, Colour::white), StringIds::tooltip_increase_clear_area), widgetEnd(), }; @@ -942,10 +942,10 @@ namespace OpenLoco::Ui::Windows::Terraform Widget widgets[] = { commonWidgets(130, 105, StringIds::title_adjust_land), - makeWidget({ 33 + 16, 45 }, { 64, 44 }, WidgetType::wt_3, 1, ImageIds::tool_area, StringIds::tooltip_adjust_land_tool), - makeWidget({ 34 + 16, 46 }, { 16, 16 }, WidgetType::wt_7, 1, Gfx::recolour(ImageIds::decrease_tool_area, Colour::white), StringIds::tooltip_decrease_adjust_land_area), - makeWidget({ 80 + 16, 72 }, { 16, 16 }, WidgetType::wt_7, 1, Gfx::recolour(ImageIds::increase_tool_area, Colour::white), StringIds::tooltip_increase_adjust_land_area), - makeWidget({ 55 + 16, 92 }, { 20, 20 }, WidgetType::wt_6, 0), + makeWidget({ 33 + 16, 45 }, { 64, 44 }, WidgetType::wt_3, WindowColour::secondary, ImageIds::tool_area, StringIds::tooltip_adjust_land_tool), + makeWidget({ 34 + 16, 46 }, { 16, 16 }, WidgetType::wt_7, WindowColour::secondary, Gfx::recolour(ImageIds::decrease_tool_area, Colour::white), StringIds::tooltip_decrease_adjust_land_area), + makeWidget({ 80 + 16, 72 }, { 16, 16 }, WidgetType::wt_7, WindowColour::secondary, Gfx::recolour(ImageIds::increase_tool_area, Colour::white), StringIds::tooltip_increase_adjust_land_area), + makeWidget({ 55 + 16, 92 }, { 20, 20 }, WidgetType::wt_6, WindowColour::primary), widgetEnd(), }; @@ -1004,7 +1004,7 @@ namespace OpenLoco::Ui::Windows::Terraform auto xPos = self->widgets[widgetIndex].left + self->x; auto yPos = self->widgets[widgetIndex].bottom + self->y; auto heightOffset = self->widgets[widgetIndex].height() - 18; - auto colour = self->colours[1] | 0x80; + auto colour = self->getColour(WindowColour::secondary) | 0x80; auto count = Dropdown::getItemsPerRow(landCount); Dropdown::showImage(xPos, yPos, 20, 20, heightOffset, colour, count, landCount); @@ -1373,9 +1373,9 @@ namespace OpenLoco::Ui::Windows::Terraform Widget widgets[] = { commonWidgets(130, 105, StringIds::title_adjust_water), - makeWidget({ 33 + 16, 45 }, { 64, 44 }, WidgetType::wt_3, 1, ImageIds::tool_area, StringIds::tooltip_adjust_water_tool), - makeWidget({ 34 + 16, 46 }, { 16, 16 }, WidgetType::wt_7, 1, Gfx::recolour(ImageIds::decrease_tool_area, Colour::white), StringIds::tooltip_decrease_adjust_water_area), - makeWidget({ 80 + 16, 72 }, { 16, 16 }, WidgetType::wt_7, 1, Gfx::recolour(ImageIds::increase_tool_area, Colour::white), StringIds::tooltip_increase_adjust_water_area), + makeWidget({ 33 + 16, 45 }, { 64, 44 }, WidgetType::wt_3, WindowColour::secondary, ImageIds::tool_area, StringIds::tooltip_adjust_water_tool), + makeWidget({ 34 + 16, 46 }, { 16, 16 }, WidgetType::wt_7, WindowColour::secondary, Gfx::recolour(ImageIds::decrease_tool_area, Colour::white), StringIds::tooltip_decrease_adjust_water_area), + makeWidget({ 80 + 16, 72 }, { 16, 16 }, WidgetType::wt_7, WindowColour::secondary, Gfx::recolour(ImageIds::increase_tool_area, Colour::white), StringIds::tooltip_increase_adjust_water_area), widgetEnd(), }; @@ -1612,7 +1612,7 @@ namespace OpenLoco::Ui::Windows::Terraform Widget widgets[] = { commonWidgets(418, 108, StringIds::title_build_walls), - makeWidget({ 2, 45 }, { 391, 48 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 2, 45 }, { 391, 48 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd(), }; @@ -1917,7 +1917,7 @@ namespace OpenLoco::Ui::Windows::Terraform // 0x004BC11C static void drawScroll(Window* self, Gfx::Context* context, uint32_t scrollIndex) { - auto shade = Colour::getShade(self->colours[1], 3); + auto shade = Colour::getShade(self->getColour(WindowColour::secondary), 3); Gfx::clearSingle(*context, shade); uint16_t xPos = 0; @@ -1928,12 +1928,12 @@ namespace OpenLoco::Ui::Windows::Terraform { if (self->row_info[i] == self->var_846) { - Gfx::drawRectInset(context, xPos, yPos, 40, rowHeight, self->colours[1], Colour::translucent_flag); + Gfx::drawRectInset(context, xPos, yPos, 40, rowHeight, self->getColour(WindowColour::secondary), Colour::translucent_flag); } } else { - Gfx::drawRectInset(context, xPos, yPos, 40, rowHeight, self->colours[1], (Colour::translucent_flag | Colour::outline_flag)); + Gfx::drawRectInset(context, xPos, yPos, 40, rowHeight, self->getColour(WindowColour::secondary), (Colour::translucent_flag | Colour::outline_flag)); } auto wallObj = ObjectManager::get(self->row_info[i]); diff --git a/src/OpenLoco/Windows/TextInputWindow.cpp b/src/OpenLoco/Windows/TextInputWindow.cpp index 392f8695..ca19dd40 100644 --- a/src/OpenLoco/Windows/TextInputWindow.cpp +++ b/src/OpenLoco/Windows/TextInputWindow.cpp @@ -56,12 +56,12 @@ namespace OpenLoco::Ui::Windows::TextInput } static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 330, 90 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 328, 13 }, WidgetType::caption_25, 0), - makeWidget({ 315, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 15 }, { 330, 75 }, WidgetType::panel, 1), - makeWidget({ 4, 58 }, { 322, 14 }, WidgetType::wt_17, 1), - makeTextWidget({ 256, 74 }, { 70, 12 }, WidgetType::wt_11, 1, StringIds::label_button_ok), + makeWidget({ 0, 0 }, { 330, 90 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 328, 13 }, WidgetType::caption_25, WindowColour::primary), + makeWidget({ 315, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 15 }, { 330, 75 }, WidgetType::panel, WindowColour::secondary), + makeWidget({ 4, 58 }, { 322, 14 }, WidgetType::wt_17, WindowColour::secondary), + makeTextWidget({ 256, 74 }, { 70, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::label_button_ok), widgetEnd(), }; @@ -146,22 +146,22 @@ namespace OpenLoco::Ui::Windows::TextInput caller = WindowManager::find(_callingWindowType, _callingWindowNumber); - window->colours[0] = caller->colours[0]; - window->colours[1] = caller->colours[1]; + window->setColour(WindowColour::primary, caller->getColour(WindowColour::primary)); + window->setColour(WindowColour::secondary, caller->getColour(WindowColour::secondary)); window->owner = caller->owner; if (caller->type == WindowType::titleMenu) { InterfaceSkinObject* interface = ObjectManager::get(); - window->colours[0] = interface->colour_0B; - window->colours[1] = interface->colour_0C; + window->setColour(WindowColour::primary, interface->colour_0B); + window->setColour(WindowColour::secondary, interface->colour_0C); window->owner = CompanyId::null; } if (caller->type == WindowType::timeToolbar) { InterfaceSkinObject* interface = ObjectManager::get(); - window->colours[1] = interface->colour_0A; + window->setColour(WindowColour::secondary, interface->colour_0A); window->owner = CompanyManager::getControllingId(); } @@ -268,7 +268,7 @@ namespace OpenLoco::Ui::Windows::TextInput *((string_id*)(&_commonFormatArgs[0])) = StringIds::buffer_2039; position = { inputSession.xOffset, 1 }; Gfx::drawString_494B3F(*clipped, &position, 0, StringIds::black_stringid, _commonFormatArgs); - Gfx::fillRect(clipped, position.x, position.y, position.x, position.y + 9, Colour::getShade(window->colours[1], 9)); + Gfx::fillRect(clipped, position.x, position.y, position.x, position.y + 9, Colour::getShade(window->getColour(WindowColour::secondary), 9)); } // 0x004CE8B6 diff --git a/src/OpenLoco/Windows/TileInspector.cpp b/src/OpenLoco/Windows/TileInspector.cpp index 51d72236..c6cd5619 100644 --- a/src/OpenLoco/Windows/TileInspector.cpp +++ b/src/OpenLoco/Windows/TileInspector.cpp @@ -60,15 +60,15 @@ namespace OpenLoco::Ui::Windows::TileInspector } static Widget _widgets[] = { - makeWidget({ 0, 0 }, windowSize, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { windowSize.width - 2, 13 }, WidgetType::caption_25, 0, StringIds::tile_inspector), - makeWidget({ windowSize.width - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 15 }, { windowSize.width, windowSize.height - 15 }, WidgetType::panel, 1), - makeStepperWidgets({ 19, 24 }, { 55, 12 }, WidgetType::wt_17, 1), - makeStepperWidgets({ 92, 24 }, { 55, 12 }, WidgetType::wt_17, 1), - makeWidget({ windowSize.width - 26, 18 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_new_position, StringIds::tile_inspector_select_btn_tooltip), - makeWidget({ 4, 46 }, { windowSize.width - 8, 100 }, WidgetType::scrollview, 1, Ui::Scrollbars::vertical), - makeWidget({ 4, 148 }, { windowSize.width - 8, 30 }, WidgetType::groupbox, 1, StringIds::tile_element_data), + makeWidget({ 0, 0 }, windowSize, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { windowSize.width - 2, 13 }, WidgetType::caption_25, WindowColour::primary, StringIds::tile_inspector), + makeWidget({ windowSize.width - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 15 }, { windowSize.width, windowSize.height - 15 }, WidgetType::panel, WindowColour::secondary), + makeStepperWidgets({ 19, 24 }, { 55, 12 }, WidgetType::wt_17, WindowColour::secondary), + makeStepperWidgets({ 92, 24 }, { 55, 12 }, WidgetType::wt_17, WindowColour::secondary), + makeWidget({ windowSize.width - 26, 18 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_new_position, StringIds::tile_inspector_select_btn_tooltip), + makeWidget({ 4, 46 }, { windowSize.width - 8, 100 }, WidgetType::scrollview, WindowColour::secondary, Ui::Scrollbars::vertical), + makeWidget({ 4, 148 }, { windowSize.width - 8, 30 }, WidgetType::groupbox, WindowColour::secondary, StringIds::tile_element_data), widgetEnd(), }; @@ -104,8 +104,8 @@ namespace OpenLoco::Ui::Windows::TileInspector window->initScrollWidgets(); auto skin = ObjectManager::get(); - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_0C; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_0C); activateMapSelectionTool(window); diff --git a/src/OpenLoco/Windows/TimePanel.cpp b/src/OpenLoco/Windows/TimePanel.cpp index 71a0379e..2c6b66c2 100644 --- a/src/OpenLoco/Windows/TimePanel.cpp +++ b/src/OpenLoco/Windows/TimePanel.cpp @@ -44,14 +44,14 @@ namespace OpenLoco::Ui::Windows::TimePanel static void changeGameSpeed(Window* w, uint8_t speed); static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 140, 29 }, WidgetType::wt_3, 0), // 0, - makeWidget({ 2, 2 }, { 136, 25 }, WidgetType::wt_3, 0), // 1, - makeWidget({ 113, 1 }, { 26, 26 }, WidgetType::wt_9, 0), // 2, - makeWidget({ 2, 2 }, { 111, 12 }, WidgetType::wt_9, 0, ImageIds::null, StringIds::tooltip_daymonthyear_challenge), // 3, - makeRemapWidget({ 18, 15 }, { 20, 12 }, WidgetType::wt_9, 0, ImageIds::speed_pause, StringIds::tooltip_speed_pause), // 4, - makeRemapWidget({ 38, 15 }, { 20, 12 }, WidgetType::wt_9, 0, ImageIds::speed_normal, StringIds::tooltip_speed_normal), // 5, - makeRemapWidget({ 58, 15 }, { 20, 12 }, WidgetType::wt_9, 0, ImageIds::speed_fast_forward, StringIds::tooltip_speed_fast_forward), // 6, - makeRemapWidget({ 78, 15 }, { 20, 12 }, WidgetType::wt_9, 0, ImageIds::speed_extra_fast_forward, StringIds::tooltip_speed_extra_fast_forward), // 7, + makeWidget({ 0, 0 }, { 140, 29 }, WidgetType::wt_3, WindowColour::primary), // 0, + makeWidget({ 2, 2 }, { 136, 25 }, WidgetType::wt_3, WindowColour::primary), // 1, + makeWidget({ 113, 1 }, { 26, 26 }, WidgetType::wt_9, WindowColour::primary), // 2, + makeWidget({ 2, 2 }, { 111, 12 }, WidgetType::wt_9, WindowColour::primary, ImageIds::null, StringIds::tooltip_daymonthyear_challenge), // 3, + makeRemapWidget({ 18, 15 }, { 20, 12 }, WidgetType::wt_9, WindowColour::primary, ImageIds::speed_pause, StringIds::tooltip_speed_pause), // 4, + makeRemapWidget({ 38, 15 }, { 20, 12 }, WidgetType::wt_9, WindowColour::primary, ImageIds::speed_normal, StringIds::tooltip_speed_normal), // 5, + makeRemapWidget({ 58, 15 }, { 20, 12 }, WidgetType::wt_9, WindowColour::primary, ImageIds::speed_fast_forward, StringIds::tooltip_speed_fast_forward), // 6, + makeRemapWidget({ 78, 15 }, { 20, 12 }, WidgetType::wt_9, WindowColour::primary, ImageIds::speed_extra_fast_forward, StringIds::tooltip_speed_extra_fast_forward), // 7, widgetEnd(), }; @@ -104,8 +104,8 @@ namespace OpenLoco::Ui::Windows::TimePanel auto skin = ObjectManager::get(); if (skin != nullptr) { - window->colours[0] = Colour::translucent(skin->colour_17); - window->colours[1] = Colour::translucent(skin->colour_17); + window->setColour(WindowColour::primary, Colour::translucent(skin->colour_17)); + window->setColour(WindowColour::secondary, Colour::translucent(skin->colour_17)); } return window; @@ -180,7 +180,7 @@ namespace OpenLoco::Ui::Windows::TimePanel // Draw widgets. self->draw(context); - Gfx::drawRectInset(context, self->x + frame.left + 1, self->y + frame.top + 1, frame.width() - 2, frame.height() - 2, self->colours[1], 0x30); + Gfx::drawRectInset(context, self->x + frame.left + 1, self->y + frame.top + 1, frame.width() - 2, frame.height() - 2, self->getColour(WindowColour::secondary), 0x30); *(uint32_t*)&_common_format_args[0] = getCurrentDay(); string_id format = StringIds::date_monthyear; @@ -193,7 +193,7 @@ namespace OpenLoco::Ui::Windows::TimePanel } } - Colour_t c = Colour::opaque(self->colours[0]); + Colour_t c = Colour::opaque(self->getColour(WindowColour::primary)); if (Input::isHovering(WindowType::timeToolbar, 0, Widx::date_btn)) { c = Colour::white; diff --git a/src/OpenLoco/Windows/TitleExit.cpp b/src/OpenLoco/Windows/TitleExit.cpp index 84eb8a18..2da63730 100644 --- a/src/OpenLoco/Windows/TitleExit.cpp +++ b/src/OpenLoco/Windows/TitleExit.cpp @@ -24,7 +24,7 @@ namespace OpenLoco::Ui::Windows::TitleExit } static Widget _widgets[] = { - makeWidget({ 0, 0 }, window_size, WidgetType::wt_9, 1, -1, StringIds::title_menu_exit_from_game), + makeWidget({ 0, 0 }, window_size, WidgetType::wt_9, WindowColour::secondary, -1, StringIds::title_menu_exit_from_game), widgetEnd(), }; @@ -52,8 +52,8 @@ namespace OpenLoco::Ui::Windows::TitleExit window->initScrollWidgets(); - window->colours[0] = Colour::translucent(Colour::saturated_green); - window->colours[1] = Colour::translucent(Colour::saturated_green); + window->setColour(WindowColour::primary, Colour::translucent(Colour::saturated_green)); + window->setColour(WindowColour::secondary, Colour::translucent(Colour::saturated_green)); return window; } diff --git a/src/OpenLoco/Windows/TitleLogo.cpp b/src/OpenLoco/Windows/TitleLogo.cpp index 17d7d8da..3dd70df8 100644 --- a/src/OpenLoco/Windows/TitleLogo.cpp +++ b/src/OpenLoco/Windows/TitleLogo.cpp @@ -20,7 +20,7 @@ namespace OpenLoco::Ui::Windows::TitleLogo } static Widget _widgets[] = { - makeWidget({ 0, 0 }, window_size, WidgetType::wt_3, 0), + makeWidget({ 0, 0 }, window_size, WidgetType::wt_3, WindowColour::primary), widgetEnd(), }; @@ -46,8 +46,8 @@ namespace OpenLoco::Ui::Windows::TitleLogo window->initScrollWidgets(); - window->colours[0] = Colour::translucent(Colour::grey); - window->colours[1] = Colour::translucent(Colour::grey); + window->setColour(WindowColour::primary, Colour::translucent(Colour::grey)); + window->setColour(WindowColour::secondary, Colour::translucent(Colour::grey)); return window; } diff --git a/src/OpenLoco/Windows/TitleMenu.cpp b/src/OpenLoco/Windows/TitleMenu.cpp index 105299bb..6ab15a0e 100644 --- a/src/OpenLoco/Windows/TitleMenu.cpp +++ b/src/OpenLoco/Windows/TitleMenu.cpp @@ -113,12 +113,12 @@ namespace OpenLoco::Ui::Windows::TitleMenu } static Widget _widgets[] = { - makeWidget({ 0, 0 }, { btn_main_size, btn_main_size }, WidgetType::wt_9, 1, StringIds::null, StringIds::title_menu_new_game), - makeWidget({ btn_main_size, 0 }, { btn_main_size, btn_main_size }, WidgetType::wt_9, 1, StringIds::null, StringIds::title_menu_load_game), - makeWidget({ btn_main_size * 2, 0 }, { btn_main_size, btn_main_size }, WidgetType::wt_9, 1, StringIds::null, StringIds::title_menu_show_tutorial), - makeWidget({ btn_main_size * 3, 0 }, { btn_main_size, btn_main_size }, WidgetType::wt_9, 1, StringIds::null, StringIds::title_menu_scenario_editor), - makeWidget({ btn_main_size * 4 - 31, btn_main_size - 27 }, { 31, 27 }, WidgetType::wt_9, 1, StringIds::null, StringIds::title_menu_chat_tooltip), - makeWidget({ 0, btn_main_size }, { ww, btn_sub_height }, WidgetType::none, 1, StringIds::null, StringIds::title_multiplayer_toggle_tooltip), + makeWidget({ 0, 0 }, { btn_main_size, btn_main_size }, WidgetType::wt_9, WindowColour::secondary, StringIds::null, StringIds::title_menu_new_game), + makeWidget({ btn_main_size, 0 }, { btn_main_size, btn_main_size }, WidgetType::wt_9, WindowColour::secondary, StringIds::null, StringIds::title_menu_load_game), + makeWidget({ btn_main_size * 2, 0 }, { btn_main_size, btn_main_size }, WidgetType::wt_9, WindowColour::secondary, StringIds::null, StringIds::title_menu_show_tutorial), + makeWidget({ btn_main_size * 3, 0 }, { btn_main_size, btn_main_size }, WidgetType::wt_9, WindowColour::secondary, StringIds::null, StringIds::title_menu_scenario_editor), + makeWidget({ btn_main_size * 4 - 31, btn_main_size - 27 }, { 31, 27 }, WidgetType::wt_9, WindowColour::secondary, StringIds::null, StringIds::title_menu_chat_tooltip), + makeWidget({ 0, btn_main_size }, { ww, btn_sub_height }, WidgetType::none, WindowColour::secondary, StringIds::null, StringIds::title_multiplayer_toggle_tooltip), widgetEnd(), }; @@ -168,8 +168,8 @@ namespace OpenLoco::Ui::Windows::TitleMenu window->initScrollWidgets(); - window->colours[0] = Colour::translucent(Colour::saturated_green); - window->colours[1] = Colour::translucent(Colour::saturated_green); + window->setColour(WindowColour::primary, Colour::translucent(Colour::saturated_green)); + window->setColour(WindowColour::secondary, Colour::translucent(Colour::saturated_green)); window->var_846 = 0; return window; @@ -411,7 +411,7 @@ namespace OpenLoco::Ui::Windows::TitleMenu window->y + widget->top, widget->width(), widget->height(), - Colour::translucent(window->colours[0]), + Colour::translucent(window->getColour(WindowColour::primary)), 3, 0x80); } diff --git a/src/OpenLoco/Windows/TitleOptions.cpp b/src/OpenLoco/Windows/TitleOptions.cpp index 1e66801a..3ef421e1 100644 --- a/src/OpenLoco/Windows/TitleOptions.cpp +++ b/src/OpenLoco/Windows/TitleOptions.cpp @@ -24,7 +24,7 @@ namespace OpenLoco::Ui::Windows::TitleOptions } static Widget _widgets[] = { - makeWidget({ 0, 0 }, window_size, WidgetType::wt_9, 1, -1), + makeWidget({ 0, 0 }, window_size, WidgetType::wt_9, WindowColour::secondary, -1), widgetEnd(), }; @@ -50,8 +50,8 @@ namespace OpenLoco::Ui::Windows::TitleOptions window->initScrollWidgets(); - window->colours[0] = Colour::translucent(Colour::saturated_green); - window->colours[1] = Colour::translucent(Colour::saturated_green); + window->setColour(WindowColour::primary, Colour::translucent(Colour::saturated_green)); + window->setColour(WindowColour::secondary, Colour::translucent(Colour::saturated_green)); return window; } diff --git a/src/OpenLoco/Windows/TitleVersion.cpp b/src/OpenLoco/Windows/TitleVersion.cpp index aae5414b..397056c2 100644 --- a/src/OpenLoco/Windows/TitleVersion.cpp +++ b/src/OpenLoco/Windows/TitleVersion.cpp @@ -11,7 +11,7 @@ using namespace OpenLoco::Interop; namespace OpenLoco::Ui::Windows::TitleVersion { static Widget widgets[] = { - { WidgetType::end, 0, 0, 0, 0, 0, { 0 }, 0 } + widgetEnd() }; static Ui::WindowEventList _events; diff --git a/src/OpenLoco/Windows/ToolTip.cpp b/src/OpenLoco/Windows/ToolTip.cpp index b05d89c2..2df7f0f5 100644 --- a/src/OpenLoco/Windows/ToolTip.cpp +++ b/src/OpenLoco/Windows/ToolTip.cpp @@ -40,7 +40,7 @@ namespace OpenLoco::Ui::Windows::ToolTip // 0x005234CC Widget _widgets[] = { - makeWidget({ 0, 0 }, { 200, 32 }, WidgetType::wt_3, 0), + makeWidget({ 0, 0 }, { 200, 32 }, WidgetType::wt_3, WindowColour::primary), widgetEnd(), }; diff --git a/src/OpenLoco/Windows/ToolbarBottomEditor.cpp b/src/OpenLoco/Windows/ToolbarBottomEditor.cpp index 152a68d5..3175a59e 100644 --- a/src/OpenLoco/Windows/ToolbarBottomEditor.cpp +++ b/src/OpenLoco/Windows/ToolbarBottomEditor.cpp @@ -20,10 +20,10 @@ namespace OpenLoco::Ui::Windows::ToolbarBottom::Editor static WindowEventList _events; static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 200, 34 }, WidgetType::wt_3, 0), - makeWidget({ 2, 2 }, { 196, 30 }, WidgetType::wt_9, 0), - makeWidget({ 440, 0 }, { 200, 34 }, WidgetType::wt_3, 0), - makeWidget({ 442, 2 }, { 196, 30 }, WidgetType::wt_9, 0), + makeWidget({ 0, 0 }, { 200, 34 }, WidgetType::wt_3, WindowColour::primary), + makeWidget({ 2, 2 }, { 196, 30 }, WidgetType::wt_9, WindowColour::primary), + makeWidget({ 440, 0 }, { 200, 34 }, WidgetType::wt_3, WindowColour::primary), + makeWidget({ 442, 2 }, { 196, 30 }, WidgetType::wt_9, WindowColour::primary), widgetEnd(), }; @@ -76,18 +76,18 @@ namespace OpenLoco::Ui::Windows::ToolbarBottom::Editor if (EditorController::canGoBack()) { - Gfx::drawRectInset(ctx, previous.left + self->x + 1, previous.top + self->y + 1, previous.width() - 2, previous.height() - 2, self->colours[1], 0x30); + Gfx::drawRectInset(ctx, previous.left + self->x + 1, previous.top + self->y + 1, previous.width() - 2, previous.height() - 2, self->getColour(WindowColour::secondary), 0x30); } - Gfx::drawRectInset(ctx, next.left + self->x + 1, next.top + self->y + 1, next.width() - 2, next.height() - 2, self->colours[1], 0x30); + Gfx::drawRectInset(ctx, next.left + self->x + 1, next.top + self->y + 1, next.width() - 2, next.height() - 2, self->getColour(WindowColour::secondary), 0x30); - Gfx::drawStringCentred(*ctx, (previous.right + next.left) / 2 + self->x, self->y + self->height - 12, Colour::opaque(self->colours[2]) | Colour::outline_flag, _stepNames[EditorController::getCurrentStep()]); + Gfx::drawStringCentred(*ctx, (previous.right + next.left) / 2 + self->x, self->y + self->height - 12, Colour::opaque(self->getColour(WindowColour::tertiary)) | Colour::outline_flag, _stepNames[EditorController::getCurrentStep()]); if (EditorController::canGoBack()) { Gfx::drawImage(ctx, self->x + previous.left + 6, self->y + previous.top + 6, ImageIds::step_back); int x = (previous.left + 30 + previous.right) / 2; int y = previous.top + 6; - Colour_t textColour = Colour::opaque(self->colours[1]); + Colour_t textColour = Colour::opaque(self->getColour(WindowColour::secondary)); if (Input::isHovering(self->type, self->number, widx::previous_button)) { textColour = Colour::white; @@ -98,7 +98,7 @@ namespace OpenLoco::Ui::Windows::ToolbarBottom::Editor Gfx::drawImage(ctx, self->x + next.right - 29, self->y + next.top + 4, ImageIds::step_forward); int x = next.left + (next.width() - 31) / 2; int y = next.top + 6; - Colour_t textColour = Colour::opaque(self->colours[1]); + Colour_t textColour = Colour::opaque(self->getColour(WindowColour::secondary)); if (Input::isHovering(self->type, self->number, widx::next_button)) { textColour = Colour::white; @@ -139,9 +139,9 @@ namespace OpenLoco::Ui::Windows::ToolbarBottom::Editor window->enabled_widgets = 1 << widx::previous_button | 1 << widx::previous_frame | 1 << widx::next_frame | 1 << widx::next_button; window->var_854 = 0; window->initScrollWidgets(); - window->colours[0] = Colour::translucent(Colour::saturated_green); - window->colours[1] = Colour::translucent(Colour::saturated_green); - window->colours[2] = Colour::translucent(Colour::saturated_green); + window->setColour(WindowColour::primary, Colour::translucent(Colour::saturated_green)); + window->setColour(WindowColour::secondary, Colour::translucent(Colour::saturated_green)); + window->setColour(WindowColour::tertiary, Colour::translucent(Colour::saturated_green)); } static void initEvents() diff --git a/src/OpenLoco/Windows/ToolbarTop.cpp b/src/OpenLoco/Windows/ToolbarTop.cpp index a2ec0a71..d4b110a6 100644 --- a/src/OpenLoco/Windows/ToolbarTop.cpp +++ b/src/OpenLoco/Windows/ToolbarTop.cpp @@ -53,23 +53,23 @@ namespace OpenLoco::Ui::Windows::ToolbarTop::Game } static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 30, 28 }, WidgetType::wt_7, 0), - makeWidget({ 30, 0 }, { 30, 28 }, WidgetType::wt_7, 0), - makeWidget({ 60, 0 }, { 30, 28 }, WidgetType::wt_7, 0), + makeWidget({ 0, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::primary), + makeWidget({ 30, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::primary), + makeWidget({ 60, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::primary), - makeWidget({ 104, 0 }, { 30, 28 }, WidgetType::wt_7, 1), - makeWidget({ 134, 0 }, { 30, 28 }, WidgetType::wt_7, 1), - makeWidget({ 164, 0 }, { 30, 28 }, WidgetType::wt_7, 1), + makeWidget({ 104, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::secondary), + makeWidget({ 134, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::secondary), + makeWidget({ 164, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::secondary), - makeWidget({ 267, 0 }, { 30, 28 }, WidgetType::wt_7, 2), - makeWidget({ 387, 0 }, { 30, 28 }, WidgetType::wt_7, 2), - makeWidget({ 357, 0 }, { 30, 28 }, WidgetType::wt_7, 2), - makeWidget({ 417, 0 }, { 30, 28 }, WidgetType::wt_7, 2), - makeWidget({ 417, 0 }, { 30, 28 }, WidgetType::wt_7, 2), + makeWidget({ 267, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::tertiary), + makeWidget({ 387, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::tertiary), + makeWidget({ 357, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::tertiary), + makeWidget({ 417, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::tertiary), + makeWidget({ 417, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::tertiary), - makeWidget({ 490, 0 }, { 30, 28 }, WidgetType::wt_7, 3), - makeWidget({ 520, 0 }, { 30, 28 }, WidgetType::wt_7, 3), - makeWidget({ 460, 0 }, { 30, 28 }, WidgetType::wt_7, 3), + makeWidget({ 490, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::quaternary), + makeWidget({ 520, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::quaternary), + makeWidget({ 460, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::quaternary), widgetEnd(), }; @@ -108,10 +108,10 @@ namespace OpenLoco::Ui::Windows::ToolbarTop::Game auto skin = ObjectManager::get(); if (skin != nullptr) { - window->colours[0] = skin->colour_12; - window->colours[1] = skin->colour_13; - window->colours[2] = skin->colour_14; - window->colours[3] = skin->colour_15; + window->setColour(WindowColour::primary, skin->colour_12); + window->setColour(WindowColour::secondary, skin->colour_13); + window->setColour(WindowColour::tertiary, skin->colour_14); + window->setColour(WindowColour::quaternary, skin->colour_15); } } @@ -713,7 +713,7 @@ namespace OpenLoco::Ui::Windows::ToolbarTop::Game } auto interface = ObjectManager::get(); - uint32_t bg_image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_empty_transparent, window->colours[2]); + uint32_t bg_image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_empty_transparent, window->getColour(WindowColour::tertiary)); y--; if (Input::isDropdownActive(Ui::WindowType::topToolbar, Common::Widx::railroad_menu)) @@ -743,7 +743,7 @@ namespace OpenLoco::Ui::Windows::ToolbarTop::Game auto interface = ObjectManager::get(); uint32_t fg_image = Gfx::recolour(interface->img + button_face_image_ids[static_cast(*last_vehicles_option)], company_colour); - uint32_t bg_image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_empty_transparent, window->colours[3]); + uint32_t bg_image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_empty_transparent, window->getColour(WindowColour::quaternary)); y--; if (Input::isDropdownActive(Ui::WindowType::topToolbar, Common::Widx::vehicles_menu)) @@ -790,12 +790,12 @@ namespace OpenLoco::Ui::Windows::ToolbarTop::Game if (!Audio::isAudioEnabled()) { window->activated_widgets |= (1 << Common::Widx::audio_menu); - window->widgets[Common::Widx::audio_menu].image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_audio_inactive, window->colours[0]); + window->widgets[Common::Widx::audio_menu].image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_audio_inactive, window->getColour(WindowColour::primary)); } else { window->activated_widgets &= ~(1 << Common::Widx::audio_menu); - window->widgets[Common::Widx::audio_menu].image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_audio_active, window->colours[0]); + window->widgets[Common::Widx::audio_menu].image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_audio_active, window->getColour(WindowColour::primary)); } if (Config::getNew().cheats_menu_enabled) diff --git a/src/OpenLoco/Windows/ToolbarTopAlt.cpp b/src/OpenLoco/Windows/ToolbarTopAlt.cpp index 7158aff1..9f3cfdc7 100644 --- a/src/OpenLoco/Windows/ToolbarTopAlt.cpp +++ b/src/OpenLoco/Windows/ToolbarTopAlt.cpp @@ -41,23 +41,23 @@ namespace OpenLoco::Ui::Windows::ToolbarTop::Editor } static Widget _widgets[] = { - makeWidget({ 0, 0 }, { 30, 28 }, WidgetType::wt_7, 0), // 0 - makeWidget({ 30, 0 }, { 30, 28 }, WidgetType::wt_7, 0), // 1 - makeWidget({ 60, 0 }, { 30, 28 }, WidgetType::wt_7, 0), // 2 + makeWidget({ 0, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::primary), // 0 + makeWidget({ 30, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::primary), // 1 + makeWidget({ 60, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::primary), // 2 - makeWidget({ 104, 0 }, { 30, 28 }, WidgetType::wt_7, 1), // 3 - makeWidget({ 134, 0 }, { 30, 28 }, WidgetType::wt_7, 1), // 4 - makeWidget({ 164, 0 }, { 30, 28 }, WidgetType::wt_7, 1), // 5 + makeWidget({ 104, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::secondary), // 3 + makeWidget({ 134, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::secondary), // 4 + makeWidget({ 164, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::secondary), // 5 - makeWidget({ 267, 0 }, { 30, 28 }, WidgetType::wt_7, 2), // 6 - makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, 0), // 7 - makeWidget({ 357, 0 }, { 30, 28 }, WidgetType::wt_7, 2), // 8 - makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, 0), // 9 - makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, 0), // 10 + makeWidget({ 267, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::tertiary), // 6 + makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, WindowColour::primary), // 7 + makeWidget({ 357, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::tertiary), // 8 + makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, WindowColour::primary), // 9 + makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, WindowColour::primary), // 10 - makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, 0), // 11 - makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, 0), // 12 - makeWidget({ 460, 0 }, { 30, 28 }, WidgetType::wt_7, 3), // 13 + makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, WindowColour::primary), // 11 + makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, WindowColour::primary), // 12 + makeWidget({ 460, 0 }, { 30, 28 }, WidgetType::wt_7, WindowColour::quaternary), // 13 widgetEnd(), }; @@ -92,18 +92,18 @@ namespace OpenLoco::Ui::Windows::ToolbarTop::Editor window->widgets = _widgets; window->enabled_widgets = (1 << Common::Widx::loadsave_menu) | (1 << Common::Widx::audio_menu) | (1 << Common::Widx::zoom_menu) | (1 << Common::Widx::rotate_menu) | (1 << Common::Widx::view_menu) | (1 << Common::Widx::terraform_menu) | (1 << Widx::map_generation_menu) | (1 << Common::Widx::road_menu) | (1 << Common::Widx::towns_menu); window->initScrollWidgets(); - window->colours[0] = Colour::grey; - window->colours[1] = Colour::grey; - window->colours[2] = Colour::grey; - window->colours[3] = Colour::grey; + window->setColour(WindowColour::primary, Colour::grey); + window->setColour(WindowColour::secondary, Colour::grey); + window->setColour(WindowColour::tertiary, Colour::grey); + window->setColour(WindowColour::quaternary, Colour::grey); auto skin = ObjectManager::get(); if (skin != nullptr) { - window->colours[0] = skin->colour_12; - window->colours[1] = skin->colour_13; - window->colours[2] = skin->colour_14; - window->colours[3] = skin->colour_15; + window->setColour(WindowColour::primary, skin->colour_12); + window->setColour(WindowColour::secondary, skin->colour_13); + window->setColour(WindowColour::tertiary, skin->colour_14); + window->setColour(WindowColour::quaternary, skin->colour_15); } } @@ -303,12 +303,12 @@ namespace OpenLoco::Ui::Windows::ToolbarTop::Editor if (!Audio::isAudioEnabled()) { window->activated_widgets |= (1 << Common::Widx::audio_menu); - window->widgets[Common::Widx::audio_menu].image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_audio_inactive, window->colours[0]); + window->widgets[Common::Widx::audio_menu].image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_audio_inactive, window->getColour(WindowColour::primary)); } else { window->activated_widgets &= ~(1 << Common::Widx::audio_menu); - window->widgets[Common::Widx::audio_menu].image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_audio_active, window->colours[0]); + window->widgets[Common::Widx::audio_menu].image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_audio_active, window->getColour(WindowColour::primary)); } window->widgets[Common::Widx::loadsave_menu].image = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_loadsave, 0); diff --git a/src/OpenLoco/Windows/ToolbarTopCommon.cpp b/src/OpenLoco/Windows/ToolbarTopCommon.cpp index 17df6f48..45154a51 100644 --- a/src/OpenLoco/Windows/ToolbarTopCommon.cpp +++ b/src/OpenLoco/Windows/ToolbarTopCommon.cpp @@ -64,7 +64,7 @@ namespace OpenLoco::Ui::Windows::ToolbarTop::Common y--; auto interface = ObjectManager::get(); - uint32_t bgImage = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_empty_transparent, self->colours[2]); + uint32_t bgImage = Gfx::recolour(interface->img + InterfaceSkin::ImageIds::toolbar_empty_transparent, self->getColour(WindowColour::tertiary)); if (Input::isDropdownActive(Ui::WindowType::topToolbar, Widx::road_menu)) { diff --git a/src/OpenLoco/Windows/TownList.cpp b/src/OpenLoco/Windows/TownList.cpp index 72abbc77..c089aa06 100644 --- a/src/OpenLoco/Windows/TownList.cpp +++ b/src/OpenLoco/Windows/TownList.cpp @@ -47,15 +47,15 @@ namespace OpenLoco::Ui::Windows::TownList const uint64_t enabledWidgets = (1 << widx::close_button) | (1 << widx::tab_town_list) | (1 << widx::tab_build_town) | (1 << widx::tab_build_buildings) | (1 << widx::tab_build_misc_buildings); -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, 0, windowCaptionId), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { frameWidth, 155 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_town_list), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_build_town), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_build_buildings), \ - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_build_misc_buildings) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, WindowColour::primary, windowCaptionId), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { frameWidth, 155 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_town_list), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_build_town), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_build_buildings), \ + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_build_misc_buildings) static void prepareDraw(Window* self); static void repositionTabs(Window* self); @@ -87,11 +87,11 @@ namespace OpenLoco::Ui::Windows::TownList Widget widgets[] = { commonWidgets(600, 197, StringIds::title_towns), - makeWidget({ 4, 43 }, { 200, 12 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::tooltip_sort_by_name), - makeWidget({ 204, 43 }, { 80, 12 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::tooltip_sort_town_type), - makeWidget({ 284, 43 }, { 70, 12 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::tooltip_sort_population), - makeWidget({ 354, 43 }, { 70, 12 }, WidgetType::wt_14, 1, ImageIds::null, StringIds::tooltip_sort_stations), - makeWidget({ 3, 56 }, { 594, 126 }, WidgetType::scrollview, 1, 2), + makeWidget({ 4, 43 }, { 200, 12 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::tooltip_sort_by_name), + makeWidget({ 204, 43 }, { 80, 12 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::tooltip_sort_town_type), + makeWidget({ 284, 43 }, { 70, 12 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::tooltip_sort_population), + makeWidget({ 354, 43 }, { 70, 12 }, WidgetType::wt_14, WindowColour::secondary, ImageIds::null, StringIds::tooltip_sort_stations), + makeWidget({ 3, 56 }, { 594, 126 }, WidgetType::scrollview, WindowColour::secondary, 2), widgetEnd(), }; @@ -137,7 +137,7 @@ namespace OpenLoco::Ui::Windows::TownList // 0x0049A0F8 static void drawScroll(Ui::Window* self, Gfx::Context* context, uint32_t scrollIndex) { - auto shade = Colour::getShade(self->colours[1], 3); + auto shade = Colour::getShade(self->getColour(WindowColour::secondary), 3); Gfx::clearSingle(*context, shade); uint16_t yPos = 0; @@ -549,8 +549,8 @@ namespace OpenLoco::Ui::Windows::TownList window->flags |= WindowFlags::resizable; auto skin = ObjectManager::get(); - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_0C; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_0C); // 0x00499CFC end @@ -594,8 +594,8 @@ namespace OpenLoco::Ui::Windows::TownList Widget widgets[] = { commonWidgets(220, 87, StringIds::title_build_new_towns), - makeWidget({ 100, 45 }, { 117, 12 }, WidgetType::wt_18, 1, ImageIds::null, StringIds::tooltip_select_town_size), - makeWidget({ 205, 46 }, { 11, 10 }, WidgetType::wt_11, 1, StringIds::dropdown), + makeWidget({ 100, 45 }, { 117, 12 }, WidgetType::wt_18, WindowColour::secondary, ImageIds::null, StringIds::tooltip_select_town_size), + makeWidget({ 205, 46 }, { 11, 10 }, WidgetType::wt_11, WindowColour::secondary, StringIds::dropdown), widgetEnd(), }; @@ -782,9 +782,9 @@ namespace OpenLoco::Ui::Windows::TownList Widget widgets[] = { commonWidgets(640, 172, StringIds::title_build_new_buildings), - makeWidget({ 2, 45 }, { 573, 112 }, WidgetType::scrollview, 1, 2), - makeWidget({ 575, 46 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::rotate_object, StringIds::rotate_object_90), - makeWidget({ 579, 91 }, { 16, 16 }, WidgetType::wt_10, 1, ImageIds::null, StringIds::tooltip_object_colour), + makeWidget({ 2, 45 }, { 573, 112 }, WidgetType::scrollview, WindowColour::secondary, 2), + makeWidget({ 575, 46 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::rotate_object, StringIds::rotate_object_90), + makeWidget({ 579, 91 }, { 16, 16 }, WidgetType::wt_10, WindowColour::secondary, ImageIds::null, StringIds::tooltip_object_colour), widgetEnd(), }; @@ -1053,7 +1053,7 @@ namespace OpenLoco::Ui::Windows::TownList // 0x0049AA1C static void drawScroll(Ui::Window* self, Gfx::Context* context, uint32_t scrollIndex) { - auto shade = Colour::getShade(self->colours[1], 3); + auto shade = Colour::getShade(self->getColour(WindowColour::secondary), 3); Gfx::clearSingle(*context, shade); uint16_t xPos = 0; @@ -1064,12 +1064,12 @@ namespace OpenLoco::Ui::Windows::TownList { if (self->row_info[i] == self->var_846) { - Gfx::drawRectInset(context, xPos, yPos, 112, 112, self->colours[1], Colour::translucent_flag); + Gfx::drawRectInset(context, xPos, yPos, 112, 112, self->getColour(WindowColour::secondary), Colour::translucent_flag); } } else { - Gfx::drawRectInset(context, xPos, yPos, 112, 112, self->colours[1], (Colour::translucent_flag | Colour::outline_flag)); + Gfx::drawRectInset(context, xPos, yPos, 112, 112, self->getColour(WindowColour::secondary), (Colour::translucent_flag | Colour::outline_flag)); } auto buildingObj = ObjectManager::get(self->row_info[i]); diff --git a/src/OpenLoco/Windows/TownWindow.cpp b/src/OpenLoco/Windows/TownWindow.cpp index f50876fb..bc018a2e 100644 --- a/src/OpenLoco/Windows/TownWindow.cpp +++ b/src/OpenLoco/Windows/TownWindow.cpp @@ -45,14 +45,14 @@ namespace OpenLoco::Ui::Windows::Town const uint64_t enabledWidgets = (1 << widx::caption) | (1 << widx::close_button) | (1 << widx::tab_town) | (1 << widx::tab_population) | (1 << widx::tab_company_ratings); -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, 0, windowCaptionId), \ - makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { frameWidth, 120 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_town), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_population_graph), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_town_ratings_each_company) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { frameWidth, frameHeight }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { frameWidth - 2, 13 }, WidgetType::caption_25, WindowColour::primary, windowCaptionId), \ + makeWidget({ frameWidth - 15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { frameWidth, 120 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_town), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_population_graph), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_town_ratings_each_company) // Defined at the bottom of this file. static void prepareDraw(Window* self); @@ -78,11 +78,11 @@ namespace OpenLoco::Ui::Windows::Town static Widget widgets[] = { commonWidgets(223, 161, StringIds::title_town), - makeWidget({ 3, 44 }, { 195, 104 }, WidgetType::viewport, 1, 0xFFFFFFFE), - makeWidget({ 3, 139 }, { 195, 21 }, WidgetType::wt_13, 1), - makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::null, StringIds::move_main_view_to_show_this), - makeWidget({ 198, 44 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::town_expand, StringIds::expand_this_town), - makeWidget({ 198, 68 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::rubbish_bin, StringIds::demolish_this_town), + makeWidget({ 3, 44 }, { 195, 104 }, WidgetType::viewport, WindowColour::secondary, 0xFFFFFFFE), + makeWidget({ 3, 139 }, { 195, 21 }, WidgetType::wt_13, WindowColour::secondary), + makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::null, StringIds::move_main_view_to_show_this), + makeWidget({ 198, 44 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::town_expand, StringIds::expand_this_town), + makeWidget({ 198, 68 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::rubbish_bin, StringIds::demolish_this_town), widgetEnd(), }; @@ -353,8 +353,8 @@ namespace OpenLoco::Ui::Windows::Town auto skin = ObjectManager::get(); if (skin != nullptr) { - window->colours[0] = skin->colour_0B; - window->colours[1] = skin->colour_0C; + window->setColour(WindowColour::primary, skin->colour_0B); + window->setColour(WindowColour::secondary, skin->colour_0C); } // 0x00499C0D end @@ -414,7 +414,7 @@ namespace OpenLoco::Ui::Windows::Town args.push(yTick); const uint16_t xPos = 39; - Gfx::drawRect(clipped, xPos, yPos, 241, 1, Colour::getShade(self->colours[1], 4)); + Gfx::drawRect(clipped, xPos, yPos, 241, 1, Colour::getShade(self->getColour(WindowColour::secondary), 4)); Gfx::drawString_494C78(*clipped, xPos, yPos - 6, Colour::black, StringIds::population_graph_people, &args); @@ -441,7 +441,7 @@ namespace OpenLoco::Ui::Windows::Town Gfx::drawStringCentred(*clipped, xPos, yPos, Colour::black, StringIds::population_graph_year, &args); } - Gfx::drawRect(clipped, xPos, 11, 1, self->height - 66, Colour::getShade(self->colours[1], 4)); + Gfx::drawRect(clipped, xPos, 11, 1, self->height - 66, Colour::getShade(self->getColour(WindowColour::secondary), 4)); } // Draw population graph @@ -450,7 +450,7 @@ namespace OpenLoco::Ui::Windows::Town // Do not draw current segment yet; it may be zeroed. if (i < town->history_size - 1) - Gfx::drawLine(clipped, xPos, yPos1, xPos + 1, yPos2, Colour::getShade(self->colours[1], 7)); + Gfx::drawLine(clipped, xPos, yPos1, xPos + 1, yPos2, Colour::getShade(self->getColour(WindowColour::secondary), 7)); month--; if (month < 0) @@ -758,7 +758,7 @@ namespace OpenLoco::Ui::Windows::Town InterfaceSkin::ImageIds::tab_population_frame7, }; - uint32_t imageId = Gfx::recolour(skin->img, self->colours[1]); + uint32_t imageId = Gfx::recolour(skin->img, self->getColour(WindowColour::secondary)); if (self->current_tab == widx::tab_population - widx::tab_town) imageId += populationTabImageIds[(self->frame_no / 4) % std::size(populationTabImageIds)]; else diff --git a/src/OpenLoco/Windows/Tutorial.cpp b/src/OpenLoco/Windows/Tutorial.cpp index 482d017a..1d1b496d 100644 --- a/src/OpenLoco/Windows/Tutorial.cpp +++ b/src/OpenLoco/Windows/Tutorial.cpp @@ -19,7 +19,7 @@ namespace OpenLoco::Ui::Windows::Tutorial constexpr Gfx::ui_size_t windowSize = { 140, 29 }; Widget widgets[] = { - makeWidget({ 0, 0 }, windowSize, WidgetType::wt_3, 0), + makeWidget({ 0, 0 }, windowSize, WidgetType::wt_3, WindowColour::primary), widgetEnd(), }; @@ -45,8 +45,8 @@ namespace OpenLoco::Ui::Windows::Tutorial auto skin = ObjectManager::get(); if (skin != nullptr) { - window->colours[0] = Colour::translucent(skin->colour_06); - window->colours[1] = Colour::translucent(skin->colour_07); + window->setColour(WindowColour::primary, Colour::translucent(skin->colour_06)); + window->setColour(WindowColour::secondary, Colour::translucent(skin->colour_07)); } return window; diff --git a/src/OpenLoco/Windows/Vehicle.cpp b/src/OpenLoco/Windows/Vehicle.cpp index 96f47a23..60661287 100644 --- a/src/OpenLoco/Windows/Vehicle.cpp +++ b/src/OpenLoco/Windows/Vehicle.cpp @@ -47,16 +47,16 @@ namespace OpenLoco::Ui::Windows::Vehicle tabRoute = 8, }; -#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ - makeWidget({ 0, 0 }, { (frameWidth), (frameHeight) }, WidgetType::frame, 0), \ - makeWidget({ 1, 1 }, { (frameWidth)-2, 13 }, WidgetType::caption_24, 0, windowCaptionId), \ - makeWidget({ (frameWidth)-15, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), \ - makeWidget({ 0, 41 }, { 265, 136 }, WidgetType::panel, 1), \ - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab_vehicle_background, StringIds::tooltip_vehicle_tab_main), \ - makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab_vehicle_background, StringIds::tooltip_vehicle_tab_details), \ - makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab_vehicle_background, StringIds::tooltip_vehicle_tab_cargo), \ - makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab_vehicle_background, StringIds::tooltip_vehicle_tab_finance), \ - makeRemapWidget({ 158, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab_vehicle_background, StringIds::tooltip_vehicle_tab_route) +#define commonWidgets(frameWidth, frameHeight, windowCaptionId) \ + makeWidget({ 0, 0 }, { (frameWidth), (frameHeight) }, WidgetType::frame, WindowColour::primary), \ + makeWidget({ 1, 1 }, { (frameWidth)-2, 13 }, WidgetType::caption_24, WindowColour::primary, windowCaptionId), \ + makeWidget({ (frameWidth)-15, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), \ + makeWidget({ 0, 41 }, { 265, 136 }, WidgetType::panel, WindowColour::secondary), \ + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab_vehicle_background, StringIds::tooltip_vehicle_tab_main), \ + makeRemapWidget({ 34, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab_vehicle_background, StringIds::tooltip_vehicle_tab_details), \ + makeRemapWidget({ 65, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab_vehicle_background, StringIds::tooltip_vehicle_tab_cargo), \ + makeRemapWidget({ 96, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab_vehicle_background, StringIds::tooltip_vehicle_tab_finance), \ + makeRemapWidget({ 158, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab_vehicle_background, StringIds::tooltip_vehicle_tab_route) constexpr uint64_t enabledWidgets = (1 << closeButton) | (1 << tabMain) | (1 << tabDetails) | (1 << tabCargo) | (1 << tabFinances) | (1 << tabRoute); @@ -105,10 +105,10 @@ namespace OpenLoco::Ui::Windows::Vehicle static Widget widgets[] = { commonWidgets(265, 177, StringIds::title_vehicle_details), - makeWidget({ 240, 44 }, { 24, 24 }, WidgetType::wt_9, 1, -1, StringIds::tooltip_build_new_vehicle_for), - makeWidget({ 240, 68 }, { 24, 24 }, WidgetType::wt_9, 1, -1, StringIds::tooltip_remove_from_track), - makeWidget({ 240, 96 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::rubbish_bin, StringIds::tooltip_sell_or_drag_vehicle), - makeWidget({ 3, 44 }, { 237, 110 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 240, 44 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, -1, StringIds::tooltip_build_new_vehicle_for), + makeWidget({ 240, 68 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, -1, StringIds::tooltip_remove_from_track), + makeWidget({ 240, 96 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::rubbish_bin, StringIds::tooltip_sell_or_drag_vehicle), + makeWidget({ 3, 44 }, { 237, 110 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd() }; } @@ -131,8 +131,8 @@ namespace OpenLoco::Ui::Windows::Vehicle static Widget widgets[] = { commonWidgets(265, 177, StringIds::title_vehicle_cargo), - makeWidget({ 240, 44 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::refit_cargo_button, StringIds::refit_vehicle_tip), - makeWidget({ 3, 44 }, { 259, 120 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 240, 44 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::refit_cargo_button, StringIds::refit_vehicle_tip), + makeWidget({ 3, 44 }, { 259, 120 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd() }; } @@ -180,16 +180,16 @@ namespace OpenLoco::Ui::Windows::Vehicle static Widget widgets[] = { commonWidgets(265, 189, StringIds::title_vehicle_route), - makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, 0), - makeWidget({ 3, 44 }, { 118, 12 }, WidgetType::wt_11, 1, StringIds::local_mode_button), - makeWidget({ 121, 44 }, { 119, 12 }, WidgetType::wt_11, 1, StringIds::express_mode_button), - makeWidget({ 3, 58 }, { 237, 120 }, WidgetType::scrollview, 1, Scrollbars::vertical, StringIds::tooltip_route_scrollview), - makeWidget({ 240, 44 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::route_force_unload, StringIds::tooltip_route_insert_force_unload), - makeWidget({ 240, 68 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::route_wait, StringIds::tooltip_route_insert_wait_full_cargo), - makeWidget({ 240, 92 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::route_skip, StringIds::tooltip_route_skip_next_order), - makeWidget({ 240, 116 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::route_delete, StringIds::tooltip_route_delete_order), - makeWidget({ 240, 140 }, { 24, 12 }, WidgetType::wt_9, 1, ImageIds::red_arrow_up, StringIds::tooltip_route_move_order_up), - makeWidget({ 240, 152 }, { 24, 12 }, WidgetType::wt_9, 1, ImageIds::red_arrow_down, StringIds::tooltip_route_move_order_down), + makeWidget({ 0, 0 }, { 1, 1 }, WidgetType::none, WindowColour::primary), + makeWidget({ 3, 44 }, { 118, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::local_mode_button), + makeWidget({ 121, 44 }, { 119, 12 }, WidgetType::wt_11, WindowColour::secondary, StringIds::express_mode_button), + makeWidget({ 3, 58 }, { 237, 120 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical, StringIds::tooltip_route_scrollview), + makeWidget({ 240, 44 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::route_force_unload, StringIds::tooltip_route_insert_force_unload), + makeWidget({ 240, 68 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::route_wait, StringIds::tooltip_route_insert_wait_full_cargo), + makeWidget({ 240, 92 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::route_skip, StringIds::tooltip_route_skip_next_order), + makeWidget({ 240, 116 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::route_delete, StringIds::tooltip_route_delete_order), + makeWidget({ 240, 140 }, { 24, 12 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::red_arrow_up, StringIds::tooltip_route_move_order_up), + makeWidget({ 240, 152 }, { 24, 12 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::red_arrow_down, StringIds::tooltip_route_move_order_down), widgetEnd(), }; } @@ -220,14 +220,14 @@ namespace OpenLoco::Ui::Windows::Vehicle static Widget widgets[] = { commonWidgets(265, 177, StringIds::stringid), - makeWidget({ 3, 44 }, { 237, 120 }, WidgetType::viewport, 1), - makeWidget({ 3, 155 }, { 237, 21 }, WidgetType::wt_13, 1), - makeWidget({ 240, 46 }, { 24, 115 }, WidgetType::wt_5, 1), - makeWidget({ 240, 44 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::red_flag, StringIds::tooltip_stop_start), - makeWidget({ 240, 68 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::null, StringIds::tooltip_remove_from_track), - makeWidget({ 240, 92 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::pass_signal, StringIds::tooltip_pass_signal_at_danger), - makeWidget({ 240, 116 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::construction_right_turnaround, StringIds::tooltip_change_direction), - makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, 1, ImageIds::null, StringIds::move_main_view_to_show_this), + makeWidget({ 3, 44 }, { 237, 120 }, WidgetType::viewport, WindowColour::secondary), + makeWidget({ 3, 155 }, { 237, 21 }, WidgetType::wt_13, WindowColour::secondary), + makeWidget({ 240, 46 }, { 24, 115 }, WidgetType::wt_5, WindowColour::secondary), + makeWidget({ 240, 44 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::red_flag, StringIds::tooltip_stop_start), + makeWidget({ 240, 68 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::null, StringIds::tooltip_remove_from_track), + makeWidget({ 240, 92 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::pass_signal, StringIds::tooltip_pass_signal_at_danger), + makeWidget({ 240, 116 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::construction_right_turnaround, StringIds::tooltip_change_direction), + makeWidget({ 0, 0 }, { 24, 24 }, WidgetType::wt_9, WindowColour::secondary, ImageIds::null, StringIds::move_main_view_to_show_this), widgetEnd() }; @@ -358,7 +358,7 @@ namespace OpenLoco::Ui::Windows::Vehicle _dragVehicleHead = EntityId::null; const auto* skin = ObjectManager::get(); - self->colours[1] = skin->colour_0A; + self->setColour(WindowColour::secondary, skin->colour_0A); return self; } @@ -417,7 +417,7 @@ namespace OpenLoco::Ui::Windows::Vehicle self->y + widget->top, widget->width(), widget->height(), - self->colours[1], + self->getColour(WindowColour::secondary), 2, 0); @@ -547,7 +547,7 @@ namespace OpenLoco::Ui::Windows::Vehicle self->y + widget->top, widget->width(), widget->height(), - self->colours[1], + self->getColour(WindowColour::secondary), dropdownCount, 0); @@ -897,7 +897,7 @@ namespace OpenLoco::Ui::Windows::Vehicle context, self->x + speedWidget.left, self->y + speedWidget.top + 10, - Gfx::recolour(ImageIds::speed_control_track, self->colours[1])); + Gfx::recolour(ImageIds::speed_control_track, self->getColour(WindowColour::secondary))); Gfx::drawStringCentred( *context, @@ -917,7 +917,7 @@ namespace OpenLoco::Ui::Windows::Vehicle context, self->x + speedWidget.left + 1, self->y + speedWidget.top + 57 - veh->var_6E, - Gfx::recolour(ImageIds::speed_control_thumb, self->colours[1])); + Gfx::recolour(ImageIds::speed_control_thumb, self->getColour(WindowColour::secondary))); } if (self->viewports[0] != nullptr) @@ -1042,7 +1042,7 @@ namespace OpenLoco::Ui::Windows::Vehicle self->y + widget->top, widget->width(), widget->height(), - self->colours[1], + self->getColour(WindowColour::secondary), 2, 0); @@ -1431,7 +1431,7 @@ namespace OpenLoco::Ui::Windows::Vehicle // 0x004B36A3 static void drawScroll(Window* const self, Gfx::Context* const context, const uint32_t i) { - Gfx::clearSingle(*context, Colour::getShade(self->colours[1], 4)); + Gfx::clearSingle(*context, Colour::getShade(self->getColour(WindowColour::secondary), 4)); auto head = Common::getVehicle(self); OpenLoco::Vehicles::Vehicle train{ head }; Gfx::point_t pos{ 0, 0 }; @@ -1459,7 +1459,7 @@ namespace OpenLoco::Ui::Windows::Vehicle if (car.front == _dragCarComponent) { al = 12; - ah = self->colours[1]; + ah = self->getColour(WindowColour::secondary); } auto x = Common::sub_4B743B(al, ah, 0, y, car.front, context); @@ -1714,7 +1714,7 @@ namespace OpenLoco::Ui::Windows::Vehicle // 004B3F62 static void drawScroll(Window* const self, Gfx::Context* const pDrawpixelinfo, const uint32_t i) { - Gfx::clearSingle(*pDrawpixelinfo, Colour::getShade(self->colours[1], 4)); + Gfx::clearSingle(*pDrawpixelinfo, Colour::getShade(self->getColour(WindowColour::secondary), 4)); Vehicles::Vehicle train{ Common::getVehicle(self) }; int16_t y = 0; for (auto& car : train.cars) @@ -1852,7 +1852,7 @@ namespace OpenLoco::Ui::Windows::Vehicle self->y + button.top, button.width(), button.height(), - self->colours[1], + self->getColour(WindowColour::secondary), index, 0); Dropdown::setHighlightedItem(0); @@ -2511,7 +2511,7 @@ namespace OpenLoco::Ui::Windows::Vehicle auto y = self->widgets[i].top + self->y; auto width = self->widgets[i].width(); auto height = self->widgets[i].height(); - Dropdown::showText(x, y, width, height, self->colours[1], index, 0); + Dropdown::showText(x, y, width, height, self->getColour(WindowColour::secondary), index, 0); Dropdown::setHighlightedItem(0); } @@ -3077,7 +3077,7 @@ namespace OpenLoco::Ui::Windows::Vehicle // 0x004B48BA static void drawScroll(Window* const self, Gfx::Context* const pDrawpixelinfo, const uint32_t i) { - Gfx::clearSingle(*pDrawpixelinfo, Colour::getShade(self->colours[1], 4)); + Gfx::clearSingle(*pDrawpixelinfo, Colour::getShade(self->getColour(WindowColour::secondary), 4)); auto head = Common::getVehicle(self); Vehicles::Vehicle train(head); diff --git a/src/OpenLoco/Windows/VehicleList.cpp b/src/OpenLoco/Windows/VehicleList.cpp index 56c0100d..57a72596 100644 --- a/src/OpenLoco/Windows/VehicleList.cpp +++ b/src/OpenLoco/Windows/VehicleList.cpp @@ -53,22 +53,22 @@ namespace OpenLoco::Ui::Windows::VehicleList }; Widget _widgets[] = { - makeWidget({ 0, 0 }, { 550, 213 }, WidgetType::frame, 0), - makeWidget({ 1, 1 }, { 548, 13 }, WidgetType::caption_24, 0), - makeWidget({ 535, 2 }, { 13, 13 }, WidgetType::wt_9, 0, ImageIds::close_button, StringIds::tooltip_close_window), - makeWidget({ 0, 41 }, { 550, 172 }, WidgetType::panel, 1), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_trains), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_buses), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_trucks), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_trams), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_aircraft), - makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, 1, ImageIds::tab, StringIds::tooltip_ships), - makeWidget({ 0, 14 }, { 26, 26 }, WidgetType::wt_9, 0, StringIds::null, StringIds::tooltip_select_company), - makeWidget({ 4, 43 }, { 310, 12 }, WidgetType::wt_14, 1, StringIds::null, StringIds::tooltip_sort_by_name), - makeWidget({ 314, 43 }, { 100, 12 }, WidgetType::wt_14, 1, StringIds::null, StringIds::tooltip_sort_by_profit), - makeWidget({ 414, 43 }, { 65, 12 }, WidgetType::wt_14, 1, StringIds::null, StringIds::tooltip_sort_by_age), - makeWidget({ 479, 43 }, { 67, 12 }, WidgetType::wt_14, 1, StringIds::null, StringIds::tooltip_sort_by_reliability), - makeWidget({ 3, 56 }, { 544, 138 }, WidgetType::scrollview, 1, Scrollbars::vertical), + makeWidget({ 0, 0 }, { 550, 213 }, WidgetType::frame, WindowColour::primary), + makeWidget({ 1, 1 }, { 548, 13 }, WidgetType::caption_24, WindowColour::primary), + makeWidget({ 535, 2 }, { 13, 13 }, WidgetType::wt_9, WindowColour::primary, ImageIds::close_button, StringIds::tooltip_close_window), + makeWidget({ 0, 41 }, { 550, 172 }, WidgetType::panel, WindowColour::secondary), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_trains), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_buses), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_trucks), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_trams), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_aircraft), + makeRemapWidget({ 3, 15 }, { 31, 27 }, WidgetType::wt_8, WindowColour::secondary, ImageIds::tab, StringIds::tooltip_ships), + makeWidget({ 0, 14 }, { 26, 26 }, WidgetType::wt_9, WindowColour::primary, StringIds::null, StringIds::tooltip_select_company), + makeWidget({ 4, 43 }, { 310, 12 }, WidgetType::wt_14, WindowColour::secondary, StringIds::null, StringIds::tooltip_sort_by_name), + makeWidget({ 314, 43 }, { 100, 12 }, WidgetType::wt_14, WindowColour::secondary, StringIds::null, StringIds::tooltip_sort_by_profit), + makeWidget({ 414, 43 }, { 65, 12 }, WidgetType::wt_14, WindowColour::secondary, StringIds::null, StringIds::tooltip_sort_by_age), + makeWidget({ 479, 43 }, { 67, 12 }, WidgetType::wt_14, WindowColour::secondary, StringIds::null, StringIds::tooltip_sort_by_reliability), + makeWidget({ 3, 56 }, { 544, 138 }, WidgetType::scrollview, WindowColour::secondary, Scrollbars::vertical), widgetEnd() }; @@ -334,7 +334,7 @@ namespace OpenLoco::Ui::Windows::VehicleList self->frame_no = 0; auto skin = ObjectManager::get(); - self->colours[1] = skin->colour_0A; + self->setColour(WindowColour::secondary, skin->colour_0A); disableUnavailableVehicleTypes(self); @@ -522,7 +522,7 @@ namespace OpenLoco::Ui::Windows::VehicleList // 0x004C21CD static void drawScroll(Window* self, Gfx::Context* context, uint32_t scrollIndex) { - auto shade = Colour::getShade(self->colours[1], 1); + auto shade = Colour::getShade(self->getColour(WindowColour::secondary), 1); Gfx::clearSingle(*context, shade); auto yPos = 0; @@ -541,7 +541,7 @@ namespace OpenLoco::Ui::Windows::VehicleList // Highlight selection. if (head->id == self->row_hover) - Gfx::drawRect(context, 0, yPos, self->width, self->row_height, Colour::getShade(self->colours[1], 0)); + Gfx::drawRect(context, 0, yPos, self->width, self->row_height, Colour::getShade(self->getColour(WindowColour::secondary), 0)); // Draw vehicle at the bottom of the row. drawVehicle(head, context, yPos + (self->row_height - 28) / 2 + 6);