rnd-20031208-1-src
[rocksndiamonds.git] / src / editor.c
index 2a26c09f67222d1d7c26b2351796f4aaba71ba41..68a0680a553c6bce63ce3112d4f1f0c5d3c8f035 100644 (file)
@@ -1071,6 +1071,10 @@ static struct ValueTextInfo options_move_pattern[] =
   { MV_TURNING_LEFT,           "turning left"                  },
   { MV_TURNING_RIGHT,          "turning right"                 },
   { MV_WHEN_PUSHED,            "when pushed"                   },
+#if 0
+  { MV_MAZE_RUNNER,            "maze runner style"             },
+  { MV_MAZE_HUNTER,            "maze hunter style"             },
+#endif
   { -1,                                NULL                            }
 };
 
@@ -1146,9 +1150,14 @@ static struct ValueTextInfo options_change_direct_action[] =
   { CE_LEFT_BY_PLAYER,         "left by player ..."            },
   { CE_DROPPED_BY_PLAYER,      "dropped by player"             },
   { CE_SWITCHED,               "switched ..."                  },
-  { CE_COLLISION,              "collision ..."                 },
-  { CE_IMPACT,                 "impact"                        },
-  { CE_SMASHED,                        "smashed"                       },
+#if 0
+  { CE_COLLISION_ACTIVE,       "hitting something ..."         },
+  { CE_COLLISION_PASSIVE,      "hit by something ..."          },
+#else
+  { CE_COLLISION_ACTIVE,       "collision ..."                 },
+#endif
+  { CE_IMPACT,                 "impact (on something)"         },
+  { CE_SMASHED,                        "smashed (from above)"          },
   { -1,                                NULL                            }
 };
 
@@ -1163,6 +1172,10 @@ static struct ValueTextInfo options_change_other_action[] =
   { CE_OTHER_GETS_COLLECTED,   "player collects"               },
   { CE_OTHER_GETS_DROPPED,     "player drops"                  },
   { CE_OTHER_IS_TOUCHING,      "touching ..."                  },
+#if 0
+  { CE_OTHER_IS_COLL_ACTIVE,   "hitting ..."                   },
+  { CE_OTHER_IS_COLL_PASSIVE,  "hit by ..."                    },
+#endif
   { CE_OTHER_IS_SWITCHING,     "switch of ..."                 },
   { CE_OTHER_IS_CHANGING,      "change of"                     },
   { CE_OTHER_IS_EXPLODING,     "explosion of"                  },
@@ -1177,7 +1190,7 @@ static struct ValueTextInfo options_change_sides[] =
   { CH_SIDE_BOTTOM,            "bottom side"                   },
   { CH_SIDE_LEFT_RIGHT,                "left/right side"               },
   { CH_SIDE_TOP_BOTTOM,                "top/bottom side"               },
-  { CH_SIDE_ANY,               "all sides"                     },
+  { CH_SIDE_ANY,               "any side"                      },
   { -1,                                NULL                            }
 };
 
@@ -2133,7 +2146,7 @@ static int editor_el_more[] =
   EL_BD_FIREFLY,
 
   EL_MOLE_LEFT,
-  EL_EMPTY,
+  EL_MAZE_RUNNER,
   EL_MOLE_RIGHT,
   EL_PACMAN,
 
@@ -4967,7 +4980,8 @@ static void CopyCustomElementPropertiesToEditor(int element)
      HAS_CHANGE_EVENT(element, CE_LEFT_BY_PLAYER) ? CE_LEFT_BY_PLAYER :
      HAS_CHANGE_EVENT(element, CE_DROPPED_BY_PLAYER) ? CE_DROPPED_BY_PLAYER :
      HAS_CHANGE_EVENT(element, CE_SWITCHED) ? CE_SWITCHED :
-     HAS_CHANGE_EVENT(element, CE_COLLISION) ? CE_COLLISION :
+     HAS_CHANGE_EVENT(element, CE_COLLISION_ACTIVE) ? CE_COLLISION_ACTIVE :
+     HAS_CHANGE_EVENT(element, CE_COLLISION_PASSIVE) ? CE_COLLISION_PASSIVE :
      HAS_CHANGE_EVENT(element, CE_IMPACT) ? CE_IMPACT :
      HAS_CHANGE_EVENT(element, CE_SMASHED) ? CE_SMASHED :
      custom_element_change.direct_action);
@@ -4983,6 +4997,8 @@ static void CopyCustomElementPropertiesToEditor(int element)
      HAS_CHANGE_EVENT(element, CE_OTHER_GETS_COLLECTED) ? CE_OTHER_GETS_COLLECTED :
      HAS_CHANGE_EVENT(element, CE_OTHER_GETS_DROPPED) ? CE_OTHER_GETS_DROPPED :
      HAS_CHANGE_EVENT(element, CE_OTHER_IS_TOUCHING) ? CE_OTHER_IS_TOUCHING :
+     HAS_CHANGE_EVENT(element, CE_OTHER_IS_COLL_ACTIVE) ? CE_OTHER_IS_COLL_ACTIVE :
+     HAS_CHANGE_EVENT(element, CE_OTHER_IS_COLL_PASSIVE) ? CE_OTHER_IS_COLL_PASSIVE :
      HAS_CHANGE_EVENT(element, CE_OTHER_IS_SWITCHING) ? CE_OTHER_IS_SWITCHING :
      HAS_CHANGE_EVENT(element, CE_OTHER_IS_CHANGING) ? CE_OTHER_IS_CHANGING :
      HAS_CHANGE_EVENT(element, CE_OTHER_IS_EXPLODING) ? CE_OTHER_IS_EXPLODING :
@@ -4999,7 +5015,7 @@ static void CopyCustomElementPropertiesToGame(int element)
 
   if (level.use_custom_template)
   {
-    if (Request("Copy and modify level template ?", REQ_ASK))
+    if (Request("Copy and modify level template ?", REQ_ASK))
     {
       level.use_custom_template = FALSE;
       ModifyGadget(level_editor_gadget[GADGET_ID_CUSTOM_USE_TEMPLATE],
@@ -5085,7 +5101,8 @@ static void CopyCustomElementPropertiesToGame(int element)
   custom_element_change_events[CE_LEFT_BY_PLAYER] = FALSE;
   custom_element_change_events[CE_DROPPED_BY_PLAYER] = FALSE;
   custom_element_change_events[CE_SWITCHED] = FALSE;
-  custom_element_change_events[CE_COLLISION] = FALSE;
+  custom_element_change_events[CE_COLLISION_ACTIVE] = FALSE;
+  custom_element_change_events[CE_COLLISION_PASSIVE] = FALSE;
   custom_element_change_events[CE_IMPACT] = FALSE;
   custom_element_change_events[CE_SMASHED] = FALSE;
   custom_element_change_events[custom_element_change.direct_action] =
@@ -5101,6 +5118,8 @@ static void CopyCustomElementPropertiesToGame(int element)
   custom_element_change_events[CE_OTHER_GETS_COLLECTED] = FALSE;
   custom_element_change_events[CE_OTHER_GETS_DROPPED] = FALSE;
   custom_element_change_events[CE_OTHER_IS_TOUCHING] = FALSE;
+  custom_element_change_events[CE_OTHER_IS_COLL_ACTIVE] = FALSE;
+  custom_element_change_events[CE_OTHER_IS_COLL_PASSIVE] = FALSE;
   custom_element_change_events[CE_OTHER_IS_SWITCHING] = FALSE;
   custom_element_change_events[CE_OTHER_IS_CHANGING] = FALSE;
   custom_element_change_events[CE_OTHER_IS_EXPLODING] = FALSE;
@@ -5547,6 +5566,26 @@ static boolean PrintInfoText(char *text, int font_nr, int start_line)
   return TRUE;
 }
 
+#if 1
+
+static int PrintElementDescriptionFromFile(char *filename, int start_line)
+{
+  int font_nr = FONT_TEXT_2;
+  int font_width = getFontWidth(font_nr);
+  int font_height = getFontHeight(font_nr);
+  int pad_x = ED_SETTINGS_XPOS(0);
+  int pad_y = ED_SETTINGS_YPOS(0) + ED_BORDER_SIZE;
+  int sx = SX + pad_x;
+  int sy = SY + pad_y + start_line * font_height;
+  int max_chars_per_line = (SXSIZE - 2 * pad_x) / font_width;
+  int max_lines_per_screen = (SYSIZE - pad_y) / font_height - 1;
+
+  return DrawTextFromFile(sx, sy, filename, font_nr, max_chars_per_line,
+                         max_lines_per_screen);
+}
+
+#else
+
 static int PrintElementDescriptionFromFile(char *filename, int start_line)
 {
   int font_nr = FONT_TEXT_2;
@@ -5634,6 +5673,8 @@ static int PrintElementDescriptionFromFile(char *filename, int start_line)
   return (current_line - start_line);
 }
 
+#endif
+
 static void DrawPropertiesTabulatorGadgets()
 {
   struct GadgetInfo *gd_gi = level_editor_gadget[GADGET_ID_PROPERTIES_INFO];
@@ -6795,7 +6836,10 @@ static void HandleDrawingAreas(struct GadgetInfo *gi)
 
   /* clicking into drawing area with pressed Control key picks element */
   if (GetKeyModState() & KMOD_Control)
+  {
+    last_drawing_function = drawing_function;
     actual_drawing_function = GADGET_ID_PICK_ELEMENT;
+  }
 
   switch (actual_drawing_function)
   {
@@ -7152,11 +7196,11 @@ static void HandleTextbuttonGadgets(struct GadgetInfo *gi)
     boolean new_template = (!LevelFileExists(-1));
 
     if (new_template ||
-       Request("Save this template and kill the old ?", REQ_ASK))
+       Request("Save this template and kill the old ?", REQ_ASK))
       SaveLevelTemplate();
 
     if (new_template)
-      Request("Template saved !", REQ_CONFIRM);
+      Request("Template saved !", REQ_CONFIRM);
   }
   else if (type_id == ED_TEXTBUTTON_ID_ADD_CHANGE_PAGE &&
           custom_element.num_change_pages < MAX_CHANGE_PAGES)
@@ -7239,7 +7283,7 @@ static void HandleCheckbuttons(struct GadgetInfo *gi)
   {
     if (level.use_custom_template && !LevelFileExists(-1))
     {
-      Request("No level template found !", REQ_CONFIRM);
+      Request("No level template found !", REQ_CONFIRM);
 
       level.use_custom_template = FALSE;
       ModifyGadget(gi, GDI_CHECKED, FALSE, GDI_END);