X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Feditor.c;h=f6bd6181d046f8b126629833e07d571b240680c7;hb=ff56a43aa3799aa3357f4deca4d6482fc25a6a41;hp=618c272f9971f798162640b3913d03fd89a7ade4;hpb=36357e8399d0a42ac45a1cd096aee24a9008b5f5;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 618c272f..f6bd6181 100644 --- a/src/editor.c +++ b/src/editor.c @@ -13,11 +13,11 @@ #include +#include "libgame/libgame.h" + #include "editor.h" #include "screens.h" #include "tools.h" -#include "misc.h" -#include "buttons.h" #include "files.h" #include "game.h" #include "tape.h" @@ -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; @@ -1382,6 +1394,7 @@ static void CreateControlButtons() GDI_ALT_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y2, GDI_ALT_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2, GDI_EVENT_MASK, event_mask, + GDI_CALLBACK_INFO, HandleEditorGadgetInfoText, GDI_CALLBACK_ACTION, HandleControlButtons, GDI_END); @@ -1439,6 +1452,7 @@ static void CreateControlButtons() GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1, GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2, GDI_EVENT_MASK, event_mask, + GDI_CALLBACK_INFO, HandleEditorGadgetInfoText, GDI_CALLBACK_ACTION, HandleControlButtons, GDI_END); @@ -1475,7 +1489,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, @@ -1489,6 +1503,7 @@ static void CreateControlButtons() GDI_DECORATION_SIZE, MINI_TILEX, MINI_TILEY, GDI_DECORATION_SHIFTING, 1, 1, GDI_EVENT_MASK, event_mask, + GDI_CALLBACK_INFO, HandleEditorGadgetInfoText, GDI_CALLBACK_ACTION, HandleControlButtons, GDI_END); @@ -1567,6 +1582,7 @@ static void CreateCounterButtons() GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y, GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y, GDI_EVENT_MASK, event_mask, + GDI_CALLBACK_INFO, HandleEditorGadgetInfoText, GDI_CALLBACK_ACTION, HandleCounterButtons, GDI_END); @@ -1617,6 +1633,7 @@ static void CreateCounterButtons() GDI_BORDER_SIZE, ED_BORDER_SIZE, GDI_TEXTINPUT_DESIGN_WIDTH, gd_width, GDI_EVENT_MASK, event_mask, + GDI_CALLBACK_INFO, HandleEditorGadgetInfoText, GDI_CALLBACK_ACTION, HandleCounterButtons, GDI_END); @@ -1760,6 +1777,7 @@ static void CreateTextInputGadgets() GDI_BORDER_SIZE, ED_BORDER_SIZE, GDI_TEXTINPUT_DESIGN_WIDTH, ED_WIN_COUNT_XSIZE, GDI_EVENT_MASK, event_mask, + GDI_CALLBACK_INFO, HandleEditorGadgetInfoText, GDI_CALLBACK_ACTION, HandleTextInputGadgets, GDI_END); @@ -1829,6 +1847,7 @@ static void CreateScrollbarGadgets() GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2, GDI_BORDER_SIZE, ED_BORDER_SIZE, GDI_EVENT_MASK, event_mask, + GDI_CALLBACK_INFO, HandleEditorGadgetInfoText, GDI_CALLBACK_ACTION, HandleControlButtons, GDI_END); @@ -1878,6 +1897,7 @@ static void CreateCheckbuttonGadgets() GDI_ALT_DESIGN_UNPRESSED, gd_bitmap, gd_x3, gd_y, GDI_ALT_DESIGN_PRESSED, gd_bitmap, gd_x4, gd_y, GDI_EVENT_MASK, event_mask, + GDI_CALLBACK_INFO, HandleEditorGadgetInfoText, GDI_CALLBACK_ACTION, HandleRadiobuttons, GDI_END); @@ -1910,6 +1930,7 @@ static void CreateCheckbuttonGadgets() GDI_ALT_DESIGN_UNPRESSED, gd_bitmap, gd_x3, gd_y, GDI_ALT_DESIGN_PRESSED, gd_bitmap, gd_x4, gd_y, GDI_EVENT_MASK, event_mask, + GDI_CALLBACK_INFO, HandleEditorGadgetInfoText, GDI_CALLBACK_ACTION, HandleCheckbuttons, GDI_END); @@ -2113,13 +2134,13 @@ void DrawLevelEd() DOOR_GFX_PAGEX6, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE, DX, DY); /* draw mouse button brush elements */ - DrawMiniGraphicExt(drawto, gc, + DrawMiniGraphicExt(drawto, DX + ED_WIN_MB_LEFT_XPOS, DY + ED_WIN_MB_LEFT_YPOS, el2gfx(new_element1)); - DrawMiniGraphicExt(drawto, gc, + DrawMiniGraphicExt(drawto, DX + ED_WIN_MB_MIDDLE_XPOS, DY + ED_WIN_MB_MIDDLE_YPOS, el2gfx(new_element2)); - DrawMiniGraphicExt(drawto, gc, + DrawMiniGraphicExt(drawto, DX + ED_WIN_MB_RIGHT_XPOS, DY + ED_WIN_MB_RIGHT_YPOS, el2gfx(new_element3)); @@ -2292,21 +2313,21 @@ static void PickDrawingElement(int button, int element) if (button == 1) { new_element1 = element; - DrawMiniGraphicExt(drawto, gc, + DrawMiniGraphicExt(drawto, DX + ED_WIN_MB_LEFT_XPOS, DY + ED_WIN_MB_LEFT_YPOS, el2gfx(new_element1)); } else if (button == 2) { new_element2 = element; - DrawMiniGraphicExt(drawto, gc, + DrawMiniGraphicExt(drawto, DX + ED_WIN_MB_MIDDLE_XPOS, DY + ED_WIN_MB_MIDDLE_YPOS, el2gfx(new_element2)); } else { new_element3 = element; - DrawMiniGraphicExt(drawto, gc, + DrawMiniGraphicExt(drawto, DX + ED_WIN_MB_RIGHT_XPOS, DY + ED_WIN_MB_RIGHT_YPOS, el2gfx(new_element3)); } @@ -2664,7 +2685,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; yx + sx * MINI_TILEX, gi->y + sy * MINI_TILEY, el2gfx(new_element)); - DrawMiniGraphicExt(window, gc, + DrawMiniGraphicExt(window, gi->x + sx * MINI_TILEX, gi->y + sy * MINI_TILEY, el2gfx(new_element)); @@ -3511,7 +3532,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 +3562,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 +3780,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 +3966,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) @@ -3959,19 +3983,19 @@ static void HandleControlButtons(struct GadgetInfo *gi) } } -void HandleLevelEditorKeyInput(KeySym key) +void HandleLevelEditorKeyInput(Key key) { - char letter = getCharFromKeySym(key); - int button = MB_LEFT; + char letter = getCharFromKey(key); + 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 == XK_Delete || key == XK_BackSpace) + else if (key == KSYM_Delete || key == KSYM_BackSpace) DrawLevelText(0, 0, 0, TEXT_BACKSPACE); - else if (key == XK_Return) + else if (key == KSYM_Return) DrawLevelText(0, 0, 0, TEXT_NEWLINE); } else if (button_status == MB_RELEASED) @@ -3980,25 +4004,25 @@ void HandleLevelEditorKeyInput(KeySym key) switch (key) { - case XK_Left: + case KSYM_Left: id = GADGET_ID_SCROLL_LEFT; break; - case XK_Right: + case KSYM_Right: id = GADGET_ID_SCROLL_RIGHT; break; - case XK_Up: + case KSYM_Up: id = GADGET_ID_SCROLL_UP; break; - case XK_Down: + case KSYM_Down: id = GADGET_ID_SCROLL_DOWN; break; - case XK_Page_Up: + case KSYM_Page_Up: id = GADGET_ID_SCROLL_LIST_UP; - button = 3; + button = MB_RIGHTBUTTON; break; - case XK_Page_Down: + case KSYM_Page_Down: id = GADGET_ID_SCROLL_LIST_DOWN; - button = 3; + button = MB_RIGHTBUTTON; break; default: @@ -4010,7 +4034,7 @@ void HandleLevelEditorKeyInput(KeySym key) ClickOnGadget(level_editor_gadget[id], button); else if (letter == '.') ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS], button); - else if (key == XK_space || key == XK_Return) + else if (key == KSYM_space || key == KSYM_Return) ClickOnGadget(level_editor_gadget[GADGET_ID_TEST], button); else for (i=0; i