VX+VIDEO_CONTROL_XPOS,VY+VIDEO_CONTROL_YPOS);
}
}
+ if (redraw_mask & REDRAW_DOOR_3)
+ XCopyArea(display, backbuffer, window, gc,
+ EX, EY, EXSIZE, EYSIZE,
+ EX, EY);
redraw_mask &= ~REDRAW_DOORS;
}
SY + (graphic / GFX_PER_LINE) * TILEY,
TILEX, TILEY, x, y);
}
+ else if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ {
+ graphic -= GFX_START_ROCKSMORE;
+ XCopyArea(display, pix[PIX_MORE], d, gc,
+ (graphic % MORE_PER_LINE) * TILEX,
+ (graphic / MORE_PER_LINE) * TILEY,
+ TILEX, TILEY, x, y);
+ }
else if (graphic >= GFX_START_ROCKSHEROES && graphic <= GFX_END_ROCKSHEROES)
{
graphic -= GFX_START_ROCKSHEROES;
src_x = SX + (graphic % GFX_PER_LINE) * TILEX;
src_y = SY + (graphic / GFX_PER_LINE) * TILEY;
}
+ else if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ {
+ src_pixmap = pix[PIX_MORE];
+ drawing_gc = clip_gc[PIX_MORE];
+ graphic -= GFX_START_ROCKSMORE;
+ src_x = (graphic % MORE_PER_LINE) * TILEX;
+ src_y = (graphic / MORE_PER_LINE) * TILEY;
+ }
else if (graphic >= GFX_START_ROCKSHEROES && graphic <= GFX_END_ROCKSHEROES)
{
src_pixmap = pix[PIX_HEROES];
MINI_GFX_STARTY + (graphic / MINI_GFX_PER_LINE) * MINI_TILEY,
MINI_TILEX, MINI_TILEY, x, y);
}
+ else if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ {
+ graphic -= GFX_START_ROCKSMORE;
+ XCopyArea(display, pix[PIX_MORE], d, gc,
+ MINI_MORE_STARTX + (graphic % MINI_MORE_PER_LINE) * MINI_TILEX,
+ MINI_MORE_STARTY + (graphic / MINI_MORE_PER_LINE) * MINI_TILEY,
+ MINI_TILEX, MINI_TILEY, x, y);
+ }
else if (graphic >= GFX_START_ROCKSFONT && graphic <= GFX_END_ROCKSFONT)
{
graphic -= GFX_START_ROCKSFONT;
src_x = SX + (graphic % GFX_PER_LINE) * TILEX + cx;
src_y = SY + (graphic / GFX_PER_LINE) * TILEY + cy;
}
+ else if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ {
+ src_pixmap = pix[PIX_MORE];
+ drawing_gc = clip_gc[PIX_MORE];
+ graphic -= GFX_START_ROCKSMORE;
+ src_x = (graphic % MORE_PER_LINE) * TILEX + cx;
+ src_y = (graphic / MORE_PER_LINE) * TILEY + cy;
+ }
else if (graphic >= GFX_START_ROCKSHEROES && graphic <= GFX_END_ROCKSHEROES)
{
src_pixmap = pix[PIX_HEROES];
}
else if ((element == EL_FELSBROCKEN || IS_GEM(element)) && !cut_mode)
{
- graphic += phase * (element == EL_FELSBROCKEN ? 2 : 1);
+ if (element != EL_SP_INFOTRON)
+ graphic += phase * (element == EL_FELSBROCKEN ? 2 : 1);
}
else if ((element == EL_SIEB_LEER || element == EL_SIEB2_LEER ||
element == EL_SIEB_VOLL || element == EL_SIEB2_VOLL) && SiebAktiv)
graphic = el2gfx(element);
- XCopyArea(display, pix[PIX_BACK], drawto, gc,
- MICRO_GFX_STARTX + (graphic % MICRO_GFX_PER_LINE) * MICRO_TILEX,
- MICRO_GFX_STARTY + (graphic / MICRO_GFX_PER_LINE) * MICRO_TILEY,
- MICRO_TILEX, MICRO_TILEY, xpos, ypos);
+ if (graphic >= GFX_START_ROCKSMORE && graphic <= GFX_END_ROCKSMORE)
+ {
+ graphic -= GFX_START_ROCKSMORE;
+ XCopyArea(display, pix[PIX_MORE], drawto, gc,
+ MICRO_MORE_STARTX + (graphic % MICRO_MORE_PER_LINE) *MICRO_TILEX,
+ MICRO_MORE_STARTY + (graphic / MICRO_MORE_PER_LINE) *MICRO_TILEY,
+ MICRO_TILEX, MICRO_TILEY, xpos, ypos);
+ }
+ else
+ XCopyArea(display, pix[PIX_BACK], drawto, gc,
+ MICRO_GFX_STARTX + (graphic % MICRO_GFX_PER_LINE) * MICRO_TILEX,
+ MICRO_GFX_STARTY + (graphic / MICRO_GFX_PER_LINE) * MICRO_TILEY,
+ MICRO_TILEX, MICRO_TILEY, xpos, ypos);
}
void DrawLevel()
int ReadPixel(Drawable d, int x, int y)
{
- static XImage *pixelimage;
+ XImage *pixel_image;
+ unsigned long pixel_value;
+
+ pixel_image = XGetImage(display, d, x, y, 1, 1, AllPlanes, ZPixmap);
+ pixel_value = XGetPixel(pixel_image, 0, 0);
+
+ XDestroyImage(pixel_image);
- pixelimage = XGetImage(display, d, x, y, 1, 1, AllPlanes, ZPixmap);
- return(XGetPixel(pixelimage, 0, 0));
+ return pixel_value;
}
int el2gfx(int element)
{
if (IS_CHAR(element))
return GFX_CHAR_START + (element - EL_CHAR_START);
+ else if (element >= EL_SP_START && element <= EL_SP_END)
+ return GFX_START_ROCKSMORE + (element - EL_SP_START);
else
return -1;
}