/***********************************************************
* 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 *
***********************************************************/
BOOL CreateNewScoreFile()
{
int i,j,k;
- char filename[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
char empty_alias[MAX_NAMELEN];
FILE *file;
BOOL CreateNewNamesFile(int mode)
{
- char filename[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
FILE *file;
if (mode==PLAYER_LEVEL)
BOOL LoadLevelInfo()
{
int i;
- char filename[MAX_FILENAME];
- char cookie[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
+ char cookie[MAX_FILENAME_LEN];
FILE *file;
sprintf(filename,"%s/%s",level_directory,LEVDIR_FILENAME);
if (!(file=fopen(filename,"r")))
{
- fprintf(stderr,"%s: cannot load level info '%s'!\n",progname,filename);
+ Error(ERR_RETURN, "cannot load level info '%s'", filename);
return(FALSE);
}
fscanf(file,"%s\n",cookie);
if (strcmp(cookie,LEVELDIR_COOKIE)) /* ungültiges Format? */
{
- fprintf(stderr,"%s: wrong format of level info file!\n",progname);
+ Error(ERR_RETURN, "wrong format of level info file");
fclose(file);
return(FALSE);
}
if (!num_leveldirs)
{
- fprintf(stderr,"%s: empty level info '%s'!\n",progname,filename);
+ Error(ERR_RETURN, "empty level info '%s'", filename);
return(FALSE);
}
void LoadLevel(int level_nr)
{
int i,x,y;
- char filename[MAX_FILENAME];
- char cookie[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
+ char cookie[MAX_FILENAME_LEN];
FILE *file;
sprintf(filename,"%s/%s/%d",
level_directory,leveldir[leveldir_nr].filename,level_nr);
- if (!(file=fopen(filename,"r")))
- {
-/*
- fprintf(stderr,"%s: cannot load level '%s'!\n",progname,filename);
-*/
- }
+ if (!(file = fopen(filename,"r")))
+ Error(ERR_RETURN, "cannot load level '%s' - creating new level", filename);
else
{
fgets(cookie,LEVEL_COOKIE_LEN,file);
if (strcmp(cookie,LEVEL_COOKIE)) /* ungültiges Format? */
{
- fprintf(stderr,"%s: wrong format of level file '%s'!\n",
- progname,filename);
+ Error(ERR_RETURN, "wrong format of level file '%s'", filename);
fclose(file);
file = NULL;
}
void LoadLevelTape(int level_nr)
{
int i;
- char filename[MAX_FILENAME];
- char cookie[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
+ char cookie[MAX_FILENAME_LEN];
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);
+ Error(ERR_RETURN, "wrong format of level recording file '%s'", filename);
fclose(file);
file = NULL;
}
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].action[j] = MV_NO_MOVING;
+ continue;
+ }
+ tape.pos[i].action[j] = fgetc(file);
+ }
+
+ tape.pos[i].delay = fgetc(file);
+
if (feof(file))
break;
}
fclose(file);
if (i != tape.length)
- fprintf(stderr,"%s: level recording file '%s' corrupted!\n",
- progname,filename);
+ Error(ERR_RETURN, "level recording file '%s' corrupted", filename);
tape.length_seconds = GetTapeLength();
}
void LoadScore(int level_nr)
{
int i,j;
- char filename[MAX_FILENAME];
- char cookie[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
+ char cookie[MAX_FILENAME_LEN];
FILE *file;
sprintf(filename,"%s/%s/%s",
level_directory,leveldir[leveldir_nr].filename,SCORE_FILENAME);
- if (!(file=fopen(filename,"r")))
+ if (!(file = fopen(filename,"r")))
{
if (!CreateNewScoreFile())
- {
- fprintf(stderr,"%s: cannot create score file '%s'!\n",
- progname,filename);
- }
- else if (!(file=fopen(filename,"r")))
- {
- fprintf(stderr,"%s: cannot load score for level %d!\n",
- progname,level_nr);
- }
+ Error(ERR_RETURN, "cannot create score file '%s'", filename);
+ else if (!(file = fopen(filename,"r")))
+ Error(ERR_RETURN, "cannot load score for level %d", level_nr);
}
if (file)
fgets(cookie,SCORE_COOKIE_LEN,file);
if (strcmp(cookie,SCORE_COOKIE)) /* ungültiges Format? */
{
- fprintf(stderr,"%s: wrong format of score file!\n",progname);
+ Error(ERR_RETURN, "wrong format of score file '%s'", filename);
fclose(file);
file = NULL;
}
void LoadPlayerInfo(int mode)
{
int i;
- char filename[MAX_FILENAME];
- char cookie[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
+ char cookie[MAX_FILENAME_LEN];
FILE *file;
char *login_name = GetLoginName();
struct PlayerInfo default_player, new_player;
new_player = default_player;
- if (!(file=fopen(filename,"r")))
+ if (!(file = fopen(filename,"r")))
{
if (!CreateNewNamesFile(mode))
- {
- fprintf(stderr,"%s: cannot create names file '%s'!\n",
- progname,filename);
- }
- else if (!(file=fopen(filename,"r")))
- {
- fprintf(stderr,"%s: cannot load player information '%s'!\n",
- progname,filename);
- }
+ Error(ERR_RETURN, "cannot create names file '%s'", filename);
+ else if (!(file = fopen(filename,"r")))
+ Error(ERR_RETURN, "cannot load player information file '%s'", filename);
}
if (file)
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);
+ Error(ERR_RETURN, "wrong format of names file '%s'", filename);
fclose(file);
file = NULL;
}
new_player = default_player;
fclose(file);
- if (!(file=fopen(filename,"a")))
- {
- fprintf(stderr,"%s: cannot append new player to names file '%s'!\n",
- progname,filename);
- }
+ if (!(file = fopen(filename,"a")))
+ Error(ERR_RETURN, "cannot append new player to names file '%s'",
+ filename);
else
{
for(i=0;i<MAX_NAMELEN;i++)
void SaveLevel(int level_nr)
{
int i,x,y;
- char filename[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
FILE *file;
sprintf(filename,"%s/%s/%d",
if (!(file=fopen(filename,"w")))
{
- fprintf(stderr,"%s: cannot save level file '%s'!\n",progname,filename);
+ Error(ERR_RETURN, "cannot save level file '%s'", filename);
return;
}
void SaveLevelTape(int level_nr)
{
int i;
- char filename[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
FILE *file;
BOOL new_tape = TRUE;
new_tape = FALSE;
fclose(file);
- if (!AreYouSure("Replace old tape ?",AYS_ASK))
+ if (!Request("Replace old tape ?",REQ_ASK))
return;
}
if (!(file=fopen(filename,"w")))
{
- fprintf(stderr,"%s: cannot save level recording file '%s'!\n",
- progname,filename);
+ Error(ERR_RETURN, "cannot save level recording file '%s'", filename);
return;
}
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].action[j],file);
+
fputc(tape.pos[i].delay,file);
}
tape.changed = FALSE;
if (new_tape)
- AreYouSure("tape saved !",AYS_CONFIRM);
+ Request("tape saved !",REQ_CONFIRM);
}
void SaveScore(int level_nr)
{
int i,j;
- char filename[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
FILE *file;
sprintf(filename,"%s/%s/%s",
if (!(file=fopen(filename,"r+")))
{
- fprintf(stderr,"%s: cannot save score for level %d!\n",
- progname,level_nr);
+ Error(ERR_RETURN, "cannot save score for level %d", level_nr);
return;
}
void SavePlayerInfo(int mode)
{
int i;
- char filename[MAX_FILENAME];
- char cookie[MAX_FILENAME];
+ char filename[MAX_FILENAME_LEN];
+ char cookie[MAX_FILENAME_LEN];
FILE *file;
struct PlayerInfo default_player;
int version_10_file = FALSE;
else
sprintf(filename,"%s/%s",CONFIG_PATH,NAMES_FILENAME);
- if (!(file=fopen(filename,"r+")))
+ if (!(file = fopen(filename,"r+")))
{
- fprintf(stderr,"%s: cannot save player information '%s'!\n",
- progname,filename);
+ Error(ERR_RETURN, "cannot save player information to file '%s'", filename);
return;
}
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);
+ Error(ERR_RETURN, "wrong format of names file '%s'", filename);
fclose(file);
return;
}
fscanf(file,"%s",cookie);
if (strcmp(cookie,JOYSTICK_COOKIE)) /* ungültiges Format? */
{
- fprintf(stderr,"%s: wrong format of joystick file!\n",progname);
+ Error(ERR_RETURN, "wrong format of joystick file '%s'", JOYDAT_FILE);
fclose(file);
return;
}
if (!(file=fopen(JOYDAT_FILE,"w")))
{
- fprintf(stderr,"%s: cannot save joystick calibration data!\n",progname);
+ Error(ERR_RETURN, "cannot save joystick calibration data to file '%s'",
+ JOYDAT_FILE);
return;
}