rnd-20030507-2-src
[rocksndiamonds.git] / src / files.c
index 41cc12714eff0f0f53817ad465c39b1144d3586e..fadd0b6de8614682dfc32a69124cccaab36c2080 100644 (file)
@@ -45,7 +45,7 @@
 
 static void setLevelInfoToDefaults()
 {
-  int i, x, y;
+  int i, j, x, y;
 
   level.file_version = FILE_VERSION_ACTUAL;
   level.game_version = GAME_VERSION_ACTUAL;
@@ -97,8 +97,17 @@ static void setLevelInfoToDefaults()
 
   for (i=0; i < NUM_CUSTOM_ELEMENTS; i++)
   {
-    level.custom_element_successor[i] = EL_EMPTY_SPACE;
-    Properties[EL_CUSTOM_START + i][EP_BITFIELD_BASE] = EP_BITMASK_DEFAULT;
+    int element = EL_CUSTOM_START + i;
+
+    level.custom_element[i].change.events = CE_BITMASK_DEFAULT;
+    level.custom_element[i].change.gfx_element = element;
+    level.custom_element[i].change.successor = EL_EMPTY_SPACE;
+    level.custom_element[i].change.delay_fixed = 0;
+    level.custom_element[i].change.delay_random = 0;
+
+    /* start with no properties at all */
+    for (j=0; j < NUM_EP_BITFIELDS; j++)
+      Properties[element][j] = EP_BITMASK_DEFAULT;
   }
 
   BorderElement = EL_STEELWALL;
@@ -365,7 +374,7 @@ static int LoadLevel_CUS2(FILE *file, int chunk_size, struct LevelInfo *level)
     int i = element - EL_CUSTOM_START;
 
     if (IS_CUSTOM_ELEMENT(element))
-      level->custom_element_successor[i] = custom_element_successor;
+      level->custom_element[i].change.successor = custom_element_successor;
     else
       Error(ERR_WARN, "invalid custom element number %d", element);
   }
@@ -755,12 +764,12 @@ static void SaveLevel_CUS2(FILE *file, struct LevelInfo *level,
   {
     int element = EL_CUSTOM_START + i;
 
-    if (level->custom_element_successor[i] != EL_EMPTY_SPACE)
+    if (level->custom_element[i].change.successor != EL_EMPTY_SPACE)
     {
       if (check < num_changed_custom_elements)
       {
        putFile16BitBE(file, element);
-       putFile16BitBE(file, level->custom_element_successor[i]);
+       putFile16BitBE(file, level->custom_element[i].change.successor);
       }
 
       check++;
@@ -820,7 +829,7 @@ void SaveLevel(int level_nr)
 
   /* check for non-standard custom elements and calculate "CUS2" chunk size */
   for (i=0; i < NUM_CUSTOM_ELEMENTS; i++)
-    if (level.custom_element_successor[i] != EL_EMPTY_SPACE)
+    if (level.custom_element[i].change.successor != EL_EMPTY_SPACE)
       num_changed_custom_elements2++;
 
   putFileChunkBE(file, "RND1", CHUNK_SIZE_UNDEFINED);