/***********************************************************
* 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 *
***********************************************************/
char filename[MAX_FILENAME];
char cookie[MAX_FILENAME];
FILE *file;
+ BOOL levelrec_10 = FALSE;
#ifndef MSDOS
sprintf(filename,"%s/%s/%d.tape",
{
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);
for(i=0;i<tape.length;i++)
{
- if (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; j<MAX_PLAYERS; j++)
+ {
+ if (levelrec_10 && j>0)
+ {
+ 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;
}
if (!file)
{
- player = default_player;
+ *local_player = default_player;
level_nr = default_player.level_nr;
return;
}
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);
}
for(i=0;i<tape.length;i++)
{
- fputc(tape.pos[i].joystickdata,file);
+ int j;
+
+ for(j=0; j<MAX_PLAYERS; j++)
+ fputc(tape.pos[i].joystickdata[j],file);
+
fputc(tape.pos[i].delay,file);
}
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))
+ if (!strncmp(default_player.login_name,
+ local_player->login_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;i<MAX_NAMELEN;i++)
- fputc(player.login_name[i],file);
+ fputc(local_player->login_name[i],file);
for(i=0;i<MAX_NAMELEN;i++)
- fputc(player.alias_name[i],file);
- fputc(player.handicap,file);
- fputc(player.setup / 256,file);
- fputc(player.setup % 256,file);
- fputc(player.leveldir_nr,file);
+ fputc(local_player->alias_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);
}