rnd-20040224-1-src
[rocksndiamonds.git] / src / editor.c
index 4a96432c60557924e851baadb885314699ea13b3..40181b77eeaa83a82c46dcf1b9e9b0df32d4029d 100644 (file)
@@ -913,7 +913,7 @@ static struct
   },
   {
     ED_SETTINGS_XPOS(0),               ED_COUNTER_YPOS(4),
-    0,                                 999,
+    0,                                 9999,
     GADGET_ID_LEVEL_TIMELIMIT_DOWN,    GADGET_ID_LEVEL_TIMELIMIT_UP,
     GADGET_ID_LEVEL_TIMELIMIT_TEXT,    GADGET_ID_NONE,
     &level.time,
@@ -1804,7 +1804,7 @@ static struct
     "slip down from certain flat walls","use EM style slipping behaviour"
   },
   {
-    ED_SETTINGS_XPOS(0),               ED_SETTINGS_YPOS(0),
+    ED_SETTINGS_XPOS(0),               ED_SETTINGS_YPOS(1),
     GADGET_ID_USE_SPRING_BUG,          GADGET_ID_NONE,
     &level.use_spring_bug,
     NULL,
@@ -3378,6 +3378,8 @@ editor_elements_info[] =
   }
 };
 
+#if 0
+
 static struct
 {
   short element;
@@ -3577,6 +3579,8 @@ forum_sketch_element_strings[] =
   { -1,                                NULL }
 };
 
+#endif
+
 
 /*
   -----------------------------------------------------------------------------
@@ -4241,7 +4245,7 @@ static void CreateCounterButtons()
                          GDI_NUMBER_VALUE, 0,
                          GDI_NUMBER_MIN, counterbutton_info[i].min_value,
                          GDI_NUMBER_MAX, counterbutton_info[i].max_value,
-                         GDI_TEXT_SIZE, 3,
+                         GDI_TEXT_SIZE, 3,     /* minimal counter text size */
                          GDI_TEXT_FONT, font_type,
                          GDI_TEXT_FONT_ACTIVE, font_type_active,
                          GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x, gd_y,
@@ -4875,19 +4879,18 @@ static void MapCounterButtons(int id)
   int x_right = gi_up->x + gi_up->width + xoffset_right;
   int y_above = gi_down->y - yoffset_above;
   int x = gi_down->x;
-  int y = gi_up->y + yoffset;
+  int y;       /* set after gadget position was modified */
 #endif
 
-#if 1
-  /* special case needed for "score" counter gadget */
+  /* set position for "score" counter gadget */
   if (id == ED_COUNTER_ID_ELEMENT_SCORE)
   {
     ModifyGadget(gi_down, GDI_Y, SY + counterbutton_info[id].y, GDI_END);
     ModifyGadget(gi_text, GDI_Y, SY + counterbutton_info[id].y, GDI_END);
     ModifyGadget(gi_up,   GDI_Y, SY + counterbutton_info[id].y, GDI_END);
-    y = gi_up->y + yoffset;
   }
-#endif
+
+  y = gi_up->y + yoffset;
 
   if (counterbutton_info[id].text_above)
     DrawText(x, y_above, counterbutton_info[id].text_above, FONT_TEXT_1);
@@ -5089,16 +5092,14 @@ static void MapCheckbuttonGadget(int id)
   int yoffset = ED_BORDER_SIZE;
   int x_left = gi->x - xoffset_left;
   int x_right = gi->x + gi->width + xoffset_right;
-  int y = gi->y + yoffset;
+  int y;       /* set after gadget position was modified */
 
-  /* special case needed for "stickybutton" and "can move into acid" gadgets */
+  /* set position for "stickybutton" and "can move into acid" gadgets */
   if (id == ED_CHECKBUTTON_ID_STICK_ELEMENT ||
       id == ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID)
-  {
-    ModifyGadget(gi, GDI_CHECKED, *checkbutton_info[id].value,
-                GDI_Y, SY + checkbutton_info[id].y, GDI_END);
-    y = gi->y + yoffset;
-  }
+    ModifyGadget(gi, GDI_Y, SY + checkbutton_info[id].y, GDI_END);
+
+  y = gi->y + yoffset;
 
   if (checkbutton_info[id].text_left)
     DrawText(x_left, y, checkbutton_info[id].text_left, FONT_TEXT_1);
@@ -5106,6 +5107,8 @@ static void MapCheckbuttonGadget(int id)
   if (checkbutton_info[id].text_right)
     DrawText(x_right, y, checkbutton_info[id].text_right, FONT_TEXT_1);
 
+  ModifyGadget(gi, GDI_CHECKED, *checkbutton_info[id].value, GDI_END);
+
   MapGadget(gi);
 }
 
@@ -5664,6 +5667,13 @@ static void CopyGroupElementPropertiesToEditor(int element)
 
 static void CopyClassicElementPropertiesToEditor(int element)
 {
+#if 1
+  if (COULD_MOVE_INTO_ACID(element))
+    custom_element_properties[EP_CAN_MOVE_INTO_ACID] =
+      getMoveIntoAcidProperty(&level, element);
+
+#else
+
   if (COULD_MOVE_INTO_ACID(element))
   {
     int bit_nr = get_special_property_bit(element, EP_CAN_MOVE_INTO_ACID);
@@ -5672,6 +5682,7 @@ static void CopyClassicElementPropertiesToEditor(int element)
       custom_element_properties[EP_CAN_MOVE_INTO_ACID] =
        ((level.can_move_into_acid & (1 << bit_nr)) != 0);
   }
+#endif
 }
 
 static void CopyElementPropertiesToEditor(int element)
@@ -5832,6 +5843,13 @@ static void CopyGroupElementPropertiesToGame(int element)
 
 static void CopyClassicElementPropertiesToGame(int element)
 {
+#if 1
+  if (COULD_MOVE_INTO_ACID(element))
+    setMoveIntoAcidProperty(&level, element,
+                           custom_element_properties[EP_CAN_MOVE_INTO_ACID]);
+
+#else
+
   if (COULD_MOVE_INTO_ACID(element))
   {
     int bit_nr = get_special_property_bit(element, EP_CAN_MOVE_INTO_ACID);
@@ -5844,6 +5862,7 @@ static void CopyClassicElementPropertiesToGame(int element)
        level.can_move_into_acid |= (1 << bit_nr);
     }
   }
+#endif
 }
 
 static void CopyElementPropertiesToGame(int element)
@@ -6752,10 +6771,12 @@ static void DrawPropertiesConfig()
     MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS);
 
   if (COULD_MOVE_INTO_ACID(properties_element) &&
-      !IS_CUSTOM_ELEMENT(properties_element))
+      (!IS_CUSTOM_ELEMENT(properties_element) ||
+       edit_mode_properties == ED_MODE_PROPERTIES_CONFIG_2))
   {
     checkbutton_info[ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID].y =
-      ED_SETTINGS_YPOS(HAS_CONTENT(properties_element) ? 1 : 0);
+      ED_SETTINGS_YPOS(IS_CUSTOM_ELEMENT(properties_element) ? 6 :
+                      HAS_CONTENT(properties_element) ? 1 : 0);
 
     MapCheckbuttonGadget(ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID);
   }
@@ -6814,6 +6835,8 @@ static void DrawPropertiesConfig()
     }
     else if (edit_mode_properties == ED_MODE_PROPERTIES_CONFIG_2)
     {
+      /* set position for special checkbutton for "can move into acid" */
+
       /* draw checkbutton gadgets */
       for (i =  ED_CHECKBUTTON_ID_CUSTOM2_FIRST;
           i <= ED_CHECKBUTTON_ID_CUSTOM2_LAST; i++)
@@ -7259,6 +7282,8 @@ static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y,
       {
        int element = brush_buffer[x][y];
        int element_mapped = element;
+
+#if 0
        char *element_string = "?";
        int k;
 
@@ -7284,6 +7309,16 @@ static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y,
        }
 
        printf("`%s", element_string);
+
+#else
+
+       if (IS_CUSTOM_ELEMENT(element))
+         element_mapped = EL_CUSTOM_START;
+       else if (element > EL_ENVELOPE_4)
+         element_mapped = EL_CHAR_QUESTION;    /* change to EL_UNKNOWN ... */
+
+       printf("`%03d", element_mapped);
+#endif
       }
 
       printf("\n");