rnd-20040301-1-src
[rocksndiamonds.git] / src / files.c
index 5fd205cb42d859ed0cd4049a23777ef235354329..8e6ec1bb99c58cae3cca6f98f50d4bf1c7b1cefb 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    8       /* unused level header bytes  */
+#define LEVEL_HEADER_UNUSED    7       /* 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  */
@@ -162,7 +162,9 @@ static void setLevelInfoToDefaults(struct LevelInfo *level)
 
   level->use_spring_bug = FALSE;
 
-  level->can_move_into_acid = ~0;      /* everything can move into acid */
+  level->can_move_into_acid_bits = ~0; /* everything can move into acid */
+
+  level->use_step_counter = FALSE;
 
   level->use_custom_template = FALSE;
 
@@ -655,7 +657,9 @@ static int LoadLevel_HEAD(FILE *file, int chunk_size, struct LevelInfo *level)
 
   level->use_spring_bug                = (getFile8Bit(file) == 1 ? TRUE : FALSE);
 
-  level->can_move_into_acid    = getFile16BitBE(file);
+  level->can_move_into_acid_bits = getFile16BitBE(file);
+
+  level->use_step_counter      = (getFile8Bit(file) == 1 ? TRUE : FALSE);
 
   ReadUnusedBytesFromFile(file, LEVEL_HEADER_UNUSED);
 
@@ -2057,7 +2061,7 @@ static void LoadLevel_InitVersion(struct LevelInfo *level, char *filename)
     {
       int i, j;
 
-      level->can_move_into_acid = 0;   /* nothing can move into acid */
+      level->can_move_into_acid_bits = 0; /* nothing can move into acid */
 
       setMoveIntoAcidProperty(level, EL_ROBOT,     TRUE);
       setMoveIntoAcidProperty(level, EL_SATELLITE, TRUE);
@@ -2367,7 +2371,9 @@ static void SaveLevel_HEAD(FILE *file, struct LevelInfo *level)
 
   putFile8Bit(file, (level->use_spring_bug ? 1 : 0));
 
-  putFile16BitBE(file, level->can_move_into_acid);
+  putFile16BitBE(file, level->can_move_into_acid_bits);
+
+  putFile8Bit(file, (level->use_step_counter ? 1 : 0));
 
   WriteUnusedBytesToFile(file, LEVEL_HEADER_UNUSED);
 }
@@ -2908,6 +2914,7 @@ void DumpLevel(struct LevelInfo *level)
   printf("Player blocks last field:    %s\n", (level->block_last_field ? "yes" : "no"));
   printf("SP player blocks last field: %s\n", (level->sp_block_last_field ? "yes" : "no"));
   printf("use spring bug: %s\n", (level->use_spring_bug ? "yes" : "no"));
+  printf("use step counter: %s\n", (level->use_step_counter ? "yes" : "no"));
 
   printf_line("-", 79);
 }