X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=c23f7ce6cd2af8a40baf75989ef39ef22d188962;hb=088c9c2caa2434a1667dc8ea25b152b41cf7dc1b;hp=464840b6e078a7575f84d36c1958fcb963b4a55d;hpb=3bb225da5092d0741870829d9f8f8642070d29c5;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 464840b6..c23f7ce6 100644 --- a/src/screens.c +++ b/src/screens.c @@ -1739,15 +1739,7 @@ void DrawMainMenu(void) OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2); -#if defined(PLATFORM_EMSCRIPTEN) - EM_ASM - ( - FS.syncfs(function(err) - { - assert(!err); - }); - ); -#endif + SyncEmscriptenFilesystem(); } static void gotoTopLevelDir(void) @@ -5077,6 +5069,35 @@ void DrawHallOfFame(int level_nr, int highlight_position) FadeIn(fade_mask); } +static char *getHallOfFameScoreText(int nr) +{ + // use playing time instead of score for Supaplex levels + if (level.rate_time_over_score || + level.game_engine_type == GAME_ENGINE_TYPE_SP) + { + if (level.use_step_counter) + return int2str(scores.entry[nr].time, 5); + + static char score_text[10]; + int time_final_max = 999; + int time_seconds = scores.entry[nr].time / FRAMES_PER_SECOND; + int score = scores.entry[nr].score; + + // convert old score file entries without playing time + if (time_seconds == 0 && score > 0 && score < time_final_max) + time_seconds = time_final_max - score - 1; + + int mm = (time_seconds / 60) % 60; + int ss = (time_seconds % 60); + + sprintf(score_text, "%02d:%02d", mm, ss); + + return score_text; + } + + return int2str(scores.entry[nr].score, 5); +} + static void drawHallOfFameList(int level_nr, int first_entry, int highlight_position) { @@ -5110,10 +5131,10 @@ static void drawHallOfFameList(int level_nr, int first_entry, for (j = 0; j < num_dots; j++) DrawText(mSX + dx2 + j * getFontWidth(font_nr3), sy, ".", font_nr3); - if (!strEqual(highscore[entry].Name, EMPTY_PLAYER_NAME)) - DrawText(mSX + dx2, sy, highscore[entry].Name, font_nr2); + if (!strEqual(scores.entry[entry].name, EMPTY_PLAYER_NAME)) + DrawText(mSX + dx2, sy, scores.entry[entry].name, font_nr2); - DrawText(mSX + dx3, sy, int2str(highscore[entry].Score, 5), font_nr4); + DrawText(mSX + dx3, sy, getHallOfFameScoreText(entry), font_nr4); } redraw_mask |= REDRAW_FIELD;