X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=2fab93d6a7d73b5d5657f22b5b09f32378db25b8;hb=93926b59ca45db5bb31f63e08d7ee729745e0306;hp=d9567731dc917532aaa6e6902aac7171e10ee579;hpb=58514a5b4392fa9501fced41921157633927ea94;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index d9567731..2fab93d6 100644 --- a/src/editor.c +++ b/src/editor.c @@ -4988,10 +4988,36 @@ static void DrawDrawingArea(int id) static void ScrollMiniLevel(int from_x, int from_y, int scroll) { - int x,y; +#if 1 + static Bitmap *tmp_backbuffer = NULL; +#endif + int x, y; int dx = (scroll == ED_SCROLL_LEFT ? -1 : scroll == ED_SCROLL_RIGHT ? 1 : 0); int dy = (scroll == ED_SCROLL_UP ? -1 : scroll == ED_SCROLL_DOWN ? 1 : 0); +#if 1 + if (tmp_backbuffer == NULL) + tmp_backbuffer = CreateBitmap(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH); + + /* needed when blitting directly to same bitmap -- should not be needed with + recent SDL libraries, but apparently does not work in 1.2.11 directly */ + BlitBitmap(drawto, tmp_backbuffer, + SX + (dx == -1 ? MINI_TILEX : 0), + SY + (dy == -1 ? MINI_TILEY : 0), + (ed_fieldx * MINI_TILEX) - (dx != 0 ? MINI_TILEX : 0), + (ed_fieldy * MINI_TILEY) - (dy != 0 ? MINI_TILEY : 0), + SX + (dx == +1 ? MINI_TILEX : 0), + SY + (dy == +1 ? MINI_TILEY : 0)); + BlitBitmap(tmp_backbuffer, drawto, + SX + (dx == +1 ? MINI_TILEX : 0), + SY + (dy == +1 ? MINI_TILEY : 0), + (ed_fieldx * MINI_TILEX) - (dx != 0 ? MINI_TILEX : 0), + (ed_fieldy * MINI_TILEY) - (dy != 0 ? MINI_TILEY : 0), + SX + (dx == +1 ? MINI_TILEX : 0), + SY + (dy == +1 ? MINI_TILEY : 0)); + +#else + BlitBitmap(drawto, drawto, SX + (dx == -1 ? MINI_TILEX : 0), SY + (dy == -1 ? MINI_TILEY : 0), @@ -4999,6 +5025,10 @@ static void ScrollMiniLevel(int from_x, int from_y, int scroll) (ed_fieldy * MINI_TILEY) - (dy != 0 ? MINI_TILEY : 0), SX + (dx == +1 ? MINI_TILEX : 0), SY + (dy == +1 ? MINI_TILEY : 0)); +#endif + + printf("::: ScrollMiniLevel: A.1\n"); + if (dx) { x = (dx == 1 ? 0 : ed_fieldx - 1); @@ -5012,6 +5042,8 @@ static void ScrollMiniLevel(int from_x, int from_y, int scroll) DrawMiniElementOrWall(x, y, from_x, from_y); } + printf("::: ScrollMiniLevel: Z\n"); + redraw_mask |= REDRAW_FIELD; BackToFront(); } @@ -7066,6 +7098,12 @@ void DrawLevelEd() BlitBitmap(drawto, bitmap_db_door, DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1); +#if 1 + /* draw new control window (with border) to window */ + redraw_mask |= REDRAW_ALL; + BackToFront(); +#endif + OpenDoor(DOOR_OPEN_1); } @@ -7318,7 +7356,7 @@ static void DrawDrawingWindow() stick_element_properties_window = FALSE; SetMainBackgroundImage(IMG_UNDEFINED); - ClearWindow(); + ClearField(); UnmapLevelEditorWindowGadgets(); UnmapLevelEditorToolboxCustomGadgets(); @@ -7341,7 +7379,7 @@ static void DrawLevelInfoWindow() stick_element_properties_window = FALSE; SetMainBackgroundImage(IMG_BACKGROUND_EDITOR); - ClearWindow(); + ClearField(); UnmapLevelEditorWindowGadgets(); #if 0 @@ -8311,7 +8349,7 @@ static void DrawPropertiesWindow() MapLevelEditorToolboxCustomGadgets(); SetMainBackgroundImage(IMG_BACKGROUND_EDITOR); - ClearWindow(); + ClearField(); #if 0 DrawTextSCentered(ED_SETTINGS1_YPOS, FONT_TITLE_1, "Element Settings"); @@ -10294,7 +10332,10 @@ static void HandleCounterButtons(struct GadgetInfo *gi) if (counter_id == ED_COUNTER_ID_SELECT_LEVEL) { LoadLevel(level_nr); + LoadScore(level_nr); + TapeErase(); + ResetUndoBuffer(); DrawEditModeWindow();