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:
1 parent
ce3b6da617
commit
bbb397abb2
4 files changed
+38
-29
No files matched your search
@@ -139,7 +139,7 @@ namespace GlobalInputs {
|
||||
}
|
||||
|
||||
void onCycleRenderInfo() {
|
||||
const int NEXT = (static_cast<int>(Options::video.render_info_position) + 1) % 3;
|
||||
const int NEXT = (static_cast<int>(Options::video.render_info_position) + 1) % Defaults::RENDER_INFO_POSITION_COUNT;
|
||||
Options::video.render_info_position = static_cast<Defaults::RenderInfoPosition>(NEXT);
|
||||
Options::saveToFile();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user