if (setup.soft_scrolling)
{
- fx += (ScreenMovDir & (MV_LEFT|MV_RIGHT) ? ScreenGfxPos : 0);
- fy += (ScreenMovDir & (MV_UP|MV_DOWN) ? ScreenGfxPos : 0);
+ fx += (ScreenMovDir & (MV_LEFT | MV_RIGHT) ? ScreenGfxPos : 0);
+ fy += (ScreenMovDir & (MV_UP | MV_DOWN) ? ScreenGfxPos : 0);
}
- XCopyArea(display,buffer,window,gc,
- fx,fy, SXSIZE,SYSIZE,
- SX,SY);
+ if (setup.soft_scrolling ||
+ ABS(ScreenGfxPos) + ScrollStepSize == TILEX ||
+ ABS(ScreenGfxPos) == ScrollStepSize ||
+ redraw_tiles > REDRAWTILES_THRESHOLD)
+ XCopyArea(display, buffer, window, gc, fx, fy, SXSIZE, SYSIZE, SX, SY);
}
redraw_mask &= ~REDRAW_MAIN;
}
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;
}
src_x = (graphic % HEROES_PER_LINE) * TILEX + cx;
src_y = (graphic / HEROES_PER_LINE) * TILEY + cy;
}
+ else /* big font graphics currently not allowed (and not needed) */
+ return;
dest_x = FX + x * TILEX + dx;
dest_y = FY + y * TILEY + dy;
unsigned int MoveDoor(unsigned int door_state)
{
- static unsigned int door1 = DOOR_OPEN_1;
- static unsigned int door2 = DOOR_CLOSE_2;
- static long door_delay = 0;
+ static int door1 = DOOR_OPEN_1;
+ static int door2 = DOOR_CLOSE_2;
+ static unsigned long door_delay = 0;
int x, start, stepsize = 2;
- long door_delay_value = stepsize * 5;
+ unsigned long door_delay_value = stepsize * 5;
if (door_state == DOOR_GET_STATE)
return(door1 | door2);
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)