rnd-20040313-1-src
[rocksndiamonds.git] / src / files.c
index 154d228e6257993a10f00e67c448000976756128..cd56a7c5ba5705e14a4297d536dca8d02034c648 100644 (file)
@@ -29,7 +29,7 @@
 #define CHUNK_SIZE_NONE                -1      /* do not write chunk size    */
 #define FILE_VERS_CHUNK_SIZE   8       /* size of file version chunk */
 #define LEVEL_HEADER_SIZE      80      /* size of level file header  */
-#define LEVEL_HEADER_UNUSED    6       /* unused level header bytes  */
+#define LEVEL_HEADER_UNUSED    4       /* unused level header bytes  */
 #define LEVEL_CHUNK_CNT2_SIZE  160     /* size of level CNT2 chunk   */
 #define LEVEL_CHUNK_CNT2_UNUSED        11      /* unused CNT2 chunk bytes    */
 #define LEVEL_CHUNK_CNT3_HEADER        16      /* size of level CNT3 header  */
@@ -160,12 +160,10 @@ static void setLevelInfoToDefaults(struct LevelInfo *level)
   level->block_last_field = FALSE;
   level->sp_block_last_field = TRUE;
 
-  level->use_spring_bug = FALSE;
-
   level->can_move_into_acid_bits = ~0; /* everything can move into acid */
+  level->dont_collide_with_bits = ~0;  /* always deadly when colliding  */
 
-  level->player_can_fall_into_acid = TRUE;
-
+  level->use_spring_bug = FALSE;
   level->use_step_counter = FALSE;
 
   level->use_custom_template = FALSE;
@@ -682,15 +680,12 @@ static int LoadLevel_HEAD(FILE *file, int chunk_size, struct LevelInfo *level)
 
   level->block_last_field      = (getFile8Bit(file) == 1 ? TRUE : FALSE);
   level->sp_block_last_field   = (getFile8Bit(file) == 1 ? TRUE : FALSE);
+  level->can_move_into_acid_bits = getFile32BitBE(file);
+  level->dont_collide_with_bits = getFile8Bit(file);
 
   level->use_spring_bug                = (getFile8Bit(file) == 1 ? TRUE : FALSE);
-
-  level->can_move_into_acid_bits = getFile16BitBE(file);
-
   level->use_step_counter      = (getFile8Bit(file) == 1 ? TRUE : FALSE);
 
-  level->player_can_fall_into_acid = (getFile8Bit(file) == 1 ? TRUE : FALSE);
-
   ReadUnusedBytesFromFile(file, LEVEL_HEADER_UNUSED);
 
   return chunk_size;
@@ -2093,11 +2088,12 @@ static void LoadLevel_InitVersion(struct LevelInfo *level, char *filename)
     if (level->game_version < VERSION_IDENT(2,2,0,0))
       level->use_spring_bug = TRUE;
 
-    if (level->game_version < VERSION_IDENT(3,0,9,0))
+    if (level->game_version < VERSION_IDENT(3,1,0,0))
     {
       int i, j;
 
       level->can_move_into_acid_bits = 0; /* nothing can move into acid */
+      level->dont_collide_with_bits = 0; /* nothing is deadly when colliding */
 
       setMoveIntoAcidProperty(level, EL_ROBOT,     TRUE);
       setMoveIntoAcidProperty(level, EL_SATELLITE, TRUE);
@@ -2418,15 +2414,12 @@ static void SaveLevel_HEAD(FILE *file, struct LevelInfo *level)
 
   putFile8Bit(file, (level->block_last_field ? 1 : 0));
   putFile8Bit(file, (level->sp_block_last_field ? 1 : 0));
+  putFile32BitBE(file, level->can_move_into_acid_bits);
+  putFile8Bit(file, level->dont_collide_with_bits);
 
   putFile8Bit(file, (level->use_spring_bug ? 1 : 0));
-
-  putFile16BitBE(file, level->can_move_into_acid_bits);
-
   putFile8Bit(file, (level->use_step_counter ? 1 : 0));
 
-  putFile8Bit(file, (level->player_can_fall_into_acid ? 1 : 0));
-
   WriteUnusedBytesToFile(file, LEVEL_HEADER_UNUSED);
 }