X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Feditor.c;h=9df186776b76713a89461b6aa0dcbd0f685b12b6;hp=a74d702c58d2c19539b79bcdac92ecd1380f415f;hb=72b2940bea34cebf61175bc62a474cb78dcec467;hpb=78943068787ee6d63e1045df9d286d98b5a2912c diff --git a/src/editor.c b/src/editor.c index a74d702c..9df18677 100644 --- a/src/editor.c +++ b/src/editor.c @@ -158,9 +158,25 @@ #define ED_CHECKBUTTON_YPOS (ED_BUTTON_MINUS_YPOS + 22) #define ED_STICKYBUTTON_YPOS (ED_BUTTON_MINUS_YPOS + 88) -#define GADGET_ID_NONE -1 +/* some positions in the editor control window */ +#define ED_BUTTON_ELEM_XPOS 6 +#define ED_BUTTON_ELEM_YPOS 30 +#define ED_BUTTON_ELEM_XSIZE 22 +#define ED_BUTTON_ELEM_YSIZE 22 + +#define ED_BUTTON_MINUS_XPOS 2 +#define ED_BUTTON_MINUS_YPOS ED_BUTTON_COUNT_YPOS +#define ED_BUTTON_MINUS_XSIZE ED_BUTTON_COUNT_XSIZE +#define ED_BUTTON_MINUS_YSIZE ED_BUTTON_COUNT_YSIZE +#define ED_BUTTON_PLUS_XPOS (ED_WIN_COUNT_XPOS + ED_WIN_COUNT_XSIZE + 2) +#define ED_BUTTON_PLUS_YPOS ED_BUTTON_COUNT_YPOS +#define ED_BUTTON_PLUS_XSIZE ED_BUTTON_COUNT_XSIZE +#define ED_BUTTON_PLUS_YSIZE ED_BUTTON_COUNT_YSIZE + +/* editor gadget identifiers */ /* drawing toolbox buttons */ +#define GADGET_ID_NONE -1 #define GADGET_ID_SINGLE_ITEMS 0 #define GADGET_ID_CONNECTED_ITEMS 1 #define GADGET_ID_LINE 2 @@ -285,6 +301,9 @@ #define ED_NUM_SCROLLBUTTONS 6 +#define ED_SCROLLBUTTON_ID_AREA_FIRST ED_SCROLLBUTTON_ID_AREA_UP +#define ED_SCROLLBUTTON_ID_AREA_LAST ED_SCROLLBUTTON_ID_AREA_RIGHT + /* values for scrollbar gadgets */ #define ED_SCROLLBAR_ID_HORIZONTAL 0 #define ED_SCROLLBAR_ID_VERTICAL 1 @@ -313,7 +332,7 @@ /* values for radiobutton gadgets */ #define ED_RADIOBUTTON_ID_PERCENTAGE 0 -#define ED_RADIOBUTTON_ID_QUANTITY 1 +#define ED_RADIOBUTTON_ID_QUANTITY 1 #define ED_NUM_RADIOBUTTONS 2 @@ -1665,6 +1684,8 @@ static void MapControlButtons() MapGadget(level_editor_gadget[i]); for (i=0; itext.value, level.name); - MapControlButtons(); - /* - MapMainDrawingArea(); - */ + /* copy actual editor door content to door double buffer for OpenDoor() */ + XCopyArea(display, drawto, pix[PIX_DB_DOOR], gc, + DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1); DrawDrawingWindow(); FadeToFront(); + OpenDoor(DOOR_OPEN_1); + /* OpenDoor(DOOR_OPEN_1 | DOOR_OPEN_2); */ @@ -2421,8 +2408,6 @@ static void DrawPropertiesWindow() if (HAS_CONTENT(properties_element)) { - -#if 1 /* draw stickybutton gadget */ i = ED_CHECKBUTTON_ID_STICK_ELEMENT; x = checkbutton_info[i].x + xoffset_right2; @@ -2432,8 +2417,6 @@ static void DrawPropertiesWindow() ModifyGadget(level_editor_gadget[checkbutton_info[i].gadget_id], GDI_CHECKED, *checkbutton_info[i].value, GDI_END); MapCheckbuttonGadget(i); -#endif - if (IS_AMOEBOID(properties_element)) DrawAmoebaContentArea(); @@ -2678,16 +2661,12 @@ static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y, static int brush_width, brush_height; static int last_cursor_x = -1, last_cursor_y = -1; static boolean delete_old_brush; - int new_element; + int new_element = BUTTON_ELEMENT(button); int x, y; if (mode == CB_DELETE_OLD_CURSOR && !delete_old_brush) return; - new_element = (button == 1 ? new_element1 : - button == 2 ? new_element2 : - button == 3 ? new_element3 : 0); - if (mode == CB_AREA_TO_BRUSH) { int from_lx, from_ly; @@ -2769,19 +2748,9 @@ static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y, } } - /* - printf("%d, %d - %d, %d in level and screen\n", - border_from_x, border_from_y, border_to_x, border_to_y); - */ - if (mode != CB_DELETE_OLD_CURSOR) DrawAreaBorder(border_from_x, border_from_y, border_to_x, border_to_y); - /* - if (mode == CB_BRUSH_TO_LEVEL) - CopyLevelToUndoBuffer(UNDO_IMMEDIATE); - */ - last_cursor_x = cursor_x; last_cursor_y = cursor_y; delete_old_brush = TRUE; @@ -3110,11 +3079,6 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) /* handle info callback for each invocation of action callback */ gi->callback_info(gi); - /* - if (edit_mode != ED_MODE_DRAWING) - return; - */ - button_press_event = (gi->event.type == GD_EVENT_PRESSED); button_release_event = (gi->event.type == GD_EVENT_RELEASED); @@ -3149,17 +3113,6 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) if (!button && !button_release_event) return; - -#if 0 - if (button_release_event) - button = 0; -#endif - -#if 0 - if (!draw_level && drawing_function != GADGET_ID_SINGLE_ITEMS) - return; -#endif - /* automatically switch to 'single item' drawing mode, if needed */ actual_drawing_function = (draw_level ? drawing_function : GADGET_ID_SINGLE_ITEMS); @@ -3322,12 +3275,6 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) break; case GADGET_ID_PICK_ELEMENT: - - /* - if (button_press_event) - PickDrawingElement(button, Feld[lx][ly]); - */ - if (button_release_event) ClickOnGadget(level_editor_gadget[last_drawing_function], MB_LEFT); else @@ -3698,12 +3645,6 @@ static void HandleControlButtons(struct GadgetInfo *gi) if (Feld[x][y] != Ur[x][y]) level_changed = TRUE; - if (0 && !level_changed) - { - Request("Level has not changed !", REQ_CONFIRM); - break; - } - for(y=0; y