return info_text;
}
-char *getElementDescriptionFilename(int element)
+static char *getElementDescriptionFilenameExt(char *basename)
{
- char *docs_dir = options.docs_directory;
char *elements_subdir = "elements";
+ static char *elements_subdir2 = NULL;
static char *filename = NULL;
- char basename[MAX_FILENAME_LEN];
+
+ if (elements_subdir2 == NULL)
+ elements_subdir2 = getPath2(DOCS_DIRECTORY, elements_subdir);
checked_free(filename);
- /* 1st try: look for element description file for exactly this element */
- sprintf(basename, "%s.txt", element_info[element].token_name);
- filename = getPath3(docs_dir, elements_subdir, basename);
+ /* 1st try: look for element description in current level set directory */
+ filename = getPath3(getCurrentLevelDir(), elements_subdir2, basename);
if (fileExists(filename))
return filename;
free(filename);
+ /* 2nd try: look for element description in the game's base directory */
+ filename = getPath3(options.docs_directory, elements_subdir, basename);
+ if (fileExists(filename))
+ return filename;
+
+ return NULL;
+}
+
+char *getElementDescriptionFilename(int element)
+{
+ char basename[MAX_FILENAME_LEN];
+ char *filename;
+
+ /* 1st try: look for element description file for exactly this element */
+ sprintf(basename, "%s.txt", element_info[element].token_name);
+ filename = getElementDescriptionFilenameExt(basename);
+ if (filename != NULL)
+ return filename;
+
/* 2nd try: look for element description file for this element's class */
sprintf(basename, "%s.txt", element_info[element].class_name);
- filename = getPath3(docs_dir, elements_subdir, basename);
- if (fileExists(filename))
+ filename = getElementDescriptionFilenameExt(basename);
+ if (filename != NULL)
return filename;
return NULL;
}
else
{
- gd_xoffset = DX - EX + ED_CTRL5_BUTTONS_XPOS;
- gd_yoffset = DY - EY + ED_CTRL5_BUTTONS_YPOS;
- width = ED_CTRL5_BUTTON_XSIZE;
- height = ED_CTRL5_BUTTON_YSIZE;
+ int graphic = IMG_EDITOR_BUTTON_GFX_PROPERTIES;
+ struct GraphicInfo *gd = &graphic_info[graphic];
+ struct XY ebi = editor.button.properties;
- gd_x1 = DOOR_GFX_PAGEX6 + ED_CTRL5_BUTTONS_GFX_XPOS;
+ gd_bitmap = gd->bitmap;
+ gd_xoffset = DX - EX + ebi.x;
+ gd_yoffset = DY - EY + ebi.y;
+ width = gd->width;
+ height = gd->height;
+
+ gd_x1 = gd->src_x;
gd_x2 = 0; /* no alternative graphic for these buttons */
- gd_y1 = DOOR_GFX_PAGEY1 + ED_CTRL5_BUTTONS_GFX_YPOS;
- gd_y2 = DOOR_GFX_PAGEY1 + ED_CTRL5_BUTTONS_GFX_YPOS - height;
+ gd_y1 = gd->src_y;
+ gd_y2 = gd->src_y + gd->pressed_yoffset;
}
if (id < ED_NUM_CTRL1_4_BUTTONS)
level_ypos = -1;
}
+ /* needed for gadgets drawn on background (like palette scrollbar) */
+ SetDoorBackgroundImage(IMG_UNDEFINED);
+
/* copy default editor door content to main double buffer */
BlitBitmap(graphic_info[IMG_BACKGROUND_PALETTE].bitmap, drawto,
graphic_info[IMG_BACKGROUND_PALETTE].src_x,
ed_fieldy = (ed_ysize < MAX_ED_FIELDY ? ed_ysize : max_ed_fieldy);
ModifyGadget(level_editor_gadget[GADGET_ID_DRAWING_LEVEL],
- GDI_WIDTH, ed_fieldx * MINI_TILEX,
- GDI_HEIGHT, ed_fieldy * MINI_TILEY,
GDI_AREA_SIZE, ed_fieldx, ed_fieldy,
GDI_END);