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