rnd-20030901-B-src
[rocksndiamonds.git] / src / init.c
index c129a676540638525f22d3e1c38facde79b61573..05619cc4c1fecfd35b7204760c04949fbceb1782 100644 (file)
@@ -554,22 +554,24 @@ void InitElementGraphicInfo()
   {
     for (act=0; act<NUM_ACTIONS; act++)
     {
-      if (graphic_info[element_info[i].graphic[act]].bitmap == NULL)
+      int graphic;
+
+      graphic = element_info[i].graphic[act];
+      if (graphic > 0 && graphic_info[graphic].bitmap == NULL)
        element_info[i].graphic[act] = -1;
 
-      if (graphic_info[element_info[i].crumbled[act]].bitmap == NULL)
+      graphic = element_info[i].crumbled[act];
+      if (graphic > 0 && graphic_info[graphic].bitmap == NULL)
        element_info[i].crumbled[act] = -1;
 
       for (dir=0; dir<NUM_DIRECTIONS; dir++)
       {
-       int graphic;
-
        graphic = element_info[i].direction_graphic[act][dir];
-       if (graphic_info[graphic].bitmap == NULL)
+       if (graphic > 0 && graphic_info[graphic].bitmap == NULL)
          element_info[i].direction_graphic[act][dir] = -1;
 
        graphic = element_info[i].direction_crumbled[act][dir];
-       if (graphic_info[graphic].bitmap == NULL)
+       if (graphic > 0 && graphic_info[graphic].bitmap == NULL)
          element_info[i].direction_crumbled[act][dir] = -1;
       }
     }
@@ -892,6 +894,10 @@ static void InitGraphicInfo()
 
   graphic_info = checked_calloc(num_images * sizeof(struct GraphicInfo));
 
+#if 0
+  printf("::: graphic_info: %d entries\n", num_images);
+#endif
+
 #if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
   if (clipmasks_initialized)
   {
@@ -2829,6 +2835,12 @@ void InitElementPropertiesEngine(int engine_version)
             element_info[i].token_name,
             element_info[i].crumbled[ACTION_DEFAULT]);
 #endif
+
+    /* ---------- CAN_CHANGE ----------------------------------------------- */
+    SET_PROPERTY(i, EP_CAN_CHANGE, FALSE);     /* default: cannot change */
+    for (j=0; j < element_info[i].num_change_pages; j++)
+      if (element_info[i].change_page[j].can_change)
+       SET_PROPERTY(i, EP_CAN_CHANGE, TRUE);
   }
 
 #if 0