rnd-19990829-1-src
[rocksndiamonds.git] / src / editor.c
index 6aa94aeb8a70e83c0256b1ca2d709c85512081bc..50988c0d88b527cd13e7078b21c36a2bd5151cf3 100644 (file)
@@ -757,18 +757,18 @@ int editor_element[] =
   EL_AUSGANG_AUF,
 
   EL_EDELSTEIN_BD,
-  EL_BUTTERFLY_O,
-  EL_FIREFLY_O,
+  EL_BUTTERFLY_UP,
+  EL_FIREFLY_UP,
   EL_FELSBROCKEN,
 
-  EL_BUTTERFLY_L,
-  EL_FIREFLY_L,
-  EL_BUTTERFLY_R,
-  EL_FIREFLY_R,
+  EL_BUTTERFLY_LEFT,
+  EL_FIREFLY_LEFT,
+  EL_BUTTERFLY_RIGHT,
+  EL_FIREFLY_RIGHT,
 
   EL_AMOEBE_BD,
-  EL_BUTTERFLY_U,
-  EL_FIREFLY_U,
+  EL_BUTTERFLY_DOWN,
+  EL_FIREFLY_DOWN,
   EL_LEERRAUM,
 
   EL_CHAR('E'),
@@ -817,18 +817,18 @@ int editor_element[] =
   EL_AUSGANG_AUF,
 
   EL_MAMPFER,
-  EL_KAEFER_O,
-  EL_FLIEGER_O,
+  EL_KAEFER_UP,
+  EL_FLIEGER_UP,
   EL_ROBOT,
 
-  EL_KAEFER_L,
-  EL_FLIEGER_L,
-  EL_KAEFER_R,
-  EL_FLIEGER_R,
+  EL_KAEFER_LEFT,
+  EL_FLIEGER_LEFT,
+  EL_KAEFER_RIGHT,
+  EL_FLIEGER_RIGHT,
 
   EL_ABLENK_AUS,
-  EL_KAEFER_U,
-  EL_FLIEGER_U,
+  EL_KAEFER_DOWN,
+  EL_FLIEGER_DOWN,
   EL_UNSICHTBAR,
 
   EL_BADEWANNE1,
@@ -881,10 +881,10 @@ int editor_element[] =
   EL_PFORTE3X,
   EL_PFORTE4X,
 
-  EL_PFEIL_L,
-  EL_PFEIL_R,
-  EL_PFEIL_O,
-  EL_PFEIL_U,
+  EL_PFEIL_LEFT,
+  EL_PFEIL_RIGHT,
+  EL_PFEIL_UP,
+  EL_PFEIL_DOWN,
 
   EL_AMOEBE_VOLL,
   EL_EDELSTEIN_GELB,
@@ -897,17 +897,17 @@ int editor_element[] =
   EL_ERZ_EDEL_LILA,
 
   EL_LIFE,
-  EL_PACMAN_O,
+  EL_PACMAN_UP,
   EL_ZEIT_VOLL,
   EL_ZEIT_LEER,
 
-  EL_PACMAN_L,
+  EL_PACMAN_LEFT,
   EL_MAMPFER2,
-  EL_PACMAN_R,
+  EL_PACMAN_RIGHT,
   EL_MAUER_LEBT,
 
   EL_LIFE_ASYNC,
-  EL_PACMAN_U,
+  EL_PACMAN_DOWN,
   EL_BIRNE_AUS,
   EL_BIRNE_EIN,
 
@@ -916,11 +916,26 @@ int editor_element[] =
   EL_DYNABOMB_XL,
   EL_BADEWANNE,
 
-  EL_MAULWURF,
+  EL_MOLE,
   EL_PINGUIN,
   EL_SCHWEIN,
   EL_DRACHE,
 
+  EL_LEERRAUM,
+  EL_MOLE_UP,
+  EL_LEERRAUM,
+  EL_LEERRAUM,
+
+  EL_MOLE_LEFT,
+  EL_LEERRAUM,
+  EL_MOLE_RIGHT,
+  EL_LEERRAUM,
+
+  EL_LEERRAUM,
+  EL_MOLE_DOWN,
+  EL_LEERRAUM,
+  EL_LEERRAUM,
+
   EL_SONDE,
   EL_MAUER_X,
   EL_MAUER_Y,
@@ -1029,32 +1044,52 @@ int editor_element[] =
   EL_BELT1_LEFT,
   EL_BELT1_MIDDLE,
   EL_BELT1_RIGHT,
-  EL_BELT1_SWITCH_M,
+  EL_BELT1_SWITCH_MIDDLE,
 
   EL_BELT2_LEFT,
   EL_BELT2_MIDDLE,
   EL_BELT2_RIGHT,
-  EL_BELT2_SWITCH_M,
+  EL_BELT2_SWITCH_MIDDLE,
 
   EL_BELT3_LEFT,
   EL_BELT3_MIDDLE,
   EL_BELT3_RIGHT,
-  EL_BELT3_SWITCH_M,
+  EL_BELT3_SWITCH_MIDDLE,
 
   EL_BELT4_LEFT,
   EL_BELT4_MIDDLE,
   EL_BELT4_RIGHT,
-  EL_BELT4_SWITCH_M,
+  EL_BELT4_SWITCH_MIDDLE,
+
+  EL_BELT1_SWITCH_LEFT,
+  EL_BELT2_SWITCH_LEFT,
+  EL_BELT3_SWITCH_LEFT,
+  EL_BELT4_SWITCH_LEFT,
+
+  EL_BELT1_SWITCH_RIGHT,
+  EL_BELT2_SWITCH_RIGHT,
+  EL_BELT3_SWITCH_RIGHT,
+  EL_BELT4_SWITCH_RIGHT,
+
+  EL_SWITCHGATE_OPEN,
+  EL_SWITCHGATE_CLOSED,
+  EL_SWITCHGATE_SWITCH_1,
+  EL_ENVELOPE,
+
+  EL_LANDMINE,
+  EL_SAND_INVISIBLE,
+  EL_STEEL_SLANTED,
+  EL_LEERRAUM,
 
-  EL_BELT1_SWITCH_L,
-  EL_BELT2_SWITCH_L,
-  EL_BELT3_SWITCH_L,
-  EL_BELT4_SWITCH_L,
+  EL_SIGN_EXCLAMATION,
+  EL_SIGN_STOP,
+  EL_LIGHT_SWITCH_OFF,
+  EL_LIGHT_SWITCH_ON,
 
-  EL_BELT1_SWITCH_R,
-  EL_BELT2_SWITCH_R,
-  EL_BELT3_SWITCH_R,
-  EL_BELT4_SWITCH_R,
+  EL_FORCE_FIELD_PASSIVE,
+  EL_EXTRA_TIME,
+  EL_LEERRAUM,
+  EL_FORCE_FIELD_ACTIVE,
 
   /*
   EL_CHAR('D'),
@@ -2488,29 +2523,29 @@ static void DrawPropertiesWindow()
     { EL_EDELSTEIN_ROT,        &level.score[SC_EDELSTEIN],     TEXT_COLLECTING },
     { EL_EDELSTEIN_LILA,&level.score[SC_EDELSTEIN],    TEXT_COLLECTING },
     { EL_DIAMANT,      &level.score[SC_DIAMANT],       TEXT_COLLECTING },
-    { EL_KAEFER_R,     &level.score[SC_KAEFER],        TEXT_SMASHING },
-    { EL_KAEFER_O,     &level.score[SC_KAEFER],        TEXT_SMASHING },
-    { EL_KAEFER_L,     &level.score[SC_KAEFER],        TEXT_SMASHING },
-    { EL_KAEFER_U,     &level.score[SC_KAEFER],        TEXT_SMASHING },
-    { EL_BUTTERFLY_R,  &level.score[SC_KAEFER],        TEXT_SMASHING },
-    { EL_BUTTERFLY_O,  &level.score[SC_KAEFER],        TEXT_SMASHING },
-    { EL_BUTTERFLY_L,  &level.score[SC_KAEFER],        TEXT_SMASHING },
-    { EL_BUTTERFLY_U,  &level.score[SC_KAEFER],        TEXT_SMASHING },
-    { EL_FLIEGER_R,    &level.score[SC_FLIEGER],       TEXT_SMASHING },
-    { EL_FLIEGER_O,    &level.score[SC_FLIEGER],       TEXT_SMASHING },
-    { EL_FLIEGER_L,    &level.score[SC_FLIEGER],       TEXT_SMASHING },
-    { EL_FLIEGER_U,    &level.score[SC_FLIEGER],       TEXT_SMASHING },
-    { EL_FIREFLY_R,    &level.score[SC_FLIEGER],       TEXT_SMASHING },
-    { EL_FIREFLY_O,    &level.score[SC_FLIEGER],       TEXT_SMASHING },
-    { EL_FIREFLY_L,    &level.score[SC_FLIEGER],       TEXT_SMASHING },
-    { EL_FIREFLY_U,    &level.score[SC_FLIEGER],       TEXT_SMASHING },
+    { EL_KAEFER_RIGHT, &level.score[SC_KAEFER],        TEXT_SMASHING },
+    { EL_KAEFER_UP,    &level.score[SC_KAEFER],        TEXT_SMASHING },
+    { EL_KAEFER_LEFT,  &level.score[SC_KAEFER],        TEXT_SMASHING },
+    { EL_KAEFER_DOWN,  &level.score[SC_KAEFER],        TEXT_SMASHING },
+    { EL_BUTTERFLY_RIGHT,&level.score[SC_KAEFER],      TEXT_SMASHING },
+    { EL_BUTTERFLY_UP, &level.score[SC_KAEFER],        TEXT_SMASHING },
+    { EL_BUTTERFLY_LEFT,&level.score[SC_KAEFER],       TEXT_SMASHING },
+    { EL_BUTTERFLY_DOWN,&level.score[SC_KAEFER],       TEXT_SMASHING },
+    { EL_FLIEGER_RIGHT,        &level.score[SC_FLIEGER],       TEXT_SMASHING },
+    { EL_FLIEGER_UP,   &level.score[SC_FLIEGER],       TEXT_SMASHING },
+    { EL_FLIEGER_LEFT, &level.score[SC_FLIEGER],       TEXT_SMASHING },
+    { EL_FLIEGER_DOWN, &level.score[SC_FLIEGER],       TEXT_SMASHING },
+    { EL_FIREFLY_RIGHT,        &level.score[SC_FLIEGER],       TEXT_SMASHING },
+    { EL_FIREFLY_UP,   &level.score[SC_FLIEGER],       TEXT_SMASHING },
+    { EL_FIREFLY_LEFT, &level.score[SC_FLIEGER],       TEXT_SMASHING },
+    { EL_FIREFLY_DOWN, &level.score[SC_FLIEGER],       TEXT_SMASHING },
     { EL_MAMPFER,      &level.score[SC_MAMPFER],       TEXT_SMASHING },
     { EL_MAMPFER2,     &level.score[SC_MAMPFER],       TEXT_SMASHING },
     { EL_ROBOT,                &level.score[SC_ROBOT],         TEXT_SMASHING },
-    { EL_PACMAN_R,     &level.score[SC_PACMAN],        TEXT_SMASHING },
-    { EL_PACMAN_O,     &level.score[SC_PACMAN],        TEXT_SMASHING },
-    { EL_PACMAN_L,     &level.score[SC_PACMAN],        TEXT_SMASHING },
-    { EL_PACMAN_U,     &level.score[SC_PACMAN],        TEXT_SMASHING },
+    { EL_PACMAN_RIGHT, &level.score[SC_PACMAN],        TEXT_SMASHING },
+    { EL_PACMAN_UP,    &level.score[SC_PACMAN],        TEXT_SMASHING },
+    { EL_PACMAN_LEFT,  &level.score[SC_PACMAN],        TEXT_SMASHING },
+    { EL_PACMAN_DOWN,  &level.score[SC_PACMAN],        TEXT_SMASHING },
     { EL_KOKOSNUSS,    &level.score[SC_KOKOSNUSS],     TEXT_CRACKING },
     { EL_DYNAMITE_INACTIVE,&level.score[SC_DYNAMIT],   TEXT_COLLECTING },
     { EL_SCHLUESSEL1,  &level.score[SC_SCHLUESSEL],    TEXT_COLLECTING },
@@ -3935,6 +3970,8 @@ void HandleLevelEditorKeyInput(KeySym key)
       ClickOnGadget(level_editor_gadget[id], button);
     else if (letter == '.')
       ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS], button);
+    else if (key == XK_space || key == XK_Return)
+      ClickOnGadget(level_editor_gadget[GADGET_ID_TEST], button);
     else
       for (i=0; i<ED_NUM_CTRL_BUTTONS; i++)
        if (letter && letter == control_info[i].shortcut)
@@ -3954,7 +3991,7 @@ void HandleEditorGadgetInfoText(void *ptr)
 {
   struct GadgetInfo *gi = (struct GadgetInfo *)ptr;
   char infotext[MAX_INFOTEXT_LEN + 1];
-  char shortcut[20];
+  char shortcut[MAX_INFOTEXT_LEN + 1];
 
   ClearEditorGadgetInfoText();
 
@@ -3974,10 +4011,13 @@ void HandleEditorGadgetInfoText(void *ptr)
 
     if (key)
     {
-      sprintf(shortcut, " ('%s%c')",
-             (key >= 'A' && key <= 'Z' ? "Shift-" :
-              gi->custom_id == GADGET_ID_SINGLE_ITEMS ? ".' or '" : ""),
-             key);
+      if (gi->custom_id == GADGET_ID_SINGLE_ITEMS)     /* special case 1 */
+       sprintf(shortcut, " ('.' or '%c')", key);
+      else if (gi->custom_id == GADGET_ID_TEST)                /* special case 2 */
+       sprintf(shortcut, " ('Enter' or 'Shift-%c')", key);
+      else                                             /* normal case */
+       sprintf(shortcut, " ('%s%c')",
+               (key >= 'A' && key <= 'Z' ? "Shift-" : ""), key);
 
       if (strlen(infotext) + strlen(shortcut) <= MAX_INFOTEXT_LEN)
        strcat(infotext, shortcut);