1
0
Fork 0

Codechange: Use parameterised GetString() for framerate window. (#13688)

pull/13693/head
Peter Nelson 2025-03-01 22:17:48 +00:00 committed by GitHub
parent a772df4a99
commit 5d026ef118
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 23 additions and 41 deletions

View File

@ -532,21 +532,13 @@ struct FramerateWindow : Window {
{ {
switch (widget) { switch (widget) {
case WID_FRW_RATE_GAMELOOP: case WID_FRW_RATE_GAMELOOP:
SetDParam(0, STR_FRAMERATE_FPS_GOOD); size = GetStringBoundingBox(GetString(STR_FRAMERATE_RATE_GAMELOOP, STR_FRAMERATE_FPS_GOOD, GetParamMaxDigits(6), 2));
SetDParamMaxDigits(1, 6);
SetDParam(2, 2);
size = GetStringBoundingBox(STR_FRAMERATE_RATE_GAMELOOP);
break; break;
case WID_FRW_RATE_DRAWING: case WID_FRW_RATE_DRAWING:
SetDParam(0, STR_FRAMERATE_FPS_GOOD); size = GetStringBoundingBox(GetString(STR_FRAMERATE_RATE_BLITTER, STR_FRAMERATE_FPS_GOOD, GetParamMaxDigits(6), 2));
SetDParamMaxDigits(1, 6);
SetDParam(2, 2);
size = GetStringBoundingBox(STR_FRAMERATE_RATE_BLITTER);
break; break;
case WID_FRW_RATE_FACTOR: case WID_FRW_RATE_FACTOR:
SetDParamMaxDigits(0, 6); size = GetStringBoundingBox(GetString(STR_FRAMERATE_SPEED_FACTOR, GetParamMaxDigits(6), 2));
SetDParam(1, 2);
size = GetStringBoundingBox(STR_FRAMERATE_SPEED_FACTOR);
break; break;
case WID_FRW_TIMES_NAMES: { case WID_FRW_TIMES_NAMES: {
@ -560,9 +552,7 @@ struct FramerateWindow : Window {
if (e < PFE_AI0) { if (e < PFE_AI0) {
line_size = GetStringBoundingBox(STR_FRAMERATE_GAMELOOP + e); line_size = GetStringBoundingBox(STR_FRAMERATE_GAMELOOP + e);
} else { } else {
SetDParam(0, e - PFE_AI0 + 1); line_size = GetStringBoundingBox(GetString(STR_FRAMERATE_AI, e - PFE_AI0 + 1, GetAIName(e - PFE_AI0)));
SetDParamStr(1, GetAIName(e - PFE_AI0));
line_size = GetStringBoundingBox(STR_FRAMERATE_AI);
} }
size.width = std::max(size.width, line_size.width); size.width = std::max(size.width, line_size.width);
} }
@ -573,9 +563,7 @@ struct FramerateWindow : Window {
case WID_FRW_TIMES_AVERAGE: case WID_FRW_TIMES_AVERAGE:
case WID_FRW_ALLOCSIZE: { case WID_FRW_ALLOCSIZE: {
size = GetStringBoundingBox(STR_FRAMERATE_CURRENT + (widget - WID_FRW_TIMES_CURRENT)); size = GetStringBoundingBox(STR_FRAMERATE_CURRENT + (widget - WID_FRW_TIMES_CURRENT));
SetDParamMaxDigits(0, 6); Dimension item_size = GetStringBoundingBox(GetString(STR_FRAMERATE_MS_GOOD, GetParamMaxDigits(6), 2));
SetDParam(1, 2);
Dimension item_size = GetStringBoundingBox(STR_FRAMERATE_MS_GOOD);
size.width = std::max(size.width, item_size.width); size.width = std::max(size.width, item_size.width);
size.height += GetCharacterHeight(FS_NORMAL) * MIN_ELEMENTS + WidgetDimensions::scaled.vsep_normal; size.height += GetCharacterHeight(FS_NORMAL) * MIN_ELEMENTS + WidgetDimensions::scaled.vsep_normal;
resize.width = 0; resize.width = 0;
@ -621,18 +609,13 @@ struct FramerateWindow : Window {
if (skip > 0) { if (skip > 0) {
skip--; skip--;
} else if (e == PFE_GAMESCRIPT || e >= PFE_AI0) { } else if (e == PFE_GAMESCRIPT || e >= PFE_AI0) {
if (e == PFE_GAMESCRIPT) { uint64_t value = e == PFE_GAMESCRIPT ? Game::GetInstance()->GetAllocatedMemory() : Company::Get(e - PFE_AI0)->ai_instance->GetAllocatedMemory();
SetDParam(0, Game::GetInstance()->GetAllocatedMemory()); DrawString(r.left, r.right, y, GetString(STR_FRAMERATE_BYTES_GOOD, value), TC_FROMSTRING, SA_RIGHT);
} else {
SetDParam(0, Company::Get(e - PFE_AI0)->ai_instance->GetAllocatedMemory());
}
DrawString(r.left, r.right, y, STR_FRAMERATE_BYTES_GOOD, TC_FROMSTRING, SA_RIGHT);
y += GetCharacterHeight(FS_NORMAL); y += GetCharacterHeight(FS_NORMAL);
drawable--; drawable--;
if (drawable == 0) break; if (drawable == 0) break;
} else if (e == PFE_SOUND) { } else if (e == PFE_SOUND) {
SetDParam(0, GetSoundPoolAllocatedMemory()); DrawString(r.left, r.right, y, GetString(STR_FRAMERATE_BYTES_GOOD, GetSoundPoolAllocatedMemory()), TC_FROMSTRING, SA_RIGHT);
DrawString(r.left, r.right, y, STR_FRAMERATE_BYTES_GOOD, TC_FROMSTRING, SA_RIGHT);
y += GetCharacterHeight(FS_NORMAL); y += GetCharacterHeight(FS_NORMAL);
drawable--; drawable--;
if (drawable == 0) break; if (drawable == 0) break;
@ -662,9 +645,7 @@ struct FramerateWindow : Window {
if (e < PFE_AI0) { if (e < PFE_AI0) {
DrawString(r.left, r.right, y, STR_FRAMERATE_GAMELOOP + e, TC_FROMSTRING, SA_LEFT); DrawString(r.left, r.right, y, STR_FRAMERATE_GAMELOOP + e, TC_FROMSTRING, SA_LEFT);
} else { } else {
SetDParam(0, e - PFE_AI0 + 1); DrawString(r.left, r.right, y, GetString(STR_FRAMERATE_AI, e - PFE_AI0 + 1, GetAIName(e - PFE_AI0)), TC_FROMSTRING, SA_LEFT);
SetDParamStr(1, GetAIName(e - PFE_AI0));
DrawString(r.left, r.right, y, STR_FRAMERATE_AI, TC_FROMSTRING, SA_LEFT);
} }
y += GetCharacterHeight(FS_NORMAL); y += GetCharacterHeight(FS_NORMAL);
drawable--; drawable--;
@ -773,10 +754,8 @@ struct FrametimeGraphWindow : Window {
void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
{ {
if (widget == WID_FGW_GRAPH) { if (widget == WID_FGW_GRAPH) {
SetDParam(0, 100); Dimension size_ms_label = GetStringBoundingBox(GetString(STR_FRAMERATE_GRAPH_MILLISECONDS, 100));
Dimension size_ms_label = GetStringBoundingBox(STR_FRAMERATE_GRAPH_MILLISECONDS); Dimension size_s_label = GetStringBoundingBox(GetString(STR_FRAMERATE_GRAPH_SECONDS, 100));
SetDParam(0, 100);
Dimension size_s_label = GetStringBoundingBox(STR_FRAMERATE_GRAPH_SECONDS);
/* Size graph in height to fit at least 10 vertical labels with space between, or at least 100 pixels */ /* Size graph in height to fit at least 10 vertical labels with space between, or at least 100 pixels */
graph_size.height = std::max(100u, 10 * (size_ms_label.height + 1)); graph_size.height = std::max(100u, 10 * (size_ms_label.height + 1));
@ -924,11 +903,13 @@ struct FrametimeGraphWindow : Window {
GfxDrawLine(x_zero, y, x_max, y, c_grid); GfxDrawLine(x_zero, y, x_max, y, c_grid);
if (division % 2 == 0) { if (division % 2 == 0) {
if ((TimingMeasurement)this->vertical_scale > TIMESTAMP_PRECISION) { if ((TimingMeasurement)this->vertical_scale > TIMESTAMP_PRECISION) {
SetDParam(0, this->vertical_scale * division / 10 / TIMESTAMP_PRECISION); DrawString(r.left, x_zero - 2, y - GetCharacterHeight(FS_SMALL),
DrawString(r.left, x_zero - 2, y - GetCharacterHeight(FS_SMALL), STR_FRAMERATE_GRAPH_SECONDS, TC_GREY, SA_RIGHT | SA_FORCE, false, FS_SMALL); GetString(STR_FRAMERATE_GRAPH_SECONDS, this->vertical_scale * division / 10 / TIMESTAMP_PRECISION),
TC_GREY, SA_RIGHT | SA_FORCE, false, FS_SMALL);
} else { } else {
SetDParam(0, this->vertical_scale * division / 10 * 1000 / TIMESTAMP_PRECISION); DrawString(r.left, x_zero - 2, y - GetCharacterHeight(FS_SMALL),
DrawString(r.left, x_zero - 2, y - GetCharacterHeight(FS_SMALL), STR_FRAMERATE_GRAPH_MILLISECONDS, TC_GREY, SA_RIGHT | SA_FORCE, false, FS_SMALL); GetString(STR_FRAMERATE_GRAPH_MILLISECONDS, this->vertical_scale * division / 10 * 1000 / TIMESTAMP_PRECISION),
TC_GREY, SA_RIGHT | SA_FORCE, false, FS_SMALL);
} }
} }
} }
@ -937,8 +918,9 @@ struct FrametimeGraphWindow : Window {
int x = Scinterlate(x_zero, x_max, 0, (int)horz_divisions, (int)horz_divisions - (int)division); int x = Scinterlate(x_zero, x_max, 0, (int)horz_divisions, (int)horz_divisions - (int)division);
GfxDrawLine(x, y_max, x, y_zero, c_grid); GfxDrawLine(x, y_max, x, y_zero, c_grid);
if (division % 2 == 0) { if (division % 2 == 0) {
SetDParam(0, division * horz_div_scl / 2); DrawString(x, x_max, y_zero + 2,
DrawString(x, x_max, y_zero + 2, STR_FRAMERATE_GRAPH_SECONDS, TC_GREY, SA_LEFT | SA_FORCE, false, FS_SMALL); GetString(STR_FRAMERATE_GRAPH_SECONDS, division * horz_div_scl / 2),
TC_GREY, SA_LEFT | SA_FORCE, false, FS_SMALL);
} }
} }
@ -995,12 +977,12 @@ struct FrametimeGraphWindow : Window {
if (points_drawn > 0 && peak_value > TIMESTAMP_PRECISION / 100 && 2 * peak_value > 3 * value_sum / points_drawn) { if (points_drawn > 0 && peak_value > TIMESTAMP_PRECISION / 100 && 2 * peak_value > 3 * value_sum / points_drawn) {
TextColour tc_peak = (TextColour)(TC_IS_PALETTE_COLOUR | c_peak); TextColour tc_peak = (TextColour)(TC_IS_PALETTE_COLOUR | c_peak);
GfxFillRect(peak_point.x - 1, peak_point.y - 1, peak_point.x + 1, peak_point.y + 1, c_peak); GfxFillRect(peak_point.x - 1, peak_point.y - 1, peak_point.x + 1, peak_point.y + 1, c_peak);
SetDParam(0, peak_value * 1000 / TIMESTAMP_PRECISION); uint64_t value = peak_value * 1000 / TIMESTAMP_PRECISION;
int label_y = std::max(y_max, peak_point.y - GetCharacterHeight(FS_SMALL)); int label_y = std::max(y_max, peak_point.y - GetCharacterHeight(FS_SMALL));
if (peak_point.x - x_zero > (int)this->graph_size.width / 2) { if (peak_point.x - x_zero > (int)this->graph_size.width / 2) {
DrawString(x_zero, peak_point.x - 2, label_y, STR_FRAMERATE_GRAPH_MILLISECONDS, tc_peak, SA_RIGHT | SA_FORCE, false, FS_SMALL); DrawString(x_zero, peak_point.x - 2, label_y, GetString(STR_FRAMERATE_GRAPH_MILLISECONDS, value), tc_peak, SA_RIGHT | SA_FORCE, false, FS_SMALL);
} else { } else {
DrawString(peak_point.x + 2, x_max, label_y, STR_FRAMERATE_GRAPH_MILLISECONDS, tc_peak, SA_LEFT | SA_FORCE, false, FS_SMALL); DrawString(peak_point.x + 2, x_max, label_y, GetString(STR_FRAMERATE_GRAPH_MILLISECONDS, value), tc_peak, SA_LEFT | SA_FORCE, false, FS_SMALL);
} }
} }
} }