rnd-20040118-2-src
[rocksndiamonds.git] / src / files.c
index 214c50af2ccfde08b83c316295d5876cb831af46..2f53a622faf1ad3ced0465ba89559f31ab45d32a 100644 (file)
@@ -210,8 +210,11 @@ static void setLevelInfoToDefaults(struct LevelInfo *level)
       element_info[element].move_delay_random = 0;
 
       element_info[element].move_pattern = MV_ALL_DIRECTIONS;
-      element_info[element].move_direction_initial = MV_NO_MOVING;
+      element_info[element].move_direction_initial = MV_AUTOMATIC;
       element_info[element].move_stepsize = TILEX / 8;
+      element_info[element].move_enter_element = EL_EMPTY_SPACE;
+      element_info[element].move_leave_element = EL_EMPTY_SPACE;
+      element_info[element].move_leave_type = LEAVE_TYPE_UNLIMITED;
 
       element_info[element].slippery_type = SLIPPERY_ANY_RANDOM;
 
@@ -238,7 +241,7 @@ static void setLevelInfoToDefaults(struct LevelInfo *level)
 
       element_info[element].modified_settings = FALSE;
     }
-    else if (IS_GROUP_ELEMENT(element))
+    else if (IS_GROUP_ELEMENT(element) || element == EL_INTERNAL_EDITOR)
     {
       /* initialize memory for list of elements in group */
       if (element_info[element].group == NULL)
@@ -739,7 +742,7 @@ static int LoadLevel_CUS3(FILE *file, int chunk_size, struct LevelInfo *level)
     {
       Error(ERR_WARN, "invalid custom element number %d", element);
 
-      element = EL_DUMMY;
+      element = EL_INTERNAL_DUMMY;
     }
 
     for (j = 0; j < MAX_ELEMENT_NAME_LEN; j++)
@@ -870,8 +873,12 @@ static int LoadLevel_CUS4(FILE *file, int chunk_size, struct LevelInfo *level)
     for (x = 0; x < 3; x++)
       ei->content[x][y] = checkLevelElement(getFile16BitBE(file));
 
+  ei->move_enter_element = checkLevelElement(getFile16BitBE(file));
+  ei->move_leave_element = checkLevelElement(getFile16BitBE(file));
+  ei->move_leave_type = getFile8Bit(file);
+
   /* some free bytes for future custom property values and padding */
-  ReadUnusedBytesFromFile(file, 12);
+  ReadUnusedBytesFromFile(file, 7);
 
   /* read change property values */
 
@@ -2034,8 +2041,12 @@ static void SaveLevel_CUS4(FILE *file, struct LevelInfo *level, int element)
     for (x = 0; x < 3; x++)
       putFile16BitBE(file, ei->content[x][y]);
 
+  putFile16BitBE(file, ei->move_enter_element);
+  putFile16BitBE(file, ei->move_leave_element);
+  putFile8Bit(file, ei->move_leave_type);
+
   /* some free bytes for future custom property values and padding */
-  WriteUnusedBytesToFile(file, 12);
+  WriteUnusedBytesToFile(file, 7);
 
   /* write change property values */