X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Feditor.c;h=8f453e2c3f7d85605a5c3261f8fdca207adf0d15;hp=5eed006605c50a65ef0d33629739fe6e5018f797;hb=efda7f7ff333c8aa84af7966e11e2ea070c6aea9;hpb=fe21ed78a5927518daeb7307488415416ef98b6a diff --git a/src/editor.c b/src/editor.c index 5eed0066..8f453e2c 100644 --- a/src/editor.c +++ b/src/editor.c @@ -11996,27 +11996,28 @@ static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y, char text[MAX_CB_TEXT_SIZE + 1] = ""; int width = (draw_with_brush ? brush_width : lev_fieldx); int height = (draw_with_brush ? brush_height : lev_fieldy); + char *format = "%s%03d"; + + for (y = 0; y < height; y++) + for (x = 0; x < width; x++) + if ((draw_with_brush ? brush_buffer[x][y] : Feld[x][y]) > 999) + format = "%s%04d"; for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { int element = (draw_with_brush ? brush_buffer[x][y] : Feld[x][y]); - int element_mapped = element; char *prefix = (mode == CB_DUMP_BRUSH || mode == CB_BRUSH_TO_CLIPBOARD ? "`" : "¸"); - if (IS_CUSTOM_ELEMENT(element)) - element_mapped = EL_CUSTOM_START; - else if (IS_GROUP_ELEMENT(element)) - element_mapped = EL_GROUP_START; - else if (element >= NUM_FILE_ELEMENTS) - element_mapped = EL_UNKNOWN; + if (element >= NUM_FILE_ELEMENTS) + element = EL_UNKNOWN; // copy brush to level sketch text buffer for the R'n'D forum: - // - large tiles: `xxx (0x60 ASCII) - // - small tiles: ¸xxx (0xb8 ISO-8859-1, 0xc2b8 UTF-8) - snprintf(part, MAX_CB_PART_SIZE + 1, "%s%03d", prefix, element_mapped); + // - large tiles: `xxx or `xxxx (0x60 ASCII) + // - small tiles: ¸xxx or ¸xxxx (0xb8 ISO-8859-1, 0xc2b8 UTF-8) + snprintf(part, MAX_CB_PART_SIZE + 1, format, prefix, element); strcat(text, part); } @@ -12098,7 +12099,7 @@ static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y, } } - // check if prefix found and followed by three numbers + // check if prefix found and followed by (at least) three digits if (prefix_found && strlen(ptr) >= 3 && ptr[0] >= '0' && ptr[0] <= '9' && @@ -12111,6 +12112,13 @@ static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y, ptr += 3; + // level sketch element number might consist of four digits + if (ptr[0] >= '0' && ptr[0] <= '9') + { + element = element * 10 + (ptr[0] - '0'); + ptr++; + } + if (element >= NUM_FILE_ELEMENTS) element = EL_UNKNOWN; @@ -13774,6 +13782,10 @@ static void HandleControlButtons(struct GadgetInfo *gi) button == 2 ? ed_tilesize_default : button == 3 ? ed_tilesize / 2 : ed_tilesize); + // when using touch device, cycle through all zoom tilesizes + if (runtime.uses_touch_device && ed_tilesize > TILESIZE) + ed_tilesize = MICRO_TILESIZE; + // limit zoom level by upper and lower bound ed_tilesize = MIN(MAX(MICRO_TILESIZE, ed_tilesize), TILESIZE); @@ -14073,7 +14085,7 @@ void HandleLevelEditorKeyInput(Key key) else if (key == KSYM_Escape) DrawLevelText(0, 0, 0, TEXT_END); } - else if (button_status == MB_RELEASED) + else { int id = GADGET_ID_NONE; int new_element_shift = element_shift;