X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=728ff1d71319fa680751f165b45d7545fa7daed6;hb=92d7b07acc61a8fba6cb8f79c843e952bcb9dd92;hp=f39eb4e4ca4cdd4646ebb97b7dc07b583cb62fbe;hpb=3ff2e8a0b5c27b99a9920bdf5ed82bc41bf40181;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index f39eb4e4..728ff1d7 100644 --- a/src/editor.c +++ b/src/editor.c @@ -3999,13 +3999,13 @@ static int editor_el_chars[] = EL_CHAR('^'), EL_CHAR('_'), - EL_CHAR('©'), - EL_CHAR('Ä'), - EL_CHAR('Ö'), - EL_CHAR('Ü'), + EL_CHAR(CHAR_BYTE_COPYRIGHT), + EL_CHAR(CHAR_BYTE_UMLAUT_A), + EL_CHAR(CHAR_BYTE_UMLAUT_O), + EL_CHAR(CHAR_BYTE_UMLAUT_U), - EL_CHAR('°'), - EL_CHAR('®'), + EL_CHAR(CHAR_BYTE_DEGREE), + EL_CHAR(CHAR_BYTE_REGISTERED), EL_CHAR(FONT_ASCII_CURSOR), EL_CHAR(FONT_ASCII_BUTTON), @@ -4109,13 +4109,13 @@ 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(CHAR_BYTE_COPYRIGHT), + EL_STEEL_CHAR(CHAR_BYTE_UMLAUT_A), + EL_STEEL_CHAR(CHAR_BYTE_UMLAUT_O), + EL_STEEL_CHAR(CHAR_BYTE_UMLAUT_U), - EL_STEEL_CHAR('°'), - EL_STEEL_CHAR('®'), + EL_STEEL_CHAR(CHAR_BYTE_DEGREE), + EL_STEEL_CHAR(CHAR_BYTE_REGISTERED), EL_STEEL_CHAR(FONT_ASCII_CURSOR), EL_STEEL_CHAR(FONT_ASCII_BUTTON), @@ -5786,9 +5786,11 @@ static void CreateSelectboxGadgets() GDI_Y, y, GDI_TYPE, GD_TYPE_SELECTBOX, GDI_SELECTBOX_OPTIONS, selectbox_info[i].options, + GDI_SELECTBOX_CHAR_UNSELECTABLE, '[', GDI_TEXT_SIZE, selectbox_info[i].size, GDI_TEXT_FONT, FONT_INPUT_1, GDI_TEXT_FONT_ACTIVE, FONT_INPUT_1_ACTIVE, + GDI_TEXT_FONT_UNSELECTABLE, FONT_TEXT_1, GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x, gd_y, GDI_DESIGN_PRESSED, gd_bitmap, gd_x, gd_y, GDI_BORDER_SIZE, ED_BORDER_SIZE, ED_BORDER_SIZE, @@ -7366,11 +7368,6 @@ static boolean playfield_area_changed = FALSE; void DrawLevelEd() { - int old_sx = SX; - int old_sy = SY; - int old_sxsize = SXSIZE; - int old_sysize = SYSIZE; - StopAnimation(); CloseDoor(DOOR_CLOSE_ALL); @@ -7383,13 +7380,7 @@ void DrawLevelEd() /* needed if different viewport properties defined for editor */ ChangeViewportPropertiesIfNeeded(); - if (old_sx != SX || - old_sy != SY || - old_sxsize != SXSIZE || - old_sysize != SYSIZE) - playfield_area_changed = TRUE; - else - playfield_area_changed = FALSE; + playfield_area_changed = DrawingAreaChanged(); OpenDoor(DOOR_OPEN_1 | DOOR_OPEN_2 | DOOR_NO_DELAY); @@ -7429,7 +7420,7 @@ void DrawLevelEd() BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, DOOR_GFX_PAGEX8, 236, EXSIZE, EYSIZE, EX, EY); - redraw_mask |= REDRAW_ALL; + // redraw_mask |= REDRAW_ALL; FreeLevelEditorGadgets(); CreateLevelEditorGadgets(); @@ -10072,7 +10063,10 @@ static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y, else if (element >= NUM_FILE_ELEMENTS) element_mapped = EL_UNKNOWN; - printf("%c%03d", (mode == CB_DUMP_BRUSH ? '`' : '¸'), element_mapped); + // dump brush as level sketch text for the R'n'D forum: + // - large tiles: `xxx (0x60 ASCII) + // - small tiles: ¸xxx (0xb8 ISO-8859-1, 0xc2b8 UTF-8) + printf("%s%03d", (mode == CB_DUMP_BRUSH ? "`" : "¸"), element_mapped); } printf("\n"); @@ -10231,11 +10225,11 @@ static int DrawLevelText(int sx, int sy, char letter, int mode) /* map lower case letters to upper case and convert special characters */ if (letter >= 'a' && letter <= 'z') letter_element = EL_CHAR_ASCII0 + letter + (int)('A' - 'a'); - else if (letter == 'ä' || letter == 'Ä') + else if (letter == CHAR_BYTE_UMLAUT_a || letter == CHAR_BYTE_UMLAUT_A) letter_element = EL_CHAR_AUMLAUT; - else if (letter == 'ö' || letter == 'Ö') + else if (letter == CHAR_BYTE_UMLAUT_o || letter == CHAR_BYTE_UMLAUT_O) letter_element = EL_CHAR_OUMLAUT; - else if (letter == 'ü' || letter == 'Ü') + else if (letter == CHAR_BYTE_UMLAUT_u || letter == CHAR_BYTE_UMLAUT_U) letter_element = EL_CHAR_UUMLAUT; else if (letter == '^') letter_element = EL_CHAR_COPYRIGHT; @@ -10280,6 +10274,10 @@ static int DrawLevelText(int sx, int sy, char letter, int mode) case TEXT_WRITECHAR: if (letter_element >= EL_CHAR_START && letter_element <= EL_CHAR_END) { + if (new_element1 >= EL_STEEL_CHAR_START && + new_element1 <= EL_STEEL_CHAR_END) + letter_element = letter_element - EL_CHAR_START + EL_STEEL_CHAR_START; + delete_buffer[sx - start_sx] = Feld[lx][ly]; Feld[lx][ly] = letter_element; @@ -11380,7 +11378,7 @@ static void HandleControlButtons(struct GadgetInfo *gi) /* needed before playing if editor playfield area has different size */ ClearRectangle(drawto, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE); - redraw_mask = REDRAW_ALL; + // redraw_mask = REDRAW_ALL; level_editor_test_game = TRUE; @@ -11869,6 +11867,10 @@ void RequestExitLevelEditor(boolean ask_if_level_has_changed, } else { - OpenDoor(DOOR_OPEN_1 | DOOR_COPY_BACK); + if (!global.use_envelope_request) + { + CloseDoor(DOOR_CLOSE_1); + OpenDoor(DOOR_OPEN_1 | DOOR_COPY_BACK); + } } }