height = graphic_info[graphic].height * size / TILESIZE;
if (draw_masked)
- {
- SetClipOrigin(src_bitmap, src_bitmap->stored_clip_gc,
- dst_x - src_x, dst_y - src_y);
BlitBitmapMasked(src_bitmap, drawto, src_x, src_y, width, height,
dst_x, dst_y);
- }
else
- {
BlitBitmap(src_bitmap, drawto, src_x, src_y, width, height,
dst_x, dst_y);
- }
}
}
else if (type == TYPE_STRING)
void UpdateAndDisplayGameControlValues()
{
- if (tape.warp_forward)
+ if (tape.deactivate_display)
return;
UpdateGameControlValues();
FadeIn(REDRAW_FIELD);
+#if 1
+ // full screen redraw is required at this point in the following cases:
+ // - special editor door undrawn when game was started from level editor
+ // - drawing area (playfield) was changed and has to be removed completely
+ redraw_mask = REDRAW_ALL;
+ BackToFront();
+#endif
+
if (!game.restart_level)
{
/* copy default game door content to main double buffer */
/* scroll in two steps of half tile size to make things smoother */
BlitBitmap(drawto_field, window, fx, fy, SXSIZE, SYSIZE, SX, SY);
- FlushDisplay();
Delay(wait_delay_value);
/* scroll second step to align at full tile size */
DrawVideoDisplay(VIDEO_STATE_TIME_ON, TapeTime);
}
+ if (tape.recording || tape.playing)
+ DrawVideoDisplay(VIDEO_STATE_FRAME_ON, FrameCounter);
+
UpdateAndDisplayGameControlValues();
}
static struct
{
int graphic;
- struct Rect *pos;
+ struct XY *pos;
int gadget_id;
char *infotext;
} gamebutton_info[NUM_GAME_BUTTONS] =
for (i = 0; i < NUM_GAME_BUTTONS; i++)
{
struct GraphicInfo *gfx = &graphic_info[gamebutton_info[i].graphic];
- struct Rect *pos = gamebutton_info[i].pos;
+ struct XY *pos = gamebutton_info[i].pos;
struct GadgetInfo *gi;
int button_type;
boolean checked;