X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffiles.c;h=4dc7fceb920713954d13f135147dec071bc433b8;hb=702700b34e5a5d696b701a0aed89001e075d50f5;hp=612d09422e2733604c2815456f84ca30f269d033;hpb=77eea34405c119f20f461acae08cd77ec5c21dd6;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 612d0942..4dc7fceb 100644 --- a/src/files.c +++ b/src/files.c @@ -8390,6 +8390,7 @@ static void setScoreInfoToDefaults(void) { strcpy(scores.entry[i].name, EMPTY_PLAYER_NAME); scores.entry[i].score = 0; + scores.entry[i].time = 0; } } @@ -8508,6 +8509,18 @@ static int LoadScore_SCOR(File *file, int chunk_size, struct ScoreInfo *scores) return chunk_size; } +static int LoadScore_TIME(File *file, int chunk_size, struct ScoreInfo *scores) +{ + int i; + + for (i = 0; i < scores->num_entries; i++) + scores->entry[i].time = getFile32BitBE(file); + + chunk_size = scores->num_entries * 4; + + return chunk_size; +} + void LoadScore(int nr) { char *filename = getScoreFilename(nr); @@ -8577,6 +8590,7 @@ void LoadScore(int nr) { "INFO", -1, LoadScore_INFO }, { "NAME", -1, LoadScore_NAME }, { "SCOR", -1, LoadScore_SCOR }, + { "TIME", -1, LoadScore_TIME }, { NULL, 0, NULL } }; @@ -8695,6 +8709,14 @@ static void SaveScore_SCOR(FILE *file, struct ScoreInfo *scores) putFile16BitBE(file, scores->entry[i].score); } +static void SaveScore_TIME(FILE *file, struct ScoreInfo *scores) +{ + int i; + + for (i = 0; i < scores->num_entries; i++) + putFile32BitBE(file, scores->entry[i].time); +} + static void SaveScoreToFilename(char *filename) { FILE *file; @@ -8702,6 +8724,7 @@ static void SaveScoreToFilename(char *filename) int info_chunk_size; int name_chunk_size; int scor_chunk_size; + int time_chunk_size; if (!(file = fopen(filename, MODE_WRITE))) { @@ -8713,6 +8736,7 @@ static void SaveScoreToFilename(char *filename) info_chunk_size = 2 + (strlen(scores.level_identifier) + 1) + 2 + 2; name_chunk_size = scores.num_entries * MAX_PLAYER_NAME_LEN; scor_chunk_size = scores.num_entries * 2; + time_chunk_size = scores.num_entries * 4; putFileChunkBE(file, "RND1", CHUNK_SIZE_UNDEFINED); putFileChunkBE(file, "SCOR", CHUNK_SIZE_NONE); @@ -8729,6 +8753,9 @@ static void SaveScoreToFilename(char *filename) putFileChunkBE(file, "SCOR", scor_chunk_size); SaveScore_SCOR(file, &scores); + putFileChunkBE(file, "TIME", time_chunk_size); + SaveScore_TIME(file, &scores); + fclose(file); SetFilePermissions(filename, permissions); @@ -8751,6 +8778,7 @@ void SaveScore(int nr) for (i = 0; i < MAX_SCORE_ENTRIES; i++) if (scores.entry[i].score == 0 && + scores.entry[i].time == 0 && strEqual(scores.entry[i].name, EMPTY_PLAYER_NAME)) break;