X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=9a50079c3598bf5d9cea9dcbba0dd66bd7ecf271;hb=4b0f1eb4220d2dbe4cffb288f745661b32c96a5b;hp=1efc0a1acbf1f4a91d006136d209e489803b7f54;hpb=046d80f9a1b3fad9d4d3d3aa92dcb3689849aebf;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 1efc0a1a..9a50079c 100644 --- a/src/files.c +++ b/src/files.c @@ -15,6 +15,8 @@ #include "files.h" #include "tools.h" #include "misc.h" +#include "tape.h" +#include "joystick.h" BOOL CreateNewScoreFile() { @@ -24,7 +26,7 @@ BOOL CreateNewScoreFile() FILE *file; sprintf(filename,"%s/%s/%s", - SCORE_PATH,leveldir[leveldir_nr].filename,SCORE_FILENAME); + level_directory,leveldir[leveldir_nr].filename,SCORE_FILENAME); if (!(file=fopen(filename,"w"))) return(FALSE); @@ -34,7 +36,7 @@ BOOL CreateNewScoreFile() strncpy(empty_alias,EMPTY_ALIAS,MAX_NAMELEN-1); fputs(SCORE_COOKIE,file); /* Formatkennung */ - for(i=0;i> 24) & 0xff,file); fputc((tape.random_seed >> 16) & 0xff,file); fputc((tape.random_seed >> 8) & 0xff,file); @@ -545,6 +579,8 @@ void SaveLevelTape(int level_nr) chmod(filename, LEVREC_PERMS); + tape.changed = FALSE; + if (new_tape) AreYouSure("tape saved !",AYS_CONFIRM); } @@ -556,7 +592,7 @@ void SaveScore(int level_nr) FILE *file; sprintf(filename,"%s/%s/%s", - SCORE_PATH,leveldir[leveldir_nr].filename,SCORE_FILENAME); + level_directory,leveldir[leveldir_nr].filename,SCORE_FILENAME); if (!(file=fopen(filename,"r+"))) { @@ -585,10 +621,11 @@ void SavePlayerInfo(int mode) char cookie[MAX_FILENAME]; FILE *file; struct PlayerInfo default_player; + int version_10_file = FALSE; if (mode==PLAYER_LEVEL) sprintf(filename,"%s/%s/%s", - NAMES_PATH,leveldir[leveldir_nr].filename,NAMES_FILENAME); + level_directory,leveldir[leveldir_nr].filename,NAMES_FILENAME); else sprintf(filename,"%s/%s",CONFIG_PATH,NAMES_FILENAME); @@ -600,7 +637,9 @@ void SavePlayerInfo(int mode) } fgets(cookie,NAMES_COOKIE_LEN,file); - if (strcmp(cookie,NAMES_COOKIE)) /* ungültiges Format? */ + if (!strcmp(cookie,NAMES_COOKIE_10)) /* altes Format? */ + version_10_file = TRUE; + else if (strcmp(cookie,NAMES_COOKIE)) /* ungültiges Format? */ { fprintf(stderr,"%s: wrong format of names file '%s'!\n", progname,filename); @@ -617,17 +656,27 @@ void SavePlayerInfo(int mode) default_player.handicap = fgetc(file); default_player.setup = (fgetc(file)<<8) | fgetc(file); default_player.leveldir_nr = fgetc(file); + if (!version_10_file) + { + default_player.level_nr = fgetc(file); + for(i=0;i<10;i++) /* currently unused bytes */ + fgetc(file); + } + else + default_player.level_nr = default_player.handicap; if (feof(file)) /* Spieler noch nicht in Liste enthalten */ break; else /* prüfen, ob Spieler in Liste enthalten */ if (!strncmp(default_player.login_name,player.login_name,MAX_NAMELEN-1)) { - fseek(file,-(2*MAX_NAMELEN+1+2+1),SEEK_CUR); + fseek(file,-(2*MAX_NAMELEN+1+2+1+(version_10_file ? 0 : 11)),SEEK_CUR); break; } } + player.level_nr = level_nr; + for(i=0;i