rnd-20001127-1-src
[rocksndiamonds.git] / src / editor.c
index bb729811096f99b28d81eba55f771956f262848a..0977a92a6dbb97b4161369f7ccb0425dfa9cd903 100644 (file)
@@ -690,10 +690,10 @@ static int new_element1 = EL_MAUERWERK;
 static int new_element2 = EL_LEERRAUM;
 static int new_element3 = EL_ERDREICH;
 
-#define BUTTON_ELEMENT(button) (button == 1 ? new_element1 : \
-                               button == 2 ? new_element2 : \
-                               button == 3 ? new_element3 : EL_LEERRAUM)
-#define BUTTON_STEPSIZE(button) (button == 1 ? 1 : button == 2 ? 5 : 10)
+#define BUTTON_ELEMENT(button) ((button) == 1 ? new_element1 : \
+                               (button) == 2 ? new_element2 : \
+                               (button) == 3 ? new_element3 : EL_LEERRAUM)
+#define BUTTON_STEPSIZE(button) ((button) == 1 ? 1 : (button) == 2 ? 5 : 10)
 
 /* forward declaration for internal use */
 static void ModifyEditorCounter(int, int);
@@ -1261,6 +1261,18 @@ int editor_element[] =
 };
 int elements_in_list = sizeof(editor_element)/sizeof(int);
 
+static char *getElementInfoText(int element)
+{
+  char *info_text = "unknown";
+
+  if (element < num_element_info)
+    info_text = element_info[element];
+  else
+    Error(ERR_WARN, "no element description for element %d", element);
+
+  return info_text;
+}
+
 static void ScrollMiniLevel(int from_x, int from_y, int scroll)
 {
   int x,y;
@@ -1475,7 +1487,7 @@ static void CreateControlButtons()
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
                      GDI_CUSTOM_TYPE_ID, i,
-                     GDI_INFO_TEXT, element_info[editor_element[i]],
+                     GDI_INFO_TEXT, getElementInfoText(editor_element[i]),
                      GDI_X, DX + gd_xoffset,
                      GDI_Y, DY + gd_yoffset,
                      GDI_WIDTH, ED_ELEMENTLIST_XSIZE,
@@ -2664,7 +2676,7 @@ static void DrawPropertiesWindow()
             SY + ystart * MINI_TILEY - MINI_TILEY/2);
 
   DrawTextF((xstart + 3) * MINI_TILEX, (ystart + 1) * MINI_TILEY,
-           font_color, element_info[properties_element]);
+           font_color, getElementInfoText(properties_element));
 
   num_elements_in_level = 0;
   for (y=0; y<lev_fieldy; y++) 
@@ -3511,7 +3523,8 @@ static void HandleDrawingAreas(struct GadgetInfo *gi)
          {
            CopyAreaToBrush(start_sx, start_sy, sx, sy, button);
            CopyBrushToCursor(sx, sy);
-           ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS],MB_LEFT);
+           ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS],
+                         MB_LEFTBUTTON);
            draw_with_brush = TRUE;
          }
          else if (drawing_function == GADGET_ID_TEXT)
@@ -3540,7 +3553,8 @@ static void HandleDrawingAreas(struct GadgetInfo *gi)
 
     case GADGET_ID_PICK_ELEMENT:
       if (button_release_event)
-       ClickOnGadget(level_editor_gadget[last_drawing_function], MB_LEFT);
+       ClickOnGadget(level_editor_gadget[last_drawing_function],
+                     MB_LEFTBUTTON);
       else
        PickDrawingElement(button, Feld[lx][ly]);
 
@@ -3757,7 +3771,7 @@ static void HandleControlButtons(struct GadgetInfo *gi)
 
        UnmapGadget(gi);
        getMiniGraphicSource(el2gfx(element), &gd->bitmap, &gd->x, &gd->y);
-       ModifyGadget(gi, GDI_INFO_TEXT, element_info[element], GDI_END);
+       ModifyGadget(gi, GDI_INFO_TEXT, getElementInfoText(element), GDI_END);
        MapGadget(gi);
       }
       break;
@@ -3943,7 +3957,8 @@ static void HandleControlButtons(struct GadgetInfo *gi)
        }
 
        if (drawing_function == GADGET_ID_PICK_ELEMENT)
-         ClickOnGadget(level_editor_gadget[last_drawing_function], MB_LEFT);
+         ClickOnGadget(level_editor_gadget[last_drawing_function],
+                       MB_LEFTBUTTON);
       }
 #ifdef DEBUG
       else if (gi->event.type == GD_EVENT_PRESSED)
@@ -3962,16 +3977,16 @@ static void HandleControlButtons(struct GadgetInfo *gi)
 void HandleLevelEditorKeyInput(Key key)
 {
   char letter = getCharFromKey(key);
-  int button = MB_LEFT;
+  int button = MB_LEFTBUTTON;
 
   if (drawing_function == GADGET_ID_TEXT &&
       DrawLevelText(0, 0, 0, TEXT_QUERY_TYPING) == TRUE)
   {
     if (letter)
       DrawLevelText(0, 0, letter, TEXT_WRITECHAR);
-    else if (key == KEY_Delete || key == KEY_BackSpace)
+    else if (key == KSYM_Delete || key == KSYM_BackSpace)
       DrawLevelText(0, 0, 0, TEXT_BACKSPACE);
-    else if (key == KEY_Return)
+    else if (key == KSYM_Return)
       DrawLevelText(0, 0, 0, TEXT_NEWLINE);
   }
   else if (button_status == MB_RELEASED)
@@ -3980,25 +3995,25 @@ void HandleLevelEditorKeyInput(Key key)
 
     switch (key)
     {
-      case KEY_Left:
+      case KSYM_Left:
        id = GADGET_ID_SCROLL_LEFT;
        break;
-      case KEY_Right:
+      case KSYM_Right:
        id = GADGET_ID_SCROLL_RIGHT;
        break;
-      case KEY_Up:
+      case KSYM_Up:
        id = GADGET_ID_SCROLL_UP;
        break;
-      case KEY_Down:
+      case KSYM_Down:
        id = GADGET_ID_SCROLL_DOWN;
        break;
-      case KEY_Page_Up:
+      case KSYM_Page_Up:
        id = GADGET_ID_SCROLL_LIST_UP;
-       button = 3;
+       button = MB_RIGHTBUTTON;
        break;
-      case KEY_Page_Down:
+      case KSYM_Page_Down:
        id = GADGET_ID_SCROLL_LIST_DOWN;
-       button = 3;
+       button = MB_RIGHTBUTTON;
        break;
 
       default:
@@ -4010,7 +4025,7 @@ void HandleLevelEditorKeyInput(Key key)
       ClickOnGadget(level_editor_gadget[id], button);
     else if (letter == '.')
       ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS], button);
-    else if (key == KEY_space || key == KEY_Return)
+    else if (key == KSYM_space || key == KSYM_Return)
       ClickOnGadget(level_editor_gadget[GADGET_ID_TEST], button);
     else
       for (i=0; i<ED_NUM_CTRL_BUTTONS; i++)
@@ -4164,7 +4179,7 @@ static void HandleDrawingAreaInfo(struct GadgetInfo *gi)
       }
       else if (drawing_function == GADGET_ID_PICK_ELEMENT)
        DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW,
-                 "%s", element_info[Feld[lx][ly]]);
+                 "%s", getElementInfoText(Feld[lx][ly]));
       else
        DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW,
                  "Level position: %d, %d", lx, ly);