8 #define MJDIR "/sys/games/lib/mahjongg/"
10 char *Border = MJDIR "images/border.bit";
11 char *Mask = MJDIR "images/mask.bit";
12 char *Gameover = MJDIR "images/gameover.bit";
14 char *deftileset= MJDIR "tilesets/default.tileset";
15 char *defbackgr = MJDIR "backgrounds/default.bit";
16 char *deflayout = MJDIR "layouts/default.layout";
39 fprint(2, "usage: %s [-cf] [-b bg] [-l layout] [-t tileset]\n", argv0);
44 eallocimage(Rectangle r, int repl, uint chan, uint color)
48 tmp = allocimage(display, r, chan, repl, color);
50 sysfatal("cannot allocate buffer image: %r");
60 fd = open(path, OREAD);
62 fprint(2, "cannot open image file %s: %r\n", path);
65 img = readimage(display, fd, 0);
67 sysfatal("cannot load image: %r");
76 Rectangle one = Rect(0, 0, 1, 1);
78 selected = eallocimage(one, 1, RGBA32, setalpha(DPalebluegreen, 0x5f));
79 litbrdr = eallocimage(one, 1, RGBA32, DGreen);
80 img = eallocimage(Rect(0, 0, Sizex, Sizey), 0,
81 defchan? defchan: screen->chan, DBlack);
82 textcol = eallocimage(one, 1, RGBA32, DWhite);
84 background = eloadfile(defbackgr);
85 replclipr(background, 1, img->r);
87 mask = eloadfile(Mask);
88 gameover = eloadfile(Gameover);
89 tileset = eloadfile(deftileset);
96 if(new && getwindow(display, Refnone) < 0)
97 sysfatal("can't reattach to window");
102 main(int argc, char **argv)
107 Point origin = Pt(Bord, Bord);
111 defbackgr = EARGF(usage());
120 deflayout = EARGF(usage());
123 deftileset = EARGF(usage());
132 if(! parse(deflayout)) {
133 fprint(2, "usage: %s [levelfile]\n", argv[0]);
137 if(initdraw(nil, nil, "mahjongg") < 0)
138 sysfatal("initdraw failed: %r");
139 einit(Emouse|Ekeyboard);
143 /* resize to the size of the current level */
149 if(level.remaining == 0 && !level.done)
157 if(!clickety && level.remaining > 0) {
159 clicked(subpt(m.xy, addpt(screen->r.min,
165 light(subpt(m.xy, addpt(screen->r.min,
169 /* nothing here for the moment */
172 switch(emenuhit(3, &m, &menu)) {