X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=00cda340cc0053cedec3e928c13be96f5f673a6e;hb=72657dfeee6b6c184a42e83ed923a63c1768100b;hp=075bed040f75ec6b4d8324ac02a604de4de27a48;hpb=a95264fc39b6eae2473bfd6521c7bf3eef5af804;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 075bed04..00cda340 100644 --- a/src/editor.c +++ b/src/editor.c @@ -169,32 +169,39 @@ #define ED_STICKYBUTTON_YPOS (ED_BUTTON_MINUS_YPOS + 66) /* 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 - -/* some values for text input and counter gadgets */ -#define ED_BUTTON_COUNT_YPOS 60 -#define ED_BUTTON_COUNT_XSIZE 20 -#define ED_BUTTON_COUNT_YSIZE 20 -#define ED_WIN_COUNT_XPOS (2 + ED_BUTTON_COUNT_XSIZE + 2) -#define ED_WIN_COUNT_YPOS ED_BUTTON_COUNT_YPOS -#define ED_WIN_COUNT_XSIZE 52 -#define ED_WIN_COUNT_YSIZE ED_BUTTON_COUNT_YSIZE -#define ED_WIN_COUNT2_XPOS 27 -#define ED_WIN_COUNT2_YPOS 3 -#define ED_WIN_COUNT2_XSIZE 46 -#define ED_WIN_COUNT2_YSIZE ED_BUTTON_COUNT_YSIZE - -#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 +#define ED_BUTTON_ELEM_XPOS 6 +#define ED_BUTTON_ELEM_YPOS 30 +#define ED_BUTTON_ELEM_XSIZE 22 +#define ED_BUTTON_ELEM_YSIZE 22 + +/* some values for text input, selectbox and counter gadgets */ +#define ED_BUTTON_COUNT_YPOS 60 +#define ED_BUTTON_COUNT_XSIZE 20 +#define ED_BUTTON_COUNT_YSIZE 20 +#define ED_WIN_COUNT_XPOS (2 + ED_BUTTON_COUNT_XSIZE + 2) +#define ED_WIN_COUNT_YPOS ED_BUTTON_COUNT_YPOS +#define ED_WIN_COUNT_XSIZE 52 +#define ED_WIN_COUNT_YSIZE ED_BUTTON_COUNT_YSIZE +#define ED_WIN_COUNT2_XPOS 27 +#define ED_WIN_COUNT2_YPOS 3 +#define ED_WIN_COUNT2_XSIZE 46 +#define ED_WIN_COUNT2_YSIZE ED_BUTTON_COUNT_YSIZE + +#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 + +#define ED_SELECTBOX_XPOS ED_WIN_COUNT_XPOS +#define ED_SELECTBOX_YPOS (ED_WIN_COUNT_YPOS + 2 + \ + ED_WIN_COUNT_YSIZE) +#define ED_SELECTBOX_XSIZE ED_WIN_COUNT_XSIZE +#define ED_SELECTBOX_YSIZE ED_WIN_COUNT_YSIZE /* editor gadget identifiers */ @@ -269,35 +276,38 @@ #define GADGET_ID_LEVEL_NAME 60 #define GADGET_ID_LEVEL_AUTHOR 61 +/* selectbox identifiers */ +#define GADGET_ID_SELECTBOX_TEST 62 + /* gadgets for scrolling of drawing area */ -#define GADGET_ID_SCROLL_UP 62 -#define GADGET_ID_SCROLL_DOWN 63 -#define GADGET_ID_SCROLL_LEFT 64 -#define GADGET_ID_SCROLL_RIGHT 65 -#define GADGET_ID_SCROLL_HORIZONTAL 66 -#define GADGET_ID_SCROLL_VERTICAL 67 +#define GADGET_ID_SCROLL_UP 63 +#define GADGET_ID_SCROLL_DOWN 64 +#define GADGET_ID_SCROLL_LEFT 65 +#define GADGET_ID_SCROLL_RIGHT 66 +#define GADGET_ID_SCROLL_HORIZONTAL 67 +#define GADGET_ID_SCROLL_VERTICAL 68 /* gadgets for scrolling element list */ -#define GADGET_ID_SCROLL_LIST_UP 68 -#define GADGET_ID_SCROLL_LIST_DOWN 69 -#define GADGET_ID_SCROLL_LIST_VERTICAL 70 +#define GADGET_ID_SCROLL_LIST_UP 69 +#define GADGET_ID_SCROLL_LIST_DOWN 70 +#define GADGET_ID_SCROLL_LIST_VERTICAL 71 /* buttons for level/element properties */ -#define GADGET_ID_RANDOM_PERCENTAGE 71 -#define GADGET_ID_RANDOM_QUANTITY 72 -#define GADGET_ID_RANDOM_RESTRICTED 73 -#define GADGET_ID_DOUBLE_SPEED 74 -#define GADGET_ID_GRAVITY 75 -#define GADGET_ID_STICK_ELEMENT 76 -#define GADGET_ID_EM_SLIPPERY_GEMS 77 -#define GADGET_ID_CUSTOM_INDESTRUCTIBLE 78 -#define GADGET_ID_CUSTOM_CAN_FALL 79 -#define GADGET_ID_CUSTOM_CAN_SMASH 80 -#define GADGET_ID_CUSTOM_PUSHABLE 81 -#define GADGET_ID_CUSTOM_SLIPPERY 82 +#define GADGET_ID_RANDOM_PERCENTAGE 72 +#define GADGET_ID_RANDOM_QUANTITY 73 +#define GADGET_ID_RANDOM_RESTRICTED 74 +#define GADGET_ID_DOUBLE_SPEED 75 +#define GADGET_ID_GRAVITY 76 +#define GADGET_ID_STICK_ELEMENT 77 +#define GADGET_ID_EM_SLIPPERY_GEMS 78 +#define GADGET_ID_CUSTOM_INDESTRUCTIBLE 79 +#define GADGET_ID_CUSTOM_CAN_FALL 80 +#define GADGET_ID_CUSTOM_CAN_SMASH 81 +#define GADGET_ID_CUSTOM_PUSHABLE 82 +#define GADGET_ID_CUSTOM_SLIPPERY 83 /* gadgets for buttons in element list */ -#define GADGET_ID_ELEMENTLIST_FIRST 83 +#define GADGET_ID_ELEMENTLIST_FIRST 84 #define GADGET_ID_ELEMENTLIST_LAST (GADGET_ID_ELEMENTLIST_FIRST + \ ED_NUM_ELEMENTLIST_BUTTONS - 1) @@ -356,6 +366,11 @@ #define ED_TEXTINPUT_ID_LEVEL_FIRST ED_TEXTINPUT_ID_LEVEL_NAME #define ED_TEXTINPUT_ID_LEVEL_LAST ED_TEXTINPUT_ID_LEVEL_AUTHOR +/* values for selectbox gadgets */ +#define ED_SELECTBOX_ID_TEST 0 + +#define ED_NUM_SELECTBOX 1 + /* values for checkbutton gadgets */ #define ED_CHECKBUTTON_ID_DOUBLE_SPEED 0 #define ED_CHECKBUTTON_ID_GRAVITY 1 @@ -553,6 +568,34 @@ static struct } }; +static char *test_values[] = +{ + "test 1", + "test 2", + "dieser test-text ist viel zu lang fuer die selectbox", + "letzter text" +}; +static int test_index = 0; + +static struct +{ + int x, y; + int gadget_id; + int size; + char **values; + int *index; + char *text, *infotext; +} selectbox_info[ED_NUM_SELECTBOX] = +{ + { + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(3), + GADGET_ID_SELECTBOX_TEST, + MAX_PLAYER_NAME_LEN, + test_values, &test_index, + "test:", "test-selectbox entry" + }, +}; + static struct { int xpos, ypos; @@ -763,6 +806,7 @@ static void CopyLevelToUndoBuffer(int); static void HandleDrawingAreas(struct GadgetInfo *); static void HandleCounterButtons(struct GadgetInfo *); static void HandleTextInputGadgets(struct GadgetInfo *); +static void HandleSelectboxGadgets(struct GadgetInfo *); static void HandleRadiobuttons(struct GadgetInfo *); static void HandleCheckbuttons(struct GadgetInfo *); static void HandleControlButtons(struct GadgetInfo *); @@ -802,7 +846,7 @@ static int editor_el_boulderdash[] = EL_CHAR('S'), EL_CHAR('H'), - EL_PLAYER1, + EL_PLAYER_1, EL_EMPTY, EL_SAND, EL_STEELWALL, @@ -846,12 +890,12 @@ static int editor_el_emerald_mine[] = EL_CHAR('N'), EL_CHAR('E'), - EL_PLAYER1, - EL_PLAYER2, - EL_PLAYER3, - EL_PLAYER4, + EL_PLAYER_1, + EL_PLAYER_2, + EL_PLAYER_3, + EL_PLAYER_4, - EL_PLAYER1, + EL_PLAYER_1, EL_EMPTY, EL_SAND, EL_ROCK, @@ -891,14 +935,14 @@ static int editor_el_emerald_mine[] = EL_SPACESHIP_DOWN, EL_INVISIBLE_WALL, - EL_ACIDPOOL_TOPLEFT, + EL_ACID_POOL_TOPLEFT, EL_ACID, - EL_ACIDPOOL_TOPRIGHT, + EL_ACID_POOL_TOPRIGHT, EL_EMPTY, - EL_ACIDPOOL_BOTTOMLEFT, - EL_ACIDPOOL_BOTTOM, - EL_ACIDPOOL_BOTTOMRIGHT, + EL_ACID_POOL_BOTTOMLEFT, + EL_ACID_POOL_BOTTOM, + EL_ACID_POOL_BOTTOMRIGHT, EL_EMPTY, EL_AMOEBA_DROP, @@ -906,20 +950,20 @@ static int editor_el_emerald_mine[] = EL_AMOEBA_WET, EL_AMOEBA_DRY, - EL_EM_KEY1_FILE, - EL_EM_KEY2_FILE, - EL_EM_KEY3_FILE, - EL_EM_KEY4_FILE, + EL_EM_KEY_1_FILE, + EL_EM_KEY_2_FILE, + EL_EM_KEY_3_FILE, + EL_EM_KEY_4_FILE, - EL_EM_GATE1, - EL_EM_GATE2, - EL_EM_GATE3, - EL_EM_GATE4, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, - EL_EM_GATE1_GRAY, - EL_EM_GATE2_GRAY, - EL_EM_GATE3_GRAY, - EL_EM_GATE4_GRAY, + EL_EM_GATE_1_GRAY, + EL_EM_GATE_2_GRAY, + EL_EM_GATE_3_GRAY, + EL_EM_GATE_4_GRAY, }; static int num_editor_el_emerald_mine = SIZEOF_ARRAY_INT(editor_el_emerald_mine); @@ -930,20 +974,20 @@ static int editor_el_more[] = EL_CHAR('R'), EL_CHAR('E'), - EL_KEY1, - EL_KEY2, - EL_KEY3, - EL_KEY4, + EL_KEY_1, + EL_KEY_2, + EL_KEY_3, + EL_KEY_4, - EL_GATE1, - EL_GATE2, - EL_GATE3, - EL_GATE4, + EL_GATE_1, + EL_GATE_2, + EL_GATE_3, + EL_GATE_4, - EL_GATE1_GRAY, - EL_GATE2_GRAY, - EL_GATE3_GRAY, - EL_GATE4_GRAY, + EL_GATE_1_GRAY, + EL_GATE_2_GRAY, + EL_GATE_3_GRAY, + EL_GATE_4_GRAY, EL_ARROW_LEFT, EL_ARROW_RIGHT, @@ -960,7 +1004,7 @@ static int editor_el_more[] = EL_WALL_EMERALD_RED, EL_WALL_EMERALD_PURPLE, - EL_GAMEOFLIFE, + EL_GAME_OF_LIFE, EL_PACMAN_UP, EL_TIME_ORB_FULL, EL_TIME_ORB_EMPTY, @@ -968,16 +1012,16 @@ static int editor_el_more[] = EL_PACMAN_LEFT, EL_DARK_YAMYAM, EL_PACMAN_RIGHT, - EL_WALL_GROWING, + EL_EXPANDABLE_WALL, EL_BIOMAZE, EL_PACMAN_DOWN, EL_LAMP, EL_LAMP_ACTIVE, - EL_DYNABOMB_NR, - EL_DYNABOMB_SZ, - EL_DYNABOMB_XL, + EL_DYNABOMB_INCREASE_NUMBER, + EL_DYNABOMB_INCREASE_SIZE, + EL_DYNABOMB_INCREASE_POWER, EL_STONEBLOCK, EL_MOLE, @@ -998,32 +1042,32 @@ static int editor_el_more[] = EL_EMPTY, EL_MOLE_DOWN, EL_BALLOON, - EL_BALLOON_SEND_ANY_DIRECTION, + EL_BALLOON_SWITCH_ANY, - EL_BALLOON_SEND_LEFT, - EL_BALLOON_SEND_RIGHT, - EL_BALLOON_SEND_UP, - EL_BALLOON_SEND_DOWN, + EL_BALLOON_SWITCH_LEFT, + EL_BALLOON_SWITCH_RIGHT, + EL_BALLOON_SWITCH_UP, + EL_BALLOON_SWITCH_DOWN, EL_SATELLITE, - EL_WALL_GROWING_X, - EL_WALL_GROWING_Y, - EL_WALL_GROWING_XY, + EL_EXPANDABLE_WALL_HORIZONTAL, + EL_EXPANDABLE_WALL_VERTICAL, + EL_EXPANDABLE_WALL_ANY, EL_INVISIBLE_STEELWALL, EL_INVISIBLE_WALL, EL_SPEED_PILL, EL_BLACK_ORB, - EL_EMC_STEELWALL1, - EL_EMC_WALL_PILLAR_UPPER, - EL_EMC_WALL_PILLAR_MIDDLE, - EL_EMC_WALL_PILLAR_LOWER, + EL_EMC_STEELWALL_1, + EL_EMC_WALL_1, + EL_EMC_WALL_2, + EL_EMC_WALL_3, - EL_EMC_WALL4, - EL_EMC_WALL5, - EL_EMC_WALL6, - EL_EMC_WALL7, + EL_EMC_WALL_4, + EL_EMC_WALL_5, + EL_EMC_WALL_6, + EL_EMC_WALL_7, }; static int num_editor_el_more = SIZEOF_ARRAY_INT(editor_el_more); @@ -1065,48 +1109,48 @@ static int editor_el_supaplex[] = EL_SP_INFOTRON, EL_SP_CHIP_SINGLE, - EL_SP_HARD_GRAY, + EL_SP_HARDWARE_GRAY, EL_SP_EXIT_CLOSED, EL_SP_DISK_ORANGE, - EL_SP_PORT1_RIGHT, - EL_SP_PORT1_DOWN, - EL_SP_PORT1_LEFT, + EL_SP_PORT_RIGHT, + EL_SP_PORT_DOWN, + EL_SP_PORT_LEFT, - EL_SP_PORT1_UP, - EL_SP_PORT2_RIGHT, - EL_SP_PORT2_DOWN, - EL_SP_PORT2_LEFT, + EL_SP_PORT_UP, + EL_SP_GRAVITY_PORT_RIGHT, + EL_SP_GRAVITY_PORT_DOWN, + EL_SP_GRAVITY_PORT_LEFT, - EL_SP_PORT2_UP, + EL_SP_GRAVITY_PORT_UP, EL_SP_SNIKSNAK, EL_SP_DISK_YELLOW, EL_SP_TERMINAL, EL_SP_DISK_RED, - EL_SP_PORT_Y, - EL_SP_PORT_X, - EL_SP_PORT_XY, + EL_SP_PORT_VERTICAL, + EL_SP_PORT_HORIZONTAL, + EL_SP_PORT_ANY, EL_SP_ELECTRON, EL_SP_BUGGY_BASE, EL_SP_CHIP_LEFT, EL_SP_CHIP_RIGHT, - EL_SP_HARD_BASE1, - EL_SP_HARD_GREEN, - EL_SP_HARD_BLUE, - EL_SP_HARD_RED, + EL_SP_HARDWARE_BASE_1, + EL_SP_HARDWARE_GREEN, + EL_SP_HARDWARE_BLUE, + EL_SP_HARDWARE_RED, - EL_SP_HARD_YELLOW, - EL_SP_HARD_BASE2, - EL_SP_HARD_BASE3, - EL_SP_HARD_BASE4, + EL_SP_HARDWARE_YELLOW, + EL_SP_HARDWARE_BASE_2, + EL_SP_HARDWARE_BASE_3, + EL_SP_HARDWARE_BASE_4, - EL_SP_HARD_BASE5, - EL_SP_HARD_BASE6, - EL_SP_CHIP_UPPER, - EL_SP_CHIP_LOWER, + EL_SP_HARDWARE_BASE_5, + EL_SP_HARDWARE_BASE_6, + EL_SP_CHIP_TOP, + EL_SP_CHIP_BOTTOM, }; static int num_editor_el_supaplex = SIZEOF_ARRAY_INT(editor_el_supaplex); @@ -1137,35 +1181,35 @@ static int editor_el_diamond_caves[] = EL_WALL_PEARL, EL_WALL_CRYSTAL, - EL_CONVEYOR_BELT1_LEFT, - EL_CONVEYOR_BELT1_MIDDLE, - EL_CONVEYOR_BELT1_RIGHT, - EL_CONVEYOR_BELT1_SWITCH_MIDDLE, + EL_CONVEYOR_BELT_1_LEFT, + EL_CONVEYOR_BELT_1_MIDDLE, + EL_CONVEYOR_BELT_1_RIGHT, + EL_CONVEYOR_BELT_1_SWITCH_MIDDLE, - EL_CONVEYOR_BELT2_LEFT, - EL_CONVEYOR_BELT2_MIDDLE, - EL_CONVEYOR_BELT2_RIGHT, - EL_CONVEYOR_BELT2_SWITCH_MIDDLE, + EL_CONVEYOR_BELT_2_LEFT, + EL_CONVEYOR_BELT_2_MIDDLE, + EL_CONVEYOR_BELT_2_RIGHT, + EL_CONVEYOR_BELT_2_SWITCH_MIDDLE, - EL_CONVEYOR_BELT3_LEFT, - EL_CONVEYOR_BELT3_MIDDLE, - EL_CONVEYOR_BELT3_RIGHT, - EL_CONVEYOR_BELT3_SWITCH_MIDDLE, + EL_CONVEYOR_BELT_3_LEFT, + EL_CONVEYOR_BELT_3_MIDDLE, + EL_CONVEYOR_BELT_3_RIGHT, + EL_CONVEYOR_BELT_3_SWITCH_MIDDLE, - EL_CONVEYOR_BELT4_LEFT, - EL_CONVEYOR_BELT4_MIDDLE, - EL_CONVEYOR_BELT4_RIGHT, - EL_CONVEYOR_BELT4_SWITCH_MIDDLE, + EL_CONVEYOR_BELT_4_LEFT, + EL_CONVEYOR_BELT_4_MIDDLE, + EL_CONVEYOR_BELT_4_RIGHT, + EL_CONVEYOR_BELT_4_SWITCH_MIDDLE, - EL_CONVEYOR_BELT1_SWITCH_LEFT, - EL_CONVEYOR_BELT2_SWITCH_LEFT, - EL_CONVEYOR_BELT3_SWITCH_LEFT, - EL_CONVEYOR_BELT4_SWITCH_LEFT, + EL_CONVEYOR_BELT_1_SWITCH_LEFT, + EL_CONVEYOR_BELT_2_SWITCH_LEFT, + EL_CONVEYOR_BELT_3_SWITCH_LEFT, + EL_CONVEYOR_BELT_4_SWITCH_LEFT, - EL_CONVEYOR_BELT1_SWITCH_RIGHT, - EL_CONVEYOR_BELT2_SWITCH_RIGHT, - EL_CONVEYOR_BELT3_SWITCH_RIGHT, - EL_CONVEYOR_BELT4_SWITCH_RIGHT, + EL_CONVEYOR_BELT_1_SWITCH_RIGHT, + EL_CONVEYOR_BELT_2_SWITCH_RIGHT, + EL_CONVEYOR_BELT_3_SWITCH_RIGHT, + EL_CONVEYOR_BELT_4_SWITCH_RIGHT, EL_SWITCHGATE_OPEN, EL_SWITCHGATE_CLOSED, @@ -1223,7 +1267,7 @@ static int editor_el_dx_boulderdash[] = EL_TUBE_HORIZONTAL, EL_TUBE_VERTICAL_RIGHT, - EL_TUBE_ALL, + EL_TUBE_ANY, EL_TUBE_VERTICAL_LEFT, EL_TUBE_VERTICAL, @@ -2158,6 +2202,55 @@ static void CreateTextInputGadgets() } } +static void CreateSelectboxGadgets() +{ + int max_infotext_len = getMaxInfoTextLength(); + int i; + + for (i=0; i= 0 && x - level_xpos < ed_fieldx && @@ -4114,6 +4225,16 @@ static void HandleTextInputGadgets(struct GadgetInfo *gi) strcpy(textinput_info[gi->custom_type_id].value, gi->text.value); } +static void HandleSelectboxGadgets(struct GadgetInfo *gi) +{ + *selectbox_info[gi->custom_type_id].index = gi->selectbox.index; + +#if 1 + printf("Selected text value: '%s'\n", + selectbox_info[gi->custom_type_id].values[gi->selectbox.index]); +#endif +} + static void HandleRadiobuttons(struct GadgetInfo *gi) { *radiobutton_info[gi->custom_type_id].value =