1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 19:13:07 +01:00

Merge pull request #13523 from IntelOrca/fix/13517-date-format

Fix #13517: Bad formatting of dates
This commit is contained in:
Tulio Leao
2020-12-06 10:17:59 -03:00
committed by GitHub
2 changed files with 20 additions and 2 deletions

View File

@@ -313,7 +313,7 @@ void InGameConsole::Draw(rct_drawpixelinfo* dpi) const
{
const size_t index = i + _consoleScrollPos;
lineBuffer = colourFormatStr + _consoleLines[index];
gfx_draw_string_no_formatting(dpi, lineBuffer.c_str(), textColour, screenCoords);
gfx_draw_string(dpi, lineBuffer.c_str(), textColour, screenCoords);
screenCoords.y += lineHeight;
}

View File

@@ -19,6 +19,8 @@
namespace OpenRCT2
{
static void FormatMonthYear(std::stringstream& ss, int32_t month, int32_t year);
static std::optional<int32_t> ParseNumericToken(std::string_view s)
{
if (s.size() >= 3 && s.size() <= 5 && s[0] == '{' && s[s.size() - 1] == '}')
@@ -572,7 +574,7 @@ namespace OpenRCT2
{
auto month = date_get_month(arg);
auto year = date_get_year(arg) + 1;
FormatStringId(ss, STR_DATE_FORMAT_MY, month, year);
FormatMonthYear(ss, month, year);
}
break;
case FormatToken::Month:
@@ -795,6 +797,22 @@ namespace OpenRCT2
BuildAnyArgListFromLegacyArgBuffer(fmt, anyArgs, args);
return FormatStringAny(buffer, bufferLen, fmt, anyArgs);
}
static void FormatMonthYear(std::stringstream& ss, int32_t month, int32_t year)
{
thread_local std::vector<FormatArg_t> tempArgs;
tempArgs.clear();
auto fmt = GetFmtStringById(STR_DATE_FORMAT_MY);
Formatter ft;
ft.Add<uint16_t>(month);
ft.Add<uint16_t>(year);
const void* legacyArgs = ft.Data();
BuildAnyArgListFromLegacyArgBuffer(fmt, tempArgs, legacyArgs);
size_t argIndex = 0;
FormatStringAny(ss, fmt, tempArgs, argIndex);
}
} // namespace OpenRCT2
void format_string(utf8* dest, size_t size, rct_string_id format, const void* args)