1 #include <stdio.h>
2 #include <X11/Xlib.h>
3 #include <math.h>
4 #include "struct.h"
5 
6 extern Display *dpy, *odpy, *currdpy;
7 extern Window win, owin, currwin;
8 extern GC gc, ogc, currgc;
9 extern int xsize, ysize, obstacle_color;
10 extern int botmode;
11 extern Pixmap mapw, mapb, omapw, omapb, wblock, bblock, owblock, obblock;
12 extern Bool flumping, wflump, fflump, jflump;
13 
blat(sx,sy,dx,dy,cmaps,cdpy,cscr,cgc,cwin,cmap)14 blat(sx, sy, dx, dy, cmaps, cdpy, cscr, cgc, cwin, cmap)
15 int sx, sy, dx, dy;
16 Pixmap cmaps;
17 Display *cdpy;
18 int cscr;
19 GC cgc;
20 Window cwin;
21 Pixmap cmap;
22 {
23 	GC bgc;
24 
25 	if (!wflump)
26 		return(0);
27 	zot(dx, dy, cmaps, cdpy, cscr, cgc, cwin, cmap);
28 }
29 
zot(dox,doy,cmaps,cdpy,cscr,cgc,cwin,cmap)30 zot(dox, doy, cmaps, cdpy, cscr, cgc, cwin, cmap)
31 int dox, doy;
32 Pixmap cmaps;
33 Display *cdpy;
34 int cscr;
35 GC cgc;
36 Window cwin;
37 Pixmap cmap;
38 {
39    int x1, x2, y1, y2, dx, dy, wid, hei;
40 
41    dx = dox * X_PIECE_SIZE;
42    dy = doy * Y_PIECE_SIZE;
43    x1 = dx + X_PIECE_SIZE / 2;
44    x2 = x1+1;
45    y1 = dy + Y_PIECE_SIZE / 2;
46    y2 = x1+1;
47    wid = x2 - x1;
48    hei = y2 - y1;
49    while (x1 > dx || y1 > dy || x2 < (dx+X_PIECE_SIZE-1) || y2 < (dy+Y_PIECE_SIZE-1)) {
50 	XCopyArea(cdpy, cmaps, cmap, cgc, (x1-dx), (y1-dy), wid, hei, x1, y1);
51 	if (x1 > dx) x1--;
52 	if (y1 > dy) y1--;
53 	if (x2 < (dx+X_PIECE_SIZE-1)) x2++;
54 	if (y2 < (dy+Y_PIECE_SIZE-1)) y2++;
55 	wid = x2 - x1;
56 	hei = y2 - y1;
57 	if (fflump)
58 	  msec_wait(2000);
59 	redraw_win(cdpy, cwin, cmap, cgc);
60    }
61 }
62 
63 
64 
65 
66 
67 
68 
69 
70