1 #include <stdio.h>
2 #include <ctype.h>
3 #include <X11/Xlib.h>
4 #include <math.h>
5 #include <sys/socket.h>
6 #include <sys/time.h>
7 #include "struct.h"
8
9 #define TITLESIZE (7*X_PIECE_SIZE)
10
11 #ifndef FD_SET
12
13 #define MAXSELFD 64
14 typedef long fd_mask;
15 #define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask (power of 2!)*/
16 #define NFDSHIFT 5 /* Shift based on above */
17 #ifndef howmany
18 #define howmany(x, y) (((x)+((y)-1))/(y))
19 #endif howmany
20
21 #define NBBY 8 /* number of bits in a byte */
22
23
24 #define FD_SETSIZE 64
25
26
27 #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
28 #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
29 #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
30 #define FD_ZERO(p) bzero((char *)(p), sizeof(*(p)))
31
32 #endif
33
34 extern Display *dpy, *odpy, *currdpy;
35 extern Window win, owin, currwin;
36 extern GC gc, ogc, currgc;
37 extern int xsize, ysize, obstacle_color, scr, oscr;
38 extern int botmode;
39 extern Pixmap bamp, obamp, currbamp;
40 extern int xwin,ywin;
41 extern Pixmap mapw, mapb, omapw, omapb, wblock, bblock, owblock, obblock;
42 extern int oldw, oldb;
43 extern Cursor upc, downc, oupc, odownc;
44 extern Bool perfection;
45
46 int waitferkey();
47
readbitmaps()48 readbitmaps()
49 {
50 unsigned int x, y, xh, yh;
51 Pixmap curs, cmask, loader;
52 XColor fg,bg,garbage;
53
54 XSync(dpy, True);
55 XReadBitmapFile(dpy, win, WHITESTONE, &x, &y, &loader, &xh, &yh);
56 mapw = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
57 XCopyPlane(dpy, loader, mapw, gc, 0, 0, x, y, 0, 0, 1);
58 XFreePixmap(dpy, loader);
59 XReadBitmapFile(dpy, win, BLACKSTONE, &x, &y, &loader, &xh, &yh);
60 mapb = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
61 XCopyPlane(dpy, loader, mapb, gc, 0, 0, x, y, 0, 0, 1);
62 XFreePixmap(dpy, loader);
63 XReadBitmapFile(dpy, win, BLACKBLOCK, &x, &y, &loader, &xh, &yh);
64 bblock = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
65 XCopyPlane(dpy, loader, bblock, gc, 0, 0, x, y, 0, 0, 1);
66 XFreePixmap(dpy, loader);
67 XReadBitmapFile(dpy, win, WHITEBLOCK, &x, &y, &loader, &xh, &yh);
68 wblock = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
69 XCopyPlane(dpy, loader, wblock, gc, 0, 0, x, y, 0, 0, 1);
70 XFreePixmap(dpy, loader);
71
72 fg.pixel = WhitePixel(dpy,scr);
73 bg.pixel = BlackPixel(dpy,scr);
74 XQueryColor(dpy, DefaultColormap(dpy,scr), &fg);
75 XQueryColor(dpy, DefaultColormap(dpy,scr), &bg);
76 XAllocNamedColor(dpy, DefaultColormap(dpy,scr), "lime green", &fg, &garbage);
77 XAllocNamedColor(dpy, DefaultColormap(dpy,scr), "magenta", &bg, &garbage);
78
79 XReadBitmapFile(dpy, win, UPCURSOR, &x, &y, &curs, &xh, &yh);
80 XReadBitmapFile(dpy, win, UPMASK, &x, &y, &cmask, &xh, &yh);
81
82 upc = XCreatePixmapCursor(dpy, curs, cmask, &fg, &bg, xh, yh);
83 XFreePixmap(dpy,curs);
84 XFreePixmap(dpy,cmask);
85
86 XReadBitmapFile(dpy, win, DOWNCURSOR, &x, &y, &curs, &xh, &yh);
87 XReadBitmapFile(dpy, win, DOWNMASK, &x, &y, &cmask, &xh, &yh);
88 downc = XCreatePixmapCursor(dpy, curs, cmask, &fg, &bg, xh, yh);
89 XFreePixmap(dpy,curs);
90 XFreePixmap(dpy,cmask);
91 XDefineCursor(dpy,win,upc);
92 if (botmode) {
93 XSync(odpy, True);
94 fg.pixel = WhitePixel(odpy,oscr);
95 bg.pixel = BlackPixel(odpy,oscr);
96 XQueryColor(odpy, DefaultColormap(odpy,oscr), &fg);
97 XQueryColor(odpy, DefaultColormap(odpy,oscr), &bg);
98 XAllocNamedColor(odpy, DefaultColormap(odpy,oscr), "lime green", &fg, &garbage);
99 XAllocNamedColor(odpy, DefaultColormap(odpy,oscr), "magenta", &bg, &garbage);
100 XReadBitmapFile(odpy, owin, BLACKSTONE, &x, &y, &loader, &x, &y);
101 omapb = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
102 XCopyPlane(odpy, loader, omapb, ogc, 0, 0, x, y, 0, 0, 1);
103 XFreePixmap(odpy, loader);
104 XReadBitmapFile(odpy, owin, WHITESTONE, &x, &y, &loader, &x, &y);
105 omapw = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
106 XCopyPlane(odpy, loader, omapw, ogc, 0, 0, x, y, 0, 0, 1);
107 XFreePixmap(odpy, loader);
108 XReadBitmapFile(odpy, owin, BLACKBLOCK, &x, &y, &loader, &x, &y);
109 obblock = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
110 XCopyPlane(odpy, loader, obblock, ogc, 0, 0, x, y, 0, 0, 1);
111 XFreePixmap(odpy, loader);
112 XReadBitmapFile(odpy, owin, WHITEBLOCK, &x, &y, &loader, &x, &y);
113 owblock = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
114 XCopyPlane(odpy, loader, owblock, ogc, 0, 0, x, y, 0, 0, 1);
115 XFreePixmap(odpy, loader);
116
117 XReadBitmapFile(odpy, owin, UPCURSOR, &x, &y, &curs, &xh, &yh);
118 XReadBitmapFile(odpy, owin, UPMASK, &x, &y, &cmask, &x, &y);
119 oupc = XCreatePixmapCursor(odpy, curs, cmask, &fg, &bg, xh, yh);
120 XFreePixmap(odpy,curs);
121 XFreePixmap(odpy,cmask);
122 XReadBitmapFile(odpy, owin, DOWNCURSOR, &x, &y, &curs, &xh, &yh);
123 XReadBitmapFile(odpy, owin, DOWNMASK, &x, &y, &cmask, &x, &y);
124 odownc = XCreatePixmapCursor(odpy, curs, cmask, &fg, &bg, xh, yh);
125 XFreePixmap(odpy,curs);
126 XFreePixmap(odpy,cmask);
127 XDefineCursor(odpy,owin,oupc);
128 XFlush(odpy);
129 }
130 }
131
show_title()132 show_title()
133 {
134 Pixmap title, otitle, loader;
135 int ax, ay, x, y, hx, hy;
136
137 XReadBitmapFile(dpy, win, TITLE, &x, &y, &loader, &hx, &hy);
138 title = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
139 XCopyPlane(dpy, loader, title, gc, 0, 0, x, y, 0, 0, 1);
140 XFreePixmap(dpy, loader);
141 if (botmode)
142 XReadBitmapFile(odpy, owin, TITLE, &x, &y, &otitle, &hx, &hy);
143 ax = ((return_x_size()*X_PIECE_SIZE)-x) / 2;
144 ay = ax;
145 XCopyArea(dpy, title, win, gc, 0,0, x, y, ax, ay);
146 if (botmode)
147 XCopyArea(odpy, otitle, owin, ogc, 0,0, x, y, ax, ay);
148 show_scores(dpy, win, gc, oldw, oldb);
149 if (botmode)
150 show_scores(odpy, owin, ogc, oldw, oldb);
151 }
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169