/***********************************************************
* Rocks'n'Diamonds -- McDuffin Strikes Back! *
*----------------------------------------------------------*
-* (c) 1995-2001 Artsoft Entertainment *
+* (c) 1995-2002 Artsoft Entertainment *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
for(x=0; x<MAX_LEV_FIELDX; x++)
for(y=0; y<MAX_LEV_FIELDY; y++)
- Feld[x][y] = Ur[x][y] = EL_ERDREICH;
+ Feld[x][y] = Ur[x][y] = EL_SAND;
level.time = 100;
level.gems_needed = 0;
level.time_wheel = 10;
level.time_light = 10;
level.time_timegate = 10;
- level.amoeba_content = EL_DIAMANT;
+ level.amoeba_content = EL_DIAMOND;
level.double_speed = FALSE;
level.gravity = FALSE;
level.em_slippery_gems = FALSE;
for(x=0; x<3; x++)
for(y=0; y<3; y++)
level.yam_content[i][x][y] =
- (i < STD_ELEMENT_CONTENTS ? EL_FELSBROCKEN : EL_LEERRAUM);
+ (i < STD_ELEMENT_CONTENTS ? EL_ROCK : EL_EMPTY);
- Feld[0][0] = Ur[0][0] = EL_SPIELFIGUR;
+ Feld[0][0] = Ur[0][0] = EL_PLAYER1;
Feld[STD_LEV_FIELDX-1][STD_LEV_FIELDY-1] =
- Ur[STD_LEV_FIELDX-1][STD_LEV_FIELDY-1] = EL_AUSGANG_ZU;
+ Ur[STD_LEV_FIELDX-1][STD_LEV_FIELDY-1] = EL_EXIT_CLOSED;
- BorderElement = EL_BETON;
+ BorderElement = EL_STEELWALL;
/* try to determine better author name than 'anonymous' */
if (strcmp(leveldir_current->author, ANONYMOUS_NAME) != 0)
static int checkLevelElement(int element)
{
- if (element >= EL_FIRST_RUNTIME_EL)
+ if (element >= NUM_FILE_ELEMENTS)
{
Error(ERR_WARN, "invalid level element %d", element);
- element = EL_CHAR_FRAGE;
+ element = EL_CHAR_QUESTION;
}
+ else if (element == EL_PLAYER_OBSOLETE)
+ element = EL_PLAYER1;
+ else if (element == EL_KEY_OBSOLETE)
+ element = EL_KEY1;
return element;
}
if (num_contents < 1 || num_contents > MAX_ELEMENT_CONTENTS)
num_contents = STD_ELEMENT_CONTENTS;
- if (element == EL_MAMPFER)
+ if (element == EL_YAMYAM)
{
level->num_yam_contents = num_contents;
for(x=0; x<3; x++)
level->yam_content[i][x][y] = content_array[i][x][y];
}
- else if (element == EL_AMOEBE_BD)
+ else if (element == EL_BD_AMOEBA)
{
level->amoeba_content = content_array[0][0][0];
}
for(i=0; i<STD_ELEMENT_CONTENTS; i++)
for(y=0; y<3; y++)
for(x=0; x<3; x++)
- fputc((level->encoding_16bit_yamyam ? EL_LEERRAUM :
+ fputc((level->encoding_16bit_yamyam ? EL_EMPTY :
level->yam_content[i][x][y]),
file);
fputc(level->amoeba_speed, file);
fputc(level->time_magic_wall, file);
fputc(level->time_wheel, file);
- fputc((level->encoding_16bit_amoeba ? EL_LEERRAUM : level->amoeba_content),
+ fputc((level->encoding_16bit_amoeba ? EL_EMPTY : level->amoeba_content),
file);
fputc((level->double_speed ? 1 : 0), file);
fputc((level->gravity ? 1 : 0), file);
{
int i, x, y;
- fputc(EL_MAMPFER, file);
+ fputc(EL_YAMYAM, file);
fputc(level->num_yam_contents, file);
fputc(0, file);
fputc(0, file);
int num_contents, content_xsize, content_ysize;
int content_array[MAX_ELEMENT_CONTENTS][3][3];
- if (element == EL_MAMPFER)
+ if (element == EL_YAMYAM)
{
num_contents = level->num_yam_contents;
content_xsize = 3;
for(x=0; x<3; x++)
content_array[i][x][y] = level->yam_content[i][x][y];
}
- else if (element == EL_AMOEBE_BD)
+ else if (element == EL_BD_AMOEBA)
{
num_contents = 1;
content_xsize = 1;
for(i=0; i<MAX_ELEMENT_CONTENTS; i++)
for(y=0; y<3; y++)
for(x=0; x<3; x++)
- content_array[i][x][y] = EL_LEERRAUM;
+ content_array[i][x][y] = EL_EMPTY;
content_array[0][0][0] = level->amoeba_content;
}
else
level.num_yam_contents != STD_ELEMENT_CONTENTS)
{
putFileChunkBE(file, "CNT2", LEVEL_CHUNK_CNT2_SIZE);
- SaveLevel_CNT2(file, &level, EL_MAMPFER);
+ SaveLevel_CNT2(file, &level, EL_YAMYAM);
}
if (level.encoding_16bit_amoeba)
{
putFileChunkBE(file, "CNT2", LEVEL_CHUNK_CNT2_SIZE);
- SaveLevel_CNT2(file, &level, EL_AMOEBE_BD);
+ SaveLevel_CNT2(file, &level, EL_BD_AMOEBA);
}
fclose(file);
int i;
/* always start with reliable default values (empty tape) */
- tape.file_version = FILE_VERSION_ACTUAL;
- tape.game_version = GAME_VERSION_ACTUAL;
TapeErase();
/* default values (also for pre-1.2 tapes) with only the first player */
if (tape->file_version >= FILE_VERSION_1_2)
{
byte store_participating_players = fgetc(file);
-
- ReadUnusedBytesFromFile(file, TAPE_HEADER_UNUSED);
+ int engine_version;
/* since version 1.2, tapes store which players participate in the tape */
tape->num_participating_players = 0;
}
}
- ReadUnusedBytesFromFile(file, 4);
+ ReadUnusedBytesFromFile(file, TAPE_HEADER_UNUSED);
+
+ engine_version = getFileVersion(file);
+ if (engine_version > 0)
+ tape->engine_version = engine_version;
}
return chunk_size;
fputc(store_participating_players, file);
+ /* unused bytes not at the end here for 4-byte alignment of engine_version */
WriteUnusedBytesToFile(file, TAPE_HEADER_UNUSED);
- WriteUnusedBytesToFile(file, 4);
+ putFileVersion(file, tape->engine_version);
}
static void SaveTape_BODY(FILE *file, struct TapeInfo *tape)
printf("\n");
printf("-------------------------------------------------------------------------------\n");
- printf("Tape of Level %d (file version %06d, game version %06d\n",
+ printf("Tape of Level %d (file version %06d, game version %06d)\n",
tape->level_nr, tape->file_version, tape->game_version);
printf("-------------------------------------------------------------------------------\n");