From edf9f597ecaf7341ed73494fbcdc5bf7a6603c85 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sat, 1 Mar 2025 23:43:12 +0000 Subject: [PATCH] Codechange: Use parameterised GetString() for remaining windows. --- src/console_gui.cpp | 3 +-- src/date_gui.cpp | 3 +-- src/highscore_gui.cpp | 26 ++++++++++++-------------- src/intro_gui.cpp | 6 ++---- src/linkgraph/linkgraph_gui.cpp | 4 ++-- src/misc_gui.cpp | 15 ++++++++------- src/network/network.cpp | 33 +++++++++++++++++---------------- src/saveload/saveload.cpp | 20 +++++++++++--------- src/signs_gui.cpp | 6 ++---- src/toolbar_gui.cpp | 3 +-- 10 files changed, 57 insertions(+), 62 deletions(-) diff --git a/src/console_gui.cpp b/src/console_gui.cpp index 051fd1874d..597f65a939 100644 --- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -198,8 +198,7 @@ struct IConsoleWindow : Window int ypos = this->height - this->line_height - WidgetDimensions::scaled.hsep_normal; for (size_t line_index = IConsoleWindow::scroll; line_index < _iconsole_buffer.size(); line_index++) { const IConsoleLine &print = _iconsole_buffer[line_index]; - SetDParamStr(0, print.buffer); - ypos = DrawStringMultiLine(WidgetDimensions::scaled.frametext.left, right, -this->line_height, ypos, STR_JUST_RAW_STRING, print.colour, SA_LEFT | SA_BOTTOM | SA_FORCE) - WidgetDimensions::scaled.hsep_normal; + ypos = DrawStringMultiLine(WidgetDimensions::scaled.frametext.left, right, -this->line_height, ypos, GetString(STR_JUST_RAW_STRING, print.buffer), print.colour, SA_LEFT | SA_BOTTOM | SA_FORCE) - WidgetDimensions::scaled.hsep_normal; if (ypos < 0) break; } /* If the text is longer than the window, don't show the starting ']' */ diff --git a/src/date_gui.cpp b/src/date_gui.cpp index ca8f16af32..29a5ecc651 100644 --- a/src/date_gui.cpp +++ b/src/date_gui.cpp @@ -118,8 +118,7 @@ struct SetDateWindow : Window { break; case WID_SD_YEAR: - SetDParamMaxValue(0, this->max_year); - d = maxdim(d, GetStringBoundingBox(STR_JUST_INT)); + d = maxdim(d, GetStringBoundingBox(GetString(STR_JUST_INT, GetParamMaxValue(this->max_year.base())))); break; } diff --git a/src/highscore_gui.cpp b/src/highscore_gui.cpp index f6b05566ea..f00ca6b003 100644 --- a/src/highscore_gui.cpp +++ b/src/highscore_gui.cpp @@ -143,14 +143,13 @@ struct EndGameWindow : EndGameHighScoreBaseWindow { /* We need to get performance from last year because the image is shown * at the start of the new year when these things have already been copied */ if (this->background_img == SPR_TYCOON_IMG2_BEGIN) { // Tycoon of the century \o/ - SetDParam(0, c->index); - SetDParam(1, c->index); - SetDParam(2, EndGameGetPerformanceTitleFromValue(c->old_economy[0].performance_history)); - DrawStringMultiLine(pt.x + ScaleSpriteTrad(15), pt.x + ScaleSpriteTrad(640) - ScaleSpriteTrad(25), pt.y + ScaleSpriteTrad(90), pt.y + ScaleSpriteTrad(160), STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS, TC_FROMSTRING, SA_CENTER); + DrawStringMultiLine(pt.x + ScaleSpriteTrad(15), pt.x + ScaleSpriteTrad(640) - ScaleSpriteTrad(25), pt.y + ScaleSpriteTrad(90), pt.y + ScaleSpriteTrad(160), + GetString(STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS, c->index, c->index, EndGameGetPerformanceTitleFromValue(c->old_economy[0].performance_history)), + TC_FROMSTRING, SA_CENTER); } else { - SetDParam(0, c->index); - SetDParam(1, EndGameGetPerformanceTitleFromValue(c->old_economy[0].performance_history)); - DrawStringMultiLine(pt.x + ScaleSpriteTrad(36), pt.x + ScaleSpriteTrad(640), pt.y + ScaleSpriteTrad(140), pt.y + ScaleSpriteTrad(206), STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS, TC_FROMSTRING, SA_CENTER); + DrawStringMultiLine(pt.x + ScaleSpriteTrad(36), pt.x + ScaleSpriteTrad(640), pt.y + ScaleSpriteTrad(140), pt.y + ScaleSpriteTrad(206), + GetString(STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS, c->index, EndGameGetPerformanceTitleFromValue(c->old_economy[0].performance_history)), + TC_FROMSTRING, SA_CENTER); } } }; @@ -194,17 +193,16 @@ struct HighScoreWindow : EndGameHighScoreBaseWindow { /* Draw Highscore peepz */ for (uint8_t i = 0; i < ClampTo(hs.size()); i++) { - SetDParam(0, i + 1); - DrawString(pt.x + ScaleSpriteTrad(40), pt.x + ScaleSpriteTrad(600), pt.y + ScaleSpriteTrad(140 + i * 55), STR_HIGHSCORE_POSITION); + DrawString(pt.x + ScaleSpriteTrad(40), pt.x + ScaleSpriteTrad(600), pt.y + ScaleSpriteTrad(140 + i * 55), + GetString(STR_HIGHSCORE_POSITION, i + 1)); if (!hs[i].name.empty()) { TextColour colour = (this->rank == i) ? TC_RED : TC_BLACK; // draw new highscore in red - SetDParamStr(0, hs[i].name); - DrawString(pt.x + ScaleSpriteTrad(71), pt.x + ScaleSpriteTrad(569), pt.y + ScaleSpriteTrad(140 + i * 55), STR_JUST_BIG_RAW_STRING, colour); - SetDParam(0, hs[i].title); - SetDParam(1, hs[i].score); - DrawString(pt.x + ScaleSpriteTrad(71), pt.x + ScaleSpriteTrad(569), pt.y + ScaleSpriteTrad(140) + GetCharacterHeight(FS_LARGE) + ScaleSpriteTrad(i * 55), STR_HIGHSCORE_STATS, colour); + DrawString(pt.x + ScaleSpriteTrad(71), pt.x + ScaleSpriteTrad(569), pt.y + ScaleSpriteTrad(140 + i * 55), + GetString(STR_JUST_BIG_RAW_STRING, hs[i].name), colour); + DrawString(pt.x + ScaleSpriteTrad(71), pt.x + ScaleSpriteTrad(569), pt.y + ScaleSpriteTrad(140) + GetCharacterHeight(FS_LARGE) + ScaleSpriteTrad(i * 55), + GetString(STR_HIGHSCORE_STATS, hs[i].title, hs[i].score), colour); } } } diff --git a/src/intro_gui.cpp b/src/intro_gui.cpp index e2f2f5fd77..eae9cb1c3e 100644 --- a/src/intro_gui.cpp +++ b/src/intro_gui.cpp @@ -281,13 +281,11 @@ struct SelectGameWindow : public Window { { switch (widget) { case WID_SGI_BASESET: - SetDParam(0, _missing_extra_graphics); - DrawStringMultiLine(r, STR_INTRO_BASESET, TC_FROMSTRING, SA_CENTER); + DrawStringMultiLine(r, GetString(STR_INTRO_BASESET, _missing_extra_graphics), TC_FROMSTRING, SA_CENTER); break; case WID_SGI_TRANSLATION: - SetDParam(0, _current_language->missing); - DrawStringMultiLine(r, STR_INTRO_TRANSLATION, TC_FROMSTRING, SA_CENTER); + DrawStringMultiLine(r, GetString(STR_INTRO_TRANSLATION, _current_language->missing), TC_FROMSTRING, SA_CENTER); break; } } diff --git a/src/linkgraph/linkgraph_gui.cpp b/src/linkgraph/linkgraph_gui.cpp index 58c8a299fa..388dff7c8e 100644 --- a/src/linkgraph/linkgraph_gui.cpp +++ b/src/linkgraph/linkgraph_gui.cpp @@ -391,8 +391,8 @@ bool LinkGraphOverlay::ShowTooltip(Point pt, TooltipCloseCondition close_cond) /* Add information about the travel time if known. */ const auto time = link.time ? back_time ? ((link.time + back_time) / 2) : link.time : back_time; if (time > 0) { - SetDParam(0, time); - AppendStringInPlace(tooltip_extension, STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION); + auto params = MakeParameters(time); + AppendStringWithArgsInPlace(tooltip_extension, STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION, params); } GuiShowTooltips(this->window, GetEncodedString(TimerGameEconomy::UsingWallclockUnits() ? STR_LINKGRAPH_STATS_TOOLTIP_MINUTE : STR_LINKGRAPH_STATS_TOOLTIP_MONTH, diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 256c906329..a4f4818edb 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -85,8 +85,7 @@ public: } if (!this->cargo_acceptance.empty()) { - SetDParamStr(0, this->cargo_acceptance); - DrawStringMultiLine(ir, STR_JUST_RAW_STRING, TC_FROMSTRING, SA_CENTER); + DrawStringMultiLine(ir, GetString(STR_JUST_RAW_STRING, this->cargo_acceptance), TC_FROMSTRING, SA_CENTER); } } @@ -105,8 +104,7 @@ public: if (!this->cargo_acceptance.empty()) { uint width = GetStringBoundingBox(this->cargo_acceptance).width + WidgetDimensions::scaled.frametext.Horizontal(); size.width = std::max(size.width, std::min(static_cast(ScaleGUITrad(300)), width)); - SetDParamStr(0, cargo_acceptance); - size.height += GetStringHeight(STR_JUST_RAW_STRING, size.width - WidgetDimensions::scaled.frametext.Horizontal()); + size.height += GetStringHeight(GetString(STR_JUST_RAW_STRING, this->cargo_acceptance), size.width - WidgetDimensions::scaled.frametext.Horizontal()); } } @@ -164,23 +162,26 @@ public: } /* Cost to clear/revenue when cleared */ - StringID str = STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A; Company *c = Company::GetIfValid(_local_company); if (c != nullptr) { assert(_current_company == _local_company); CommandCost costclear = Command::Do(DoCommandFlag::QueryCost, tile); if (costclear.Succeeded()) { Money cost = costclear.GetCost(); + StringID str; if (cost < 0) { cost = -cost; // Negate negative cost to a positive revenue str = STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED; } else { str = STR_LAND_AREA_INFORMATION_COST_TO_CLEAR; } - SetDParam(0, cost); + this->landinfo_data.push_back(GetString(str, cost)); + } else { + this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A)); } + } else { + this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A)); } - this->landinfo_data.push_back(GetString(str)); /* Location */ this->landinfo_data.push_back(GetString(STR_LAND_AREA_INFORMATION_LANDINFO_COORDS, TileX(tile), TileY(tile), GetTileZ(tile))); diff --git a/src/network/network.cpp b/src/network/network.cpp index 73cdde96fc..ffed1e357d 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -362,29 +362,30 @@ void NetworkHandlePauseChange(PauseModes prev_mode, PauseMode changed_mode) bool paused = _pause_mode.Any(); if (!paused && !changed) return; - StringID str; + std::string str; if (!changed) { - int i = -1; - - if (_pause_mode.Test(PauseMode::Normal)) SetDParam(++i, STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL); - if (_pause_mode.Test(PauseMode::Join)) SetDParam(++i, STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS); - if (_pause_mode.Test(PauseMode::GameScript)) SetDParam(++i, STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT); - if (_pause_mode.Test(PauseMode::ActiveClients)) SetDParam(++i, STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS); - if (_pause_mode.Test(PauseMode::LinkGraph)) SetDParam(++i, STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH); - str = STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 + i; + std::array params{}; + auto it = params.begin(); + if (_pause_mode.Test(PauseMode::Normal)) *it++ = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL; + if (_pause_mode.Test(PauseMode::Join)) *it++ = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS; + if (_pause_mode.Test(PauseMode::GameScript)) *it++ = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT; + if (_pause_mode.Test(PauseMode::ActiveClients)) *it++ = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS; + if (_pause_mode.Test(PauseMode::LinkGraph)) *it++ = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH; + str = GetStringWithArgs(STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 + std::distance(params.begin(), it) - 1, {params.begin(), it}); } else { + StringID reason; switch (changed_mode) { - case PauseMode::Normal: SetDParam(0, STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL); break; - case PauseMode::Join: SetDParam(0, STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS); break; - case PauseMode::GameScript: SetDParam(0, STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT); break; - case PauseMode::ActiveClients: SetDParam(0, STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS); break; - case PauseMode::LinkGraph: SetDParam(0, STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH); break; + case PauseMode::Normal: reason = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL; break; + case PauseMode::Join: reason = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS; break; + case PauseMode::GameScript: reason = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT; break; + case PauseMode::ActiveClients: reason = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS; break; + case PauseMode::LinkGraph: reason = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH; break; default: NOT_REACHED(); } - str = paused ? STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED : STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED; + str = GetString(paused ? STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED : STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED, reason); } - NetworkTextMessage(NETWORK_ACTION_SERVER_MESSAGE, CC_DEFAULT, false, "", GetString(str)); + NetworkTextMessage(NETWORK_ACTION_SERVER_MESSAGE, CC_DEFAULT, false, "", str); break; } diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index b40a47ef0a..d0a218697b 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -3325,28 +3325,30 @@ std::string GenerateDefaultSaveName() } } - SetDParam(0, cid); + std::array params{}; + auto it = params.begin(); + *it++ = cid; /* We show the current game time differently depending on the timekeeping units used by this game. */ if (TimerGameEconomy::UsingWallclockUnits()) { /* Insert time played. */ const auto play_time = TimerGameTick::counter / Ticks::TICKS_PER_SECOND; - SetDParam(1, STR_SAVEGAME_DURATION_REALTIME); - SetDParam(2, play_time / 60 / 60); - SetDParam(3, (play_time / 60) % 60); + *it++ = STR_SAVEGAME_DURATION_REALTIME; + *it++ = play_time / 60 / 60; + *it++ = (play_time / 60) % 60; } else { /* Insert current date */ switch (_settings_client.gui.date_format_in_default_names) { - case 0: SetDParam(1, STR_JUST_DATE_LONG); break; - case 1: SetDParam(1, STR_JUST_DATE_TINY); break; - case 2: SetDParam(1, STR_JUST_DATE_ISO); break; + case 0: *it++ = STR_JUST_DATE_LONG; break; + case 1: *it++ = STR_JUST_DATE_TINY; break; + case 2: *it++ = STR_JUST_DATE_ISO; break; default: NOT_REACHED(); } - SetDParam(2, TimerGameEconomy::date); + *it++ = TimerGameEconomy::date; } /* Get the correct string (special string for when there's not company) */ - std::string filename = GetString(!Company::IsValidID(cid) ? STR_SAVEGAME_NAME_SPECTATOR : STR_SAVEGAME_NAME_DEFAULT); + std::string filename = GetStringWithArgs(!Company::IsValidID(cid) ? STR_SAVEGAME_NAME_SPECTATOR : STR_SAVEGAME_NAME_DEFAULT, {params.begin(), it}); SanitizeFilename(filename); return filename; } diff --git a/src/signs_gui.cpp b/src/signs_gui.cpp index 42273e9b0d..acf24f12ac 100644 --- a/src/signs_gui.cpp +++ b/src/signs_gui.cpp @@ -217,8 +217,7 @@ struct SignListWindow : Window, SignList { if (si->owner != OWNER_NONE) DrawCompanyIcon(si->owner, icon_left, tr.top + sprite_offset_y); - SetDParam(0, si->index); - DrawString(tr.left, tr.right, tr.top + text_offset_y, STR_SIGN_NAME, TC_YELLOW); + DrawString(tr.left, tr.right, tr.top + text_offset_y, GetString(STR_SIGN_NAME, si->index), TC_YELLOW); tr.top += this->resize.step_height; } break; @@ -269,8 +268,7 @@ struct SignListWindow : Window, SignList { } case WID_SIL_CAPTION: - SetDParamMaxValue(0, Sign::GetPoolSize(), 3); - size = GetStringBoundingBox(STR_SIGN_LIST_CAPTION); + size = GetStringBoundingBox(GetString(STR_SIGN_LIST_CAPTION, GetParamMaxValue(Sign::GetPoolSize(), 3))); size.height += padding.height; size.width += padding.width; break; diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index 69ed37dba7..a6eab59fd7 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -2386,8 +2386,7 @@ struct ScenarioEditorToolbarWindow : Window { break; case WID_TE_DATE: - SetDParam(0, TimerGameCalendar::ConvertYMDToDate(CalendarTime::MAX_YEAR, 0, 1)); - size = GetStringBoundingBox(STR_JUST_DATE_LONG); + size = GetStringBoundingBox(GetString(STR_JUST_DATE_LONG, TimerGameCalendar::ConvertYMDToDate(CalendarTime::MAX_YEAR, 0, 1))); break; } }