X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=5fc8ccd439f779762a697f5559ad9dfba73f1d35;hb=ee8d69f9ab839ca2ea408787ab49dea683c2e5a1;hp=e007d7a8847da91038df8b46e5b7eb3b99dc22ab;hpb=82935bc1d2a8bba3be5a29cd5449edc155118521;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index e007d7a8..5fc8ccd4 100644 --- a/src/editor.c +++ b/src/editor.c @@ -4787,27 +4787,47 @@ static char *getElementInfoText(int element) 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; @@ -5278,15 +5298,20 @@ static void CreateControlButtons() } 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) @@ -7466,6 +7491,9 @@ void DrawLevelEd() 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, @@ -7535,8 +7563,6 @@ static void AdjustDrawingAreaGadgets() 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);