highscore fixes
This commit is contained in:
@ -813,7 +813,13 @@ void MenuState::render(SDL_Renderer* renderer, float logicalScale, SDL_Rect logi
|
||||
}
|
||||
static const std::vector<ScoreEntry> EMPTY_SCORES;
|
||||
const auto& hs = ctx.scores ? ctx.scores->all() : EMPTY_SCORES;
|
||||
size_t maxDisplay = std::min(hs.size(), size_t(10)); // display only top 10
|
||||
// Filter highscores to show only classic gameplay entries on the main menu
|
||||
std::vector<ScoreEntry> filtered;
|
||||
filtered.reserve(hs.size());
|
||||
for (const auto &e : hs) {
|
||||
if (e.gameType == "classic") filtered.push_back(e);
|
||||
}
|
||||
size_t maxDisplay = std::min(filtered.size(), size_t(10)); // display only top 10
|
||||
|
||||
// Draw highscores as an inline HUD-like panel (no opaque box), matching Options/Level/Exit style
|
||||
if (useFont) {
|
||||
@ -899,18 +905,18 @@ void MenuState::render(SDL_Renderer* renderer, float logicalScale, SDL_Rect logi
|
||||
char rankStr[8]; std::snprintf(rankStr, sizeof(rankStr), "%zu.", i + 1);
|
||||
useFont->draw(renderer, rankX, y + wave + entryOffset, rankStr, curRowScale, rowColor);
|
||||
|
||||
useFont->draw(renderer, nameXAdj, y + wave + entryOffset, hs[i].name, curRowScale, rowColor);
|
||||
useFont->draw(renderer, nameXAdj, y + wave + entryOffset, filtered[i].name, curRowScale, rowColor);
|
||||
|
||||
char scoreStr[16]; std::snprintf(scoreStr, sizeof(scoreStr), "%d", hs[i].score);
|
||||
char scoreStr[16]; std::snprintf(scoreStr, sizeof(scoreStr), "%d", filtered[i].score);
|
||||
useFont->draw(renderer, scoreX, y + wave + entryOffset, scoreStr, curRowScale, rowColor);
|
||||
|
||||
char linesStr[8]; std::snprintf(linesStr, sizeof(linesStr), "%d", hs[i].lines);
|
||||
char linesStr[8]; std::snprintf(linesStr, sizeof(linesStr), "%d", filtered[i].lines);
|
||||
useFont->draw(renderer, linesX, y + wave + entryOffset, linesStr, curRowScale, rowColor);
|
||||
|
||||
char levelStr[8]; std::snprintf(levelStr, sizeof(levelStr), "%d", hs[i].level);
|
||||
char levelStr[8]; std::snprintf(levelStr, sizeof(levelStr), "%d", filtered[i].level);
|
||||
useFont->draw(renderer, levelX, y + wave + entryOffset, levelStr, curRowScale, rowColor);
|
||||
|
||||
char timeStr[16]; int mins = int(hs[i].timeSec) / 60; int secs = int(hs[i].timeSec) % 60;
|
||||
char timeStr[16]; int mins = int(filtered[i].timeSec) / 60; int secs = int(filtered[i].timeSec) % 60;
|
||||
std::snprintf(timeStr, sizeof(timeStr), "%d:%02d", mins, secs);
|
||||
useFont->draw(renderer, timeX, y + wave + entryOffset, timeStr, curRowScale, rowColor);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user