+void SaveLevelTape(int level_nr)
+{
+ int i;
+ char filename[MAX_FILENAME_LEN];
+ FILE *file;
+ boolean 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")))
+ {
+ new_tape = FALSE;
+ fclose(file);
+
+ if (!Request("Replace old tape ?",REQ_ASK))
+ return;
+ }
+
+ if (!(file=fopen(filename,"w")))
+ {
+ Error(ERR_WARN, "cannot save level recording file '%s'", filename);
+ return;
+ }
+
+ fputs(LEVELREC_COOKIE,file); /* Formatkennung */
+ fputc(0x0a,file);
+
+ fputc((tape.random_seed >> 24) & 0xff,file);
+ fputc((tape.random_seed >> 16) & 0xff,file);
+ fputc((tape.random_seed >> 8) & 0xff,file);
+ fputc((tape.random_seed >> 0) & 0xff,file);
+
+ fputc((tape.date >> 24) & 0xff,file);
+ fputc((tape.date >> 16) & 0xff,file);
+ fputc((tape.date >> 8) & 0xff,file);
+ fputc((tape.date >> 0) & 0xff,file);
+
+ fputc((tape.length >> 24) & 0xff,file);
+ fputc((tape.length >> 16) & 0xff,file);
+ fputc((tape.length >> 8) & 0xff,file);
+ fputc((tape.length >> 0) & 0xff,file);
+
+ for(i=0;i<tape.length;i++)
+ {
+ int j;
+
+ for(j=0; j<MAX_PLAYERS; j++)
+ fputc(tape.pos[i].action[j],file);
+
+ fputc(tape.pos[i].delay,file);
+ }
+
+ fclose(file);
+
+ chmod(filename, LEVREC_PERMS);
+
+ tape.changed = FALSE;
+
+ if (new_tape)
+ Request("tape saved !",REQ_CONFIRM);
+}
+
+boolean CreateNewScoreFile()
+{
+ int i,j,k;
+ char filename[MAX_FILENAME_LEN];
+ char empty_alias[MAX_NAMELEN];
+ FILE *file;
+
+ sprintf(filename,"%s/%s/%s",
+ level_directory,leveldir[leveldir_nr].filename,SCORE_FILENAME);
+
+ if (!(file=fopen(filename,"w")))
+ return(FALSE);
+
+ for(i=0;i<MAX_NAMELEN;i++)
+ empty_alias[i] = 0;
+ strncpy(empty_alias,EMPTY_ALIAS,MAX_NAMELEN-1);
+
+ fputs(SCORE_COOKIE,file); /* Formatkennung */
+ for(i=0;i<leveldir[leveldir_nr].levels;i++)
+ {
+ for(j=0;j<MAX_SCORE_ENTRIES;j++)
+ {
+ for(k=0;k<MAX_NAMELEN;k++)
+ fputc(empty_alias[k],file);
+ fputc(0,file);
+ fputc(0,file);
+ }
+ }
+ fclose(file);
+
+ chmod(filename, SCORE_PERMS);
+ return(TRUE);
+}
+