X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ffiles.c;h=9e35c06009c35736d877fc900bd77cdeec02c214;hp=bbd282a399dbd1e76e9c984fbf263714600e26cc;hb=823bddb0d9cc63ddda17a2cd20266aa3b82bde38;hpb=b7d31643c9c84104fb3ebef778e545928610ff65 diff --git a/src/files.c b/src/files.c index bbd282a3..9e35c060 100644 --- a/src/files.c +++ b/src/files.c @@ -1,13 +1,12 @@ /*********************************************************** * Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* ©1995 Artsoft Development * -* Holger Schemel * -* 33659 Bielefeld-Senne * -* Telefon: (0521) 493245 * -* eMail: aeglos@valinor.owl.de * -* aeglos@uni-paderborn.de * -* q99492@pbhrzx.uni-paderborn.de * +* (c) 1995-98 Artsoft Entertainment * +* Holger Schemel * +* Oststrasse 11a * +* 33604 Bielefeld * +* phone: ++49 +521 290471 * +* email: aeglos@valinor.owl.de * *----------------------------------------------------------* * files.h * ***********************************************************/ @@ -220,15 +219,23 @@ void LoadLevelTape(int level_nr) char filename[MAX_FILENAME]; char cookie[MAX_FILENAME]; FILE *file; + BOOL levelrec_10 = FALSE; +#ifndef MSDOS sprintf(filename,"%s/%s/%d.tape", level_directory,leveldir[leveldir_nr].filename,level_nr); +#else + sprintf(filename,"%s/%s/%d.tap", + level_directory,leveldir[leveldir_nr].filename,level_nr); +#endif if ((file=fopen(filename,"r"))) { fgets(cookie,LEVELREC_COOKIE_LEN,file); fgetc(file); - if (strcmp(cookie,LEVELREC_COOKIE)) /* ungültiges Format? */ + if (!strcmp(cookie,LEVELREC_COOKIE_10)) /* old 1.0 tape format */ + levelrec_10 = TRUE; + else if (strcmp(cookie,LEVELREC_COOKIE)) /* unknown tape format */ { fprintf(stderr,"%s: wrong format of level recording file '%s'!\n", progname,filename); @@ -257,10 +264,23 @@ void LoadLevelTape(int level_nr) for(i=0;i=MAX_TAPELEN) + int j; + + if (i >= MAX_TAPELEN) break; - tape.pos[i].joystickdata = fgetc(file); - tape.pos[i].delay = fgetc(file); + + for(j=0; j0) + { + tape.pos[i].joystickdata[j] = MV_NO_MOVING; + continue; + } + tape.pos[i].joystickdata[j] = fgetc(file); + } + + tape.pos[i].delay = fgetc(file); + if (feof(file)) break; } @@ -389,7 +409,7 @@ void LoadPlayerInfo(int mode) if (!file) { - player = default_player; + *local_player = default_player; level_nr = default_player.level_nr; return; } @@ -448,19 +468,19 @@ void LoadPlayerInfo(int mode) if (mode==PLAYER_SETUP) { - player = new_player; - if (player.leveldir_nr < num_leveldirs) - leveldir_nr = player.leveldir_nr; + *local_player = new_player; + if (local_player->leveldir_nr < num_leveldirs) + leveldir_nr = local_player->leveldir_nr; else leveldir_nr = 0; } else { - player.handicap = new_player.handicap; - player.level_nr = new_player.level_nr; + local_player->handicap = new_player.handicap; + local_player->level_nr = new_player.level_nr; } - level_nr = player.level_nr; + level_nr = local_player->level_nr; fclose(file); } @@ -521,8 +541,13 @@ void SaveLevelTape(int level_nr) FILE *file; BOOL new_tape = TRUE; +#ifndef MSDOS sprintf(filename,"%s/%s/%d.tape", level_directory,leveldir[leveldir_nr].filename,level_nr); +#else + sprintf(filename,"%s/%s/%d.tap", + level_directory,leveldir[leveldir_nr].filename,level_nr); +#endif /* Testen, ob bereits eine Aufnahme existiert */ if ((file=fopen(filename,"r"))) @@ -561,7 +586,11 @@ void SaveLevelTape(int level_nr) for(i=0;ilogin_name, MAX_NAMELEN-1)) { fseek(file,-(2*MAX_NAMELEN+1+2+1+(version_10_file ? 0 : 11)),SEEK_CUR); break; } } - player.level_nr = level_nr; + local_player->level_nr = level_nr; for(i=0;ilogin_name[i],file); for(i=0;ialias_name[i],file); + fputc(local_player->handicap,file); + fputc(local_player->setup / 256,file); + fputc(local_player->setup % 256,file); + fputc(local_player->leveldir_nr,file); if (!version_10_file) { - fputc(player.level_nr,file); + fputc(local_player->level_nr,file); for(i=0;i<10;i++) /* currently unused bytes */ fputc(0,file); } @@ -694,6 +724,7 @@ void LoadJoystickData() if (joystick_status==JOYSTICK_OFF) return; +#ifndef MSDOS if (!(file=fopen(JOYDAT_FILE,"r"))) return; @@ -716,6 +747,9 @@ void LoadJoystickData() fclose(file); CheckJoystickData(); +#else + load_joystick_data(JOYDAT_FILE); +#endif } void SaveJoystickData() @@ -726,6 +760,7 @@ void SaveJoystickData() if (joystick_status==JOYSTICK_OFF) return; +#ifndef MSDOS CheckJoystickData(); if (!(file=fopen(JOYDAT_FILE,"w"))) @@ -746,4 +781,8 @@ void SaveJoystickData() fclose(file); chmod(JOYDAT_FILE, JOYDAT_PERMS); +#else + save_joystick_data(JOYDAT_FILE); +#endif + }