- int graphic = IMG_BACKGROUND_ENVELOPE_1 + envelope_nr;
-#if 1
- Bitmap *src_bitmap = graphic_info[graphic].bitmap;
- int mask_mode = (src_bitmap != NULL ? BLIT_MASKED : BLIT_ON_BACKGROUND);
-#else
- boolean draw_masked = graphic_info[graphic].draw_masked;
- int mask_mode = (draw_masked ? BLIT_MASKED : BLIT_ON_BACKGROUND);
-#endif
- boolean ffwd_delay = (tape.playing && tape.fast_forward);
- boolean no_delay = (tape.warp_forward);
- unsigned long anim_delay = 0;
- int frame_delay_value = (ffwd_delay ? FfwdFrameDelay : GameFrameDelay);
- int anim_delay_value = (no_delay ? 0 : frame_delay_value);
- int font_nr = FONT_ENVELOPE_1 + envelope_nr;
- int font_width = getFontWidth(font_nr);
- int font_height = getFontHeight(font_nr);
- int max_xsize = level.envelope_xsize[envelope_nr];
- int max_ysize = level.envelope_ysize[envelope_nr];
- int xstart = (anim_mode & ANIM_VERTICAL ? max_xsize : 0);
- int ystart = (anim_mode & ANIM_HORIZONTAL ? max_ysize : 0);
- int xend = max_xsize;
- int yend = (anim_mode != ANIM_DEFAULT ? max_ysize : 0);
- int xstep = (xstart < xend ? 1 : 0);
- int ystep = (ystart < yend || xstep == 0 ? 1 : 0);
- int x, y;
+ int sx = SCREENX(x), sy = SCREENY(y);
+ int graphic;
+
+ if (!IN_LEV_FIELD(x, y) || !IN_SCR_FIELD(sx, sy))
+ return;
+
+ graphic = el_act_dir2img(element, GfxAction[x][y], GfxDir[x][y]);