tweak(hud): l'últim dígit de la puntuació sempre encès (puntuació 0 no apaga el marcador)

This commit is contained in:
2026-05-29 20:41:05 +02:00
parent a7233e13df
commit 3bc87ad652
+10 -4
View File
@@ -129,7 +129,8 @@ namespace Systems::InitHud {
// Pinta la puntuació amb els zeros de farciment previs al primer dígit // Pinta la puntuació amb els zeros de farciment previs al primer dígit
// significatiu en to atenuat i la resta en brillant (efecte display de 7 // significatiu en to atenuat i la resta en brillant (efecte display de 7
// segments). Puntuació 0 (tot zeros) → tot atenuat. // segments). El dígit menys significatiu SEMPRE va encès: puntuació 0 →
// cinc zeros atenuats + l'últim "0" encès (el marcador no queda mai apagat).
void drawScore(const Graphics::VectorText& text, void drawScore(const Graphics::VectorText& text,
const std::string& score, const std::string& score,
SDL_Color bright, SDL_Color bright,
@@ -138,9 +139,14 @@ namespace Systems::InitHud {
float top_y, float top_y,
float scale, float scale,
float spacing) { float spacing) {
const size_t SIG = score.find_first_not_of('0'); if (score.empty()) {
const std::string PREFIX = (SIG == std::string::npos) ? score : score.substr(0, SIG); return;
const std::string REST = (SIG == std::string::npos) ? std::string{} : score.substr(SIG); }
// Primer dígit significatiu; si són tots zeros, força l'últim a encès.
const size_t FIRST_SIG = score.find_first_not_of('0');
const size_t SIG = (FIRST_SIG == std::string::npos) ? (score.size() - 1) : FIRST_SIG;
const std::string PREFIX = score.substr(0, SIG);
const std::string REST = score.substr(SIG);
if (!PREFIX.empty()) { if (!PREFIX.empty()) {
text.render(PREFIX, {.x = x, .y = top_y}, scale, spacing, 1.0F, dim); text.render(PREFIX, {.x = x, .y = top_y}, scale, spacing, 1.0F, dim);
// Avança l'amplada del prefix més el buit inter-caràcter que hi // Avança l'amplada del prefix més el buit inter-caràcter que hi