diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index d3523eda5a..9e5578f9d2 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -447,26 +447,6 @@ namespace OpenRCT2::Ui WidgetText(dpi, w, widgetIndex); } - static std::pair WidgetGetStringidAndArgs(const Widget& widget) - { - auto stringId = widget.text; - void* formatArgs = gCommonFormatArgs; - if (widget.flags & WIDGET_FLAGS::TEXT_IS_STRING) - { - if (widget.string == nullptr || widget.string[0] == '\0') - { - stringId = kStringIdNone; - formatArgs = nullptr; - } - else - { - stringId = STR_STRING; - formatArgs = const_cast(reinterpret_cast(&widget.string)); - } - } - return std::make_pair(stringId, formatArgs); - } - /** * * rct2: 0x006EB535 @@ -482,7 +462,21 @@ namespace OpenRCT2::Ui auto textRight = l; // Text - auto [stringId, formatArgs] = WidgetGetStringidAndArgs(widget); + auto stringId = widget.text; + auto rawFt = Formatter::Common(); + if (widget.flags & WIDGET_FLAGS::TEXT_IS_STRING) + { + if (widget.string != nullptr && widget.string[0] != '\0') + { + stringId = STR_STRING; + rawFt.Add(widget.string); + } + else + { + stringId = kStringIdNone; + } + } + if (stringId != kStringIdNone) { auto colour = w.colours[widget.colour].withFlag(ColourFlag::translucent, false); @@ -490,7 +484,8 @@ namespace OpenRCT2::Ui colour.setFlag(ColourFlag::inset, true); utf8 buffer[512] = { 0 }; - OpenRCT2::FormatStringLegacy(buffer, sizeof(buffer), stringId, formatArgs); + OpenRCT2::FormatStringLegacy(buffer, sizeof(buffer), stringId, rawFt.Data()); + auto ft = Formatter(); ft.Add(buffer); DrawTextBasic(dpi, { l, t }, STR_STRING, ft, { colour });