rnd-20001105-1-src
authorHolger Schemel <info@artsoft.org>
Sun, 5 Nov 2000 17:38:57 +0000 (18:38 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:35:02 +0000 (10:35 +0200)
src/editor.c
src/main.c
src/main.h

index 669991b70ed6949d05077e1a6c64e488e6a46099..fe5dc3589467eb20eadc0f66da11f37212034e9c 100644 (file)
@@ -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++) 
@@ -3759,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;
@@ -4167,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);
index 94c0d8496aa67c6feb3d3593711dc2271afcfb7c..38250738b5d1ccbed5c5b61a958effaf4cdeaecf 100644 (file)
@@ -565,6 +565,7 @@ char *element_info[] =
   "-------------------------------",
   */
 };
+int num_element_info = sizeof(element_info)/sizeof(char *);
 
 
 
index fca22e59f5e0d49a54fc373461e0819866d93057..9bd13760e2e6bf566828d74e36adf126df600732 100644 (file)
@@ -541,7 +541,7 @@ extern char         *sound_name[];
 extern int             background_loop[];
 extern int             num_bg_loops;
 extern char            *element_info[];
-
+extern int             num_element_info;
 
 /* often used screen positions */
 #define SX                     8