X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=0f09e1b827ad852011598fb3802a84aff78b96d4;hb=cb8b58732432cc7f3163446dedd54c63126b23c3;hp=7ace5ece715702a16fdcfe7c503f8ad8f09312df;hpb=462bca0782be497b984922afda26b5bf12bd3d75;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 7ace5ece..0f09e1b8 100644 --- a/src/editor.c +++ b/src/editor.c @@ -2516,7 +2516,7 @@ static struct GADGET_ID_EM_SLIPPERY_GEMS, GADGET_ID_NONE, &level.em_slippery_gems, NULL, - "slip down from certain flat walls","use EM style slipping behaviour" + "slip down from certain flat walls","use EM/DC style slipping behaviour" }, { ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2), @@ -3574,15 +3574,20 @@ static int editor_el_diamond_caves[] = EL_CONVEYOR_BELT_3_SWITCH_RIGHT, EL_CONVEYOR_BELT_4_SWITCH_RIGHT, + EL_TIMEGATE_CLOSED, + EL_TIMEGATE_OPEN, + EL_TIMEGATE_SWITCH, + EL_DC_TIMEGATE_SWITCH, + EL_SWITCHGATE_CLOSED, EL_SWITCHGATE_OPEN, EL_SWITCHGATE_SWITCH_UP, EL_SWITCHGATE_SWITCH_DOWN, - EL_TIMEGATE_CLOSED, - EL_TIMEGATE_OPEN, - EL_TIMEGATE_SWITCH, EL_EMPTY, + EL_EMPTY, + EL_DC_SWITCHGATE_SWITCH_UP, + EL_DC_SWITCHGATE_SWITCH_DOWN, EL_SIGN_EXCLAMATION, EL_SIGN_STOP, @@ -3592,7 +3597,7 @@ static int editor_el_diamond_caves[] = EL_STEELWALL_SLIPPERY, EL_INVISIBLE_SAND, EL_LANDMINE, - EL_EMPTY, + EL_DC_LANDMINE, EL_SHIELD_NORMAL, EL_SHIELD_DEADLY, @@ -3603,6 +3608,96 @@ static int editor_el_diamond_caves[] = EL_ENVELOPE_2, EL_ENVELOPE_3, EL_ENVELOPE_4, + + EL_SIGN_RADIOACTIVITY, + EL_SIGN_WHEELCHAIR, + EL_SIGN_PARKING, + EL_SIGN_NO_ENTRY, + + EL_SIGN_GIVE_WAY, + EL_SIGN_ENTRY_FORBIDDEN, + EL_SIGN_EMERGENCY_EXIT, + EL_SIGN_YIN_YANG, + + EL_SIGN_SPERMS, + EL_SIGN_BULLET, + EL_SIGN_HEART, + EL_SIGN_CROSS, + + EL_SIGN_FRANKIE, + EL_EMPTY, + EL_EMPTY, + EL_EMPTY, + + EL_SPERMS, + EL_BULLET, + EL_HEART, + EL_CROSS, + + EL_FRANKIE, + EL_EMPTY, + EL_EMPTY, + EL_EMPTY, + + EL_DC_STEELWALL_2_SINGLE, + EL_DC_STEELWALL_2_TOP, + EL_STEEL_EXIT_CLOSED, + EL_STEEL_EXIT_OPEN, + + EL_DC_STEELWALL_2_LEFT, + EL_DC_STEELWALL_2_MIDDLE, + EL_DC_STEELWALL_2_HORIZONTAL, + EL_DC_STEELWALL_2_RIGHT, + + EL_DC_STEELWALL_1_TOPLEFT, + EL_DC_STEELWALL_2_VERTICAL, + EL_DC_STEELWALL_1_TOPRIGHT, + EL_EMPTY, + + EL_DC_STEELWALL_1_VERTICAL, + EL_DC_STEELWALL_2_BOTTOM, + EL_EMPTY, + EL_EMPTY, + + EL_DC_STEELWALL_1_BOTTOMLEFT, + EL_DC_STEELWALL_1_HORIZONTAL, + EL_DC_STEELWALL_1_BOTTOMRIGHT, + EL_EMPTY, + + EL_DC_STEELWALL_1_BOTTOMRIGHT_2, + EL_DC_STEELWALL_1_BOTTOM, + EL_DC_STEELWALL_1_BOTTOMLEFT_2, + EL_EMPTY, + + EL_DC_STEELWALL_1_RIGHT, + EL_EMPTY, + EL_DC_STEELWALL_1_LEFT, + EL_EMPTY, + + EL_DC_STEELWALL_1_TOPRIGHT_2, + EL_DC_STEELWALL_1_TOP, + EL_DC_STEELWALL_1_TOPLEFT_2, + EL_EMPTY, + + EL_EXPANDABLE_STEELWALL_HORIZONTAL, + EL_EXPANDABLE_STEELWALL_VERTICAL, + EL_EXPANDABLE_STEELWALL_ANY, + EL_EMPTY, + + EL_EM_EXIT_CLOSED, + EL_EM_EXIT_OPEN, + EL_EM_STEEL_EXIT_CLOSED, + EL_EM_STEEL_EXIT_OPEN, + + EL_DC_KEY_WHITE, + EL_DC_GATE_WHITE, + EL_DC_GATE_WHITE_GRAY, + EL_DC_GATE_FAKE_GRAY, + + EL_DC_MAGIC_WALL, + EL_QUICKSAND_FAST_EMPTY, + EL_QUICKSAND_FAST_FULL, + EL_EMPTY, }; static int *editor_hl_diamond_caves_ptr = editor_hl_diamond_caves; static int *editor_el_diamond_caves_ptr = editor_el_diamond_caves; @@ -3742,6 +3837,11 @@ static int editor_el_chars[] = EL_CHAR('°'), EL_CHAR('®'), EL_CHAR(FONT_ASCII_CURSOR), + EL_CHAR(FONT_ASCII_BUTTON), + + EL_CHAR(FONT_ASCII_UP), + EL_CHAR(FONT_ASCII_DOWN), + EL_CHAR(' '), EL_CHAR(' ') }; static int *editor_hl_chars_ptr = editor_hl_chars; @@ -3749,6 +3849,116 @@ static int *editor_el_chars_ptr = editor_el_chars; static int num_editor_hl_chars = SIZEOF_ARRAY_INT(editor_hl_chars); static int num_editor_el_chars = SIZEOF_ARRAY_INT(editor_el_chars); +static int editor_hl_steel_chars[] = +{ + EL_INTERNAL_CASCADE_STEEL_CHARS_ACTIVE, + EL_STEEL_CHAR('T'), + EL_STEEL_CHAR('X'), + EL_STEEL_CHAR('T'), +}; + +static int editor_el_steel_chars[] = +{ + EL_STEEL_CHAR(' '), + EL_STEEL_CHAR('!'), + EL_STEEL_CHAR('"'), + EL_STEEL_CHAR('#'), + + EL_STEEL_CHAR('$'), + EL_STEEL_CHAR('%'), + EL_STEEL_CHAR('&'), + EL_STEEL_CHAR('\''), + + EL_STEEL_CHAR('('), + EL_STEEL_CHAR(')'), + EL_STEEL_CHAR('*'), + EL_STEEL_CHAR('+'), + + EL_STEEL_CHAR(','), + EL_STEEL_CHAR('-'), + EL_STEEL_CHAR('.'), + EL_STEEL_CHAR('/'), + + EL_STEEL_CHAR('0'), + EL_STEEL_CHAR('1'), + EL_STEEL_CHAR('2'), + EL_STEEL_CHAR('3'), + + EL_STEEL_CHAR('4'), + EL_STEEL_CHAR('5'), + EL_STEEL_CHAR('6'), + EL_STEEL_CHAR('7'), + + EL_STEEL_CHAR('8'), + EL_STEEL_CHAR('9'), + EL_STEEL_CHAR(':'), + EL_STEEL_CHAR(';'), + + EL_STEEL_CHAR('<'), + EL_STEEL_CHAR('='), + EL_STEEL_CHAR('>'), + EL_STEEL_CHAR('?'), + + EL_STEEL_CHAR('@'), + EL_STEEL_CHAR('A'), + EL_STEEL_CHAR('B'), + EL_STEEL_CHAR('C'), + + EL_STEEL_CHAR('D'), + EL_STEEL_CHAR('E'), + EL_STEEL_CHAR('F'), + EL_STEEL_CHAR('G'), + + EL_STEEL_CHAR('H'), + EL_STEEL_CHAR('I'), + EL_STEEL_CHAR('J'), + EL_STEEL_CHAR('K'), + + EL_STEEL_CHAR('L'), + EL_STEEL_CHAR('M'), + EL_STEEL_CHAR('N'), + EL_STEEL_CHAR('O'), + + EL_STEEL_CHAR('P'), + EL_STEEL_CHAR('Q'), + EL_STEEL_CHAR('R'), + EL_STEEL_CHAR('S'), + + EL_STEEL_CHAR('T'), + EL_STEEL_CHAR('U'), + EL_STEEL_CHAR('V'), + EL_STEEL_CHAR('W'), + + EL_STEEL_CHAR('X'), + EL_STEEL_CHAR('Y'), + EL_STEEL_CHAR('Z'), + EL_STEEL_CHAR('['), + + EL_STEEL_CHAR('\\'), + EL_STEEL_CHAR(']'), + EL_STEEL_CHAR('^'), + EL_STEEL_CHAR('_'), + + EL_STEEL_CHAR('©'), + EL_STEEL_CHAR('Ä'), + EL_STEEL_CHAR('Ö'), + EL_STEEL_CHAR('Ü'), + + EL_STEEL_CHAR('°'), + EL_STEEL_CHAR('®'), + EL_STEEL_CHAR(FONT_ASCII_CURSOR), + EL_STEEL_CHAR(FONT_ASCII_BUTTON), + + EL_STEEL_CHAR(FONT_ASCII_UP), + EL_STEEL_CHAR(FONT_ASCII_DOWN), + EL_STEEL_CHAR(' '), + EL_STEEL_CHAR(' ') +}; +static int *editor_hl_steel_chars_ptr = editor_hl_steel_chars; +static int *editor_el_steel_chars_ptr = editor_el_steel_chars; +static int num_editor_hl_steel_chars = SIZEOF_ARRAY_INT(editor_hl_steel_chars); +static int num_editor_el_steel_chars = SIZEOF_ARRAY_INT(editor_el_steel_chars); + static int editor_hl_custom[] = { EL_INTERNAL_CASCADE_CE_ACTIVE, @@ -4305,6 +4515,12 @@ editor_elements_info[] = &editor_hl_chars_ptr, &num_editor_hl_chars, &editor_el_chars_ptr, &num_editor_el_chars }, + { + &setup.editor.el_steel_chars, + &setup.editor_cascade.el_steel_chars, + &editor_hl_steel_chars_ptr, &num_editor_hl_steel_chars, + &editor_el_steel_chars_ptr, &num_editor_el_steel_chars + }, { &setup.editor.el_custom, &setup.editor_cascade.el_ce, @@ -7399,6 +7615,7 @@ static void DrawPropertiesInfo() /* pre-defined properties */ { EP_CAN_PASS_MAGIC_WALL, "- can pass magic walls" }, + { EP_CAN_PASS_DC_MAGIC_WALL,"- can pass magic walls (DC style)" }, { EP_SWITCHABLE, "- can be switched" }, #if 0 { EP_HAS_EDITOR_CONTENT, "- can contain other elements" }, @@ -7566,9 +7783,11 @@ static struct { EL_EMC_DRIPPER, &level.amoeba_speed, TEXT_AMOEBA_SPEED }, { EL_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION }, { EL_BD_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION }, + { EL_DC_MAGIC_WALL, &level.time_magic_wall, TEXT_DURATION }, { EL_ROBOT_WHEEL, &level.time_wheel, TEXT_DURATION }, - { EL_TIMEGATE_SWITCH, &level.time_timegate, TEXT_DURATION }, + { EL_TIMEGATE_SWITCH, &level.time_timegate, TEXT_DURATION }, + { EL_DC_TIMEGATE_SWITCH,&level.time_timegate, TEXT_DURATION }, { EL_LIGHT_SWITCH, &level.time_light, TEXT_DURATION }, { EL_LIGHT_SWITCH_ACTIVE, &level.time_light, TEXT_DURATION }, { EL_SHIELD_NORMAL, &level.shield_normal_time, TEXT_DURATION }, @@ -8435,33 +8654,7 @@ void DumpBrush_Small() static void FloodFill(int from_x, int from_y, int fill_element) { - int i,x,y; - int old_element; - static int check[4][2] = { {-1,0}, {0,-1}, {1,0}, {0,1} }; - static int safety = 0; - - /* check if starting field still has the desired content */ - if (Feld[from_x][from_y] == fill_element) - return; - - safety++; - - if (safety > lev_fieldx*lev_fieldy) - Error(ERR_EXIT, "Something went wrong in 'FloodFill()'. Please debug."); - - old_element = Feld[from_x][from_y]; - Feld[from_x][from_y] = fill_element; - - for (i = 0; i < 4; i++) - { - x = from_x + check[i][0]; - y = from_y + check[i][1]; - - if (IN_LEV_FIELD(x,y) && Feld[x][y] == old_element) - FloodFill(x, y, fill_element); - } - - safety--; + FloodFillLevel(from_x, from_y, fill_element, Feld, lev_fieldx, lev_fieldy); } /* values for DrawLevelText() modes */