rnd-19991002-1-src
[rocksndiamonds.git] / src / editor.c
index 6aa94aeb8a70e83c0256b1ca2d709c85512081bc..5b77b1fc9d47c5c165482ac5728feba18ee8ac6f 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,31 @@ 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_BALLOON,
+  EL_BALLOON_SEND_ANY,
+
+  EL_BALLOON_SEND_LEFT,
+  EL_BALLOON_SEND_RIGHT,
+  EL_BALLOON_SEND_UP,
+  EL_BALLOON_SEND_DOWN,
+
   EL_SONDE,
   EL_MAUER_X,
   EL_MAUER_Y,
@@ -931,6 +951,17 @@ int editor_element[] =
   EL_SPEED_PILL,
   EL_BLACK_ORB,
 
+  EL_EMC_STEEL_WALL_1,
+  EL_EMC_WALL_1,
+  EL_EMC_WALL_2,
+  EL_EMC_WALL_3,
+
+  EL_EMC_WALL_4,
+  EL_EMC_WALL_5,
+  EL_EMC_WALL_6,
+  EL_EMC_WALL_7,
+
+
   EL_CHAR('S'),
   EL_CHAR('O'),
   EL_CHAR('K'),
@@ -1029,32 +1060,57 @@ 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_TIMEGATE_CLOSED,
+  EL_TIMEGATE_OPEN,
+  EL_TIMEGATE_SWITCH_OFF,
+  EL_LEERRAUM,
+
+  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_SHIELD_PASSIVE,
+  EL_SHIELD_ACTIVE,
+  EL_EXTRA_TIME,
+  EL_LEERRAUM,
 
   /*
   EL_CHAR('D'),
@@ -1855,8 +1911,8 @@ static void MapControlButtons()
   /* map buttons to select level */
   counter_id = ED_COUNTER_ID_SELECT_LEVEL;
   ModifyEditorCounterLimits(counter_id,
-                           leveldir[leveldir_nr].first_level,
-                           leveldir[leveldir_nr].last_level);
+                           leveldir_current->first_level,
+                           leveldir_current->last_level);
   ModifyEditorCounter(counter_id, *counterbutton_info[counter_id].value);
   MapCounterButtons(counter_id);
 }
@@ -2488,29 +2544,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 },
@@ -3776,7 +3832,7 @@ static void HandleControlButtons(struct GadgetInfo *gi)
       break;
 
     case GADGET_ID_SAVE:
-      if (leveldir[leveldir_nr].readonly)
+      if (leveldir_current->readonly)
       {
        Request("This level is read only !", REQ_CONFIRM);
        break;
@@ -3935,6 +3991,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 +4012,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 +4032,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);