refactor(core/rendering): nomenar constants a RenderInfo (HC-06/-07/-09 + PATCH-08)

render_info.cpp tenia diverses "cifres soltes" amb significat
estructural:
- Índex 0/1/2/3 dins segments_ per a FPS/driver/shader/temps — ara
  FPS_SEGMENT, DRIVER_SEGMENT, SHADER_SEGMENT, TIME_SEGMENT (HC-06).
- +1,+1 per a la ombra del text — ara SHADOW_OFFSET_PX (HC-09).
- % 3 al cicle de posicions de global_inputs.cpp — ara
  Defaults::RENDER_INFO_POSITION_COUNT (HC-07).

A més, init() assignava mono_digits=true al segment de temps que
refreshSegments() ja marca a cada crida, inclosa la primera d'update()
abans de render. S'elimina el doblegat (PATCH-08); el comentari
explica la garantia.

Build + smoke 5s xvfb OK (exit 124).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
JailDesignerandClaude Opus 4.7 committed 2026-04-20 09:47:49 +02:00
1 parent ce3b6da617
commit bbb397abb2
4 files changed
+38 -29

No files matched your search

+30 -23
View File
@@ -21,8 +21,14 @@ namespace {
// Evita una fileta d'un sol píxel quan acaba de començar a aparèixer.
constexpr float VISIBLE_EPSILON = 0.01F;
// Índex del segment de temps dins de segments_. Si canvia SEGMENT_COUNT
// o l'ordre, actualitzar ací.
// Desplaçament en píxels de la ombra respecte del text principal.
constexpr int SHADOW_OFFSET_PX = 1;
// Índex de cada segment dins de segments_. Si canvia SEGMENT_COUNT o
// l'ordre, actualitzar ací.
constexpr int FPS_SEGMENT = 0;
constexpr int DRIVER_SEGMENT = 1;
constexpr int SHADER_SEGMENT = 2;
constexpr int TIME_SEGMENT = 3;
auto prettify(std::string s) -> std::string {
@@ -55,10 +61,11 @@ void RenderInfo::init(const Frame& initial) {
text_ = std::make_unique<Text>(font_surface, "data/font/8bithud.fnt");
current_ = initial;
segments_[TIME_SEGMENT].mono_digits = true;
// Restaura l'estat guardat: si l'overlay estava engegat, l'activem ja
// plenament visible (sense animació d'entrada inicial).
// plenament visible (sense animació d'entrada inicial). refreshSegments
// és qui marca mono_digits al segment de temps; si no s'engega ara,
// la primera crida a update() també ho farà abans de qualsevol render.
if (initial.target_position != Defaults::RenderInfoPosition::OFF) {
visible_pos_ = initial.target_position;
info_anim_ = 1.0F;
@@ -111,35 +118,35 @@ void RenderInfo::update(int delta_ms, const Frame& frame) {
}
void RenderInfo::refreshSegments() {
// [0] FPS (sempre visible mentre l'overlay apareix)
segments_[0].text = std::to_string(Screen::get().getLastFPS()) + " fps";
segments_[0].visible = true;
segments_[0].mono_digits = false;
// FPS (sempre visible mentre l'overlay apareix)
segments_[FPS_SEGMENT].text = std::to_string(Screen::get().getLastFPS()) + " fps";
segments_[FPS_SEGMENT].visible = true;
segments_[FPS_SEGMENT].mono_digits = false;
// [1] Driver GPU (sempre visible)
// Driver GPU (sempre visible)
const auto& driver = Screen::get().getGPUDriver();
segments_[1].text = std::string(" | ") + (driver.empty() ? std::string("sdl") : driver);
segments_[1].visible = true;
segments_[1].mono_digits = false;
segments_[DRIVER_SEGMENT].text = std::string(" | ") + (driver.empty() ? std::string("sdl") : driver);
segments_[DRIVER_SEGMENT].visible = true;
segments_[DRIVER_SEGMENT].mono_digits = false;
// [2] Shader + preset (només amb shader activat). El caller ha triat el
// Shader + preset (només amb shader activat). El caller ha triat el
// preset actiu segons el shader; ací només el formatem.
if (current_.shader_enabled) {
segments_[2].text = " | " + current_.shader_name + " " + prettify(current_.shader_preset);
segments_[SHADER_SEGMENT].text = " | " + current_.shader_name + " " + prettify(current_.shader_preset);
}
segments_[2].visible = current_.shader_enabled;
segments_[2].mono_digits = false;
segments_[SHADER_SEGMENT].visible = current_.shader_enabled;
segments_[SHADER_SEGMENT].mono_digits = false;
// [3] Temps de joc (togglejable i persistent)
// Temps de joc (togglejable i persistent)
segments_[TIME_SEGMENT].text = " | " + formatTime(elapsed_ms_);
segments_[TIME_SEGMENT].visible = current_.show_time;
segments_[TIME_SEGMENT].mono_digits = true;
// Els tres primers segments baixem a minúscules per coherència estètica
// amb la resta de la línia; el [3] (temps) manté dígits i puntuació.
segments_[0].text = prettify(segments_[0].text);
segments_[1].text = prettify(segments_[1].text);
segments_[2].text = prettify(segments_[2].text);
// amb la resta de la línia; el de temps manté dígits i puntuació.
segments_[FPS_SEGMENT].text = prettify(segments_[FPS_SEGMENT].text);
segments_[DRIVER_SEGMENT].text = prettify(segments_[DRIVER_SEGMENT].text);
segments_[SHADER_SEGMENT].text = prettify(segments_[SHADER_SEGMENT].text);
}
auto RenderInfo::segmentWidth(const Segment& seg, int digit_cell_w) const -> int {
@@ -188,10 +195,10 @@ void RenderInfo::render() {
const int SEG_W = segmentWidth(seg, DIGIT_CELL);
if (seg.mono_digits) {
text_->writeMonoDigits(XI + 1, Y + 1, seg.text, current_.shadow_color, DIGIT_CELL);
text_->writeMonoDigits(XI + SHADOW_OFFSET_PX, Y + SHADOW_OFFSET_PX, seg.text, current_.shadow_color, DIGIT_CELL);
text_->writeMonoDigits(XI, Y, seg.text, current_.text_color, DIGIT_CELL);
} else {
text_->writeColored(XI + 1, Y + 1, seg.text, current_.shadow_color);
text_->writeColored(XI + SHADOW_OFFSET_PX, Y + SHADOW_OFFSET_PX, seg.text, current_.shadow_color);
text_->writeColored(XI, Y, seg.text, current_.text_color);
}