X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=be1011655149e4e55f290c04942df948074272fc;hb=07bd1f7e496e8914d56ec4422b33492b8f66b1d0;hp=15a3b692ddc8b9464bdf84bf3417a1f9ec8b0385;hpb=5f926b2dd808d7336f7ec63499fb0776e8513e97;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 15a3b692..be101165 100644 --- a/src/editor.c +++ b/src/editor.c @@ -292,11 +292,14 @@ #define GADGET_ID_EM_SLIPPERY_GEMS 77 #define GADGET_ID_CUSTOM_INDESTRUCTIBLE 78 #define GADGET_ID_CUSTOM_CAN_FALL 79 -#define GADGET_ID_CUSTOM_SLIPPERY 80 +#define GADGET_ID_CUSTOM_CAN_SMASH 80 +#define GADGET_ID_CUSTOM_PUSHABLE 81 +#define GADGET_ID_CUSTOM_SLIPPERY 82 /* gadgets for buttons in element list */ -#define GADGET_ID_ELEMENTLIST_FIRST 81 -#define GADGET_ID_ELEMENTLIST_LAST (81 + ED_NUM_ELEMENTLIST_BUTTONS - 1) +#define GADGET_ID_ELEMENTLIST_FIRST 83 +#define GADGET_ID_ELEMENTLIST_LAST (GADGET_ID_ELEMENTLIST_FIRST + \ + ED_NUM_ELEMENTLIST_BUTTONS - 1) #define NUM_EDITOR_GADGETS (GADGET_ID_ELEMENTLIST_LAST + 1) @@ -361,13 +364,18 @@ #define ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS 4 #define ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE 5 #define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL 6 -#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY 7 +#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH 7 +#define ED_CHECKBUTTON_ID_CUSTOM_PUSHABLE 8 +#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY 9 -#define ED_NUM_CHECKBUTTONS 8 +#define ED_NUM_CHECKBUTTONS 10 #define ED_CHECKBUTTON_ID_LEVEL_FIRST ED_CHECKBUTTON_ID_DOUBLE_SPEED #define ED_CHECKBUTTON_ID_LEVEL_LAST ED_CHECKBUTTON_ID_RANDOM_RESTRICTED +#define ED_CHECKBUTTON_ID_CUSTOM_FIRST ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE +#define ED_CHECKBUTTON_ID_CUSTOM_LAST ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY + /* values for radiobutton gadgets */ #define ED_RADIOBUTTON_ID_PERCENTAGE 0 #define ED_RADIOBUTTON_ID_QUANTITY 1 @@ -386,7 +394,6 @@ #define INFOTEXT_YPOS (SY + SYSIZE - MINI_TILEX + 2) #define INFOTEXT_XSIZE SXSIZE #define INFOTEXT_YSIZE MINI_TILEX -#define MAX_INFOTEXT_LEN (SXSIZE / FONT2_XSIZE) static struct { @@ -394,28 +401,28 @@ static struct char *text; } control_info[ED_NUM_CTRL_BUTTONS] = { - { 's', "draw single items" }, - { 'd', "draw connected items" }, - { 'l', "draw lines" }, - { 'a', "draw arcs" }, - { 'r', "draw outline rectangles" }, - { 'R', "draw filled rectangles" }, - { '\0', "wrap (rotate) level up" }, - { 't', "enter text elements" }, - { 'f', "flood fill" }, - { '\0', "wrap (rotate) level left" }, - { '?', "properties of drawing element" }, - { '\0', "wrap (rotate) level right" }, - { '\0', "random element placement" }, - { 'b', "grab brush" }, - { '\0', "wrap (rotate) level down" }, - { ',', "pick drawing element" }, - { 'U', "undo last operation" }, - { 'I', "level properties" }, - { 'S', "save level" }, - { 'C', "clear level" }, - { 'T', "test level" }, - { 'E', "exit level editor" } + { 's', "draw single items" }, + { 'd', "draw connected items" }, + { 'l', "draw lines" }, + { 'a', "draw arcs" }, + { 'r', "draw outline rectangles" }, + { 'R', "draw filled rectangles" }, + { '\0', "wrap (rotate) level up" }, + { 't', "enter text elements" }, + { 'f', "flood fill" }, + { '\0', "wrap (rotate) level left" }, + { '?', "properties of drawing element" }, + { '\0', "wrap (rotate) level right" }, + { '\0', "random element placement" }, + { 'b', "grab brush" }, + { '\0', "wrap (rotate) level down" }, + { ',', "pick drawing element" }, + { 'U', "undo last operation" }, + { 'I', "level properties" }, + { 'S', "save level" }, + { 'C', "clear level" }, + { 'T', "test level" }, + { 'E', "exit level editor" } }; /* values for random placement */ @@ -432,6 +439,8 @@ static struct { boolean indestructible; boolean can_fall; + boolean can_smash; + boolean pushable; boolean slippery; } custom_element_properties[NUM_CUSTOM_ELEMENTS]; @@ -704,6 +713,18 @@ static struct }, { ED_SETTINGS_XPOS, ED_COUNTER_YPOS(6), + GADGET_ID_CUSTOM_CAN_SMASH, + &custom_element_properties[0].can_smash, + "can smash", "element can smash other elements" + }, + { + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(7), + GADGET_ID_CUSTOM_PUSHABLE, + &custom_element_properties[0].pushable, + "pushable", "element can be pushed" + }, + { + ED_SETTINGS_XPOS, ED_COUNTER_YPOS(8), GADGET_ID_CUSTOM_SLIPPERY, &custom_element_properties[0].slippery, "slippery", "other elements can fall down from it" @@ -762,11 +783,9 @@ static int undo_buffer_steps = 0; static int edit_mode; -static int counter_xsize = DXSIZE + FONT2_XSIZE - 2 * ED_GADGET_DISTANCE; - -int element_shift = 0; +static int element_shift = 0; -int editor_el_boulderdash[] = +static int editor_el_boulderdash[] = { EL_CHAR('B'), EL_CHAR('O'), @@ -783,7 +802,7 @@ int editor_el_boulderdash[] = EL_CHAR('S'), EL_CHAR('H'), - EL_PLAYER1, + EL_PLAYER_1, EL_EMPTY, EL_SAND, EL_STEELWALL, @@ -808,9 +827,9 @@ int editor_el_boulderdash[] = EL_BD_FIREFLY_DOWN, EL_EMPTY, }; -int num_editor_el_boulderdash = SIZEOF_ARRAY_INT(editor_el_boulderdash); +static int num_editor_el_boulderdash = SIZEOF_ARRAY_INT(editor_el_boulderdash); -int editor_el_emerald_mine[] = +static int editor_el_emerald_mine[] = { EL_CHAR('E'), EL_CHAR('M'), @@ -827,12 +846,12 @@ 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, @@ -872,14 +891,14 @@ 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, @@ -887,49 +906,49 @@ 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, }; -int num_editor_el_emerald_mine = SIZEOF_ARRAY_INT(editor_el_emerald_mine); +static int num_editor_el_emerald_mine = SIZEOF_ARRAY_INT(editor_el_emerald_mine); -int editor_el_more[] = +static int editor_el_more[] = { EL_CHAR('M'), EL_CHAR('O'), 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_BLUE_LEFT, - EL_ARROW_BLUE_RIGHT, - EL_ARROW_BLUE_UP, - EL_ARROW_BLUE_DOWN, + EL_ARROW_LEFT, + EL_ARROW_RIGHT, + EL_ARROW_UP, + EL_ARROW_DOWN, EL_AMOEBA_FULL, EL_EMERALD_YELLOW, @@ -941,7 +960,7 @@ 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, @@ -949,16 +968,16 @@ 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, @@ -979,36 +998,36 @@ 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, }; -int num_editor_el_more = SIZEOF_ARRAY_INT(editor_el_more); +static int num_editor_el_more = SIZEOF_ARRAY_INT(editor_el_more); -int editor_el_sokoban[] = +static int editor_el_sokoban[] = { EL_CHAR('S'), EL_CHAR('O'), @@ -1025,9 +1044,9 @@ int editor_el_sokoban[] = EL_SOKOBAN_FIELD_FULL, EL_STEELWALL, }; -int num_editor_el_sokoban = SIZEOF_ARRAY_INT(editor_el_sokoban); +static int num_editor_el_sokoban = SIZEOF_ARRAY_INT(editor_el_sokoban); -int editor_el_supaplex[] = +static int editor_el_supaplex[] = { EL_CHAR('S'), EL_CHAR('U'), @@ -1046,52 +1065,52 @@ 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, }; -int num_editor_el_supaplex = SIZEOF_ARRAY_INT(editor_el_supaplex); +static int num_editor_el_supaplex = SIZEOF_ARRAY_INT(editor_el_supaplex); -int editor_el_diamond_caves[] = +static int editor_el_diamond_caves[] = { EL_CHAR('D'), EL_CHAR('I'), @@ -1118,35 +1137,35 @@ 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, @@ -1173,9 +1192,9 @@ int editor_el_diamond_caves[] = EL_EXTRA_TIME, EL_EMPTY, }; -int num_editor_el_diamond_caves = SIZEOF_ARRAY_INT(editor_el_diamond_caves); +static int num_editor_el_diamond_caves = SIZEOF_ARRAY_INT(editor_el_diamond_caves); -int editor_el_dx_boulderdash[] = +static int editor_el_dx_boulderdash[] = { EL_CHAR('D'), EL_CHAR('X'), @@ -1204,7 +1223,7 @@ 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, @@ -1217,9 +1236,9 @@ int editor_el_dx_boulderdash[] = EL_EMPTY, EL_EMPTY }; -int num_editor_el_dx_boulderdash = SIZEOF_ARRAY_INT(editor_el_dx_boulderdash); +static int num_editor_el_dx_boulderdash = SIZEOF_ARRAY_INT(editor_el_dx_boulderdash); -int editor_el_chars[] = +static int editor_el_chars[] = { EL_CHAR('T'), EL_CHAR('E'), @@ -1311,9 +1330,9 @@ int editor_el_chars[] = EL_CHAR('ยด'), EL_CHAR('|') }; -int num_editor_el_chars = SIZEOF_ARRAY_INT(editor_el_chars); +static int num_editor_el_chars = SIZEOF_ARRAY_INT(editor_el_chars); -int editor_el_custom[] = +static int editor_el_custom[] = { EL_CHAR('C'), EL_CHAR('U'), @@ -1495,12 +1514,12 @@ int editor_el_custom[] = EL_CUSTOM_START + 126, EL_CUSTOM_START + 127 }; -int num_editor_el_custom = SIZEOF_ARRAY_INT(editor_el_custom); +static int num_editor_el_custom = SIZEOF_ARRAY_INT(editor_el_custom); -int *editor_elements = NULL; /* dynamically allocated */ -int num_editor_elements = 0; /* dynamically determined */ +static int *editor_elements = NULL; /* dynamically allocated */ +static int num_editor_elements = 0; /* dynamically determined */ -struct +static struct { boolean *setup_value; int *element_list; @@ -1590,6 +1609,16 @@ static void ReinitializeElementListButtons() initialization_needed = FALSE; } +static int getCounterGadgetWidth() +{ + return (DXSIZE + getFontWidth(FONT_INPUT) - 2 * ED_GADGET_DISTANCE); +} + +static int getMaxInfoTextLength() +{ + return (SXSIZE / getFontWidth(FONT_TEXT_2)); +} + static char *getElementInfoText(int element) { char *info_text = NULL; @@ -1855,6 +1884,7 @@ static void CreateControlButtons() static void CreateCounterButtons() { + int max_infotext_len = getMaxInfoTextLength(); int i; for (i=0; i= 0 && x - level_xpos < ed_fieldx && @@ -4011,7 +4122,13 @@ static void HandleRadiobuttons(struct GadgetInfo *gi) static void HandleCheckbuttons(struct GadgetInfo *gi) { - *checkbutton_info[gi->custom_type_id].value ^= TRUE; + int type_id = gi->custom_type_id; + + *checkbutton_info[type_id].value ^= TRUE; + + if (type_id >= ED_CHECKBUTTON_ID_CUSTOM_FIRST && + type_id <= ED_CHECKBUTTON_ID_CUSTOM_LAST) + CopyCustomElementPropertiesToGame(); } static void HandleControlButtons(struct GadgetInfo *gi) @@ -4255,9 +4372,8 @@ static void HandleControlButtons(struct GadgetInfo *gi) { if (Request("Save this level and kill the old ?", REQ_ASK)) { - for(x=0; xinfo_text == NULL) return; - strncpy(infotext, gi->info_text, MAX_INFOTEXT_LEN); - infotext[MAX_INFOTEXT_LEN] = '\0'; + strncpy(infotext, gi->info_text, max_infotext_len); + infotext[max_infotext_len] = '\0'; if (gi->custom_id < ED_NUM_CTRL_BUTTONS) { @@ -4499,12 +4587,12 @@ void HandleEditorGadgetInfoText(void *ptr) sprintf(shortcut, " ('%s%c')", (key >= 'A' && key <= 'Z' ? "Shift-" : ""), key); - if (strlen(infotext) + strlen(shortcut) <= MAX_INFOTEXT_LEN) + if (strlen(infotext) + strlen(shortcut) <= max_infotext_len) strcat(infotext, shortcut); } } - DrawText(INFOTEXT_XPOS, INFOTEXT_YPOS, infotext, FS_SMALL, FC_YELLOW); + DrawText(INFOTEXT_XPOS, INFOTEXT_YPOS, infotext, FONT_TEXT_2); } static void HandleDrawingAreaInfo(struct GadgetInfo *gi) @@ -4598,18 +4686,18 @@ static void HandleDrawingAreaInfo(struct GadgetInfo *gi) } if (drawing_function == GADGET_ID_PICK_ELEMENT) - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW, + DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s: %d, %d", infotext, lx, ly); else - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW, + DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s: %d, %d", infotext, ABS(lx - start_lx) + 1, ABS(ly - start_ly) + 1); } else if (drawing_function == GADGET_ID_PICK_ELEMENT) - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW, + DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "%s", getElementInfoText(Feld[lx][ly])); else - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW, + DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "Level position: %d, %d", lx, ly); } @@ -4623,13 +4711,13 @@ static void HandleDrawingAreaInfo(struct GadgetInfo *gi) } } else if (id == GADGET_ID_AMOEBA_CONTENT) - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW, + DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "Amoeba content"); else if (id == GADGET_ID_RANDOM_BACKGROUND) - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW, + DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "Random placement background"); else - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FC_YELLOW, + DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, "Content area %d position: %d, %d", id - GADGET_ID_ELEM_CONTENT_0 + 1, sx, sy); }