(char *) NULL, /* *release_name; */
"refresh_pacman", /* *refresh_name; */
"change_pacman", /* *change_name; */
- (char *) NULL, /* *unused_name; */
+ "free_pacman", /* *free_name; */
&pacman_opts, /* *msopts */
10000, 4, 1, 0, 64, 1.0, "", "Shows Pacman(tm)", 0, NULL
};
static void drawlevel (ModeInfo * mi);
-static void
+ENTRYPOINT void
free_pacman (ModeInfo * mi)
{
Display * display = MI_DISPLAY (mi);
pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
unsigned int ghost;
- MI_CLEARWINDOW (mi);
+ XClearWindow (MI_DISPLAY(mi), MI_WINDOW(mi));
drawlevel (mi);
pp->gamestate = GHOST_DANGER;
int dir, mouth;
#endif
- MI_INIT (mi, pacman_games, free_pacman);
+ MI_INIT (mi, pacman_games);
pp = &pacman_games[MI_SCREEN (mi)];
pp->width = (unsigned short) MI_WIDTH (mi);
if (size == 0 ||
MINGRIDSIZE * size > (int) pp->width ||
MINGRIDSIZE * size > (int) pp->height) {
-
- pp->ys = pp->xs = MAX (MIN (pp->width / LEVWIDTH,
- pp->height / LEVHEIGHT), 1);
+ double scale = MIN (pp->width / LEVWIDTH, pp->height / LEVHEIGHT);
+
+ if (pp->width > pp->height * 5 || /* weird window aspect ratio */
+ pp->height > pp->width * 5)
+ scale = 0.8 * (pp->width / pp->height
+ ? pp->width / (double) pp->height
+ : pp->height / (double) pp->width);
+ pp->ys = MAX (scale, 1);
+ pp->xs = pp->ys;
}
else {
if (size < -MINSIZE)
pp->xs = pp->ys;
}
+
pp->wallwidth = (unsigned int) (pp->xs + pp->ys) >> 4;
if (pp->wallwidth < 1)
pp->wallwidth = 1;
pp->pacman.mouthstage = MAXMOUTH - 1;
- MI_CLEARWINDOW (mi);
+ XClearWindow (MI_DISPLAY(mi), MI_WINDOW(mi));
repopulate (mi);
}
pacman_tick (mi);
}
+#ifndef STANDALONE
/* Refresh current level. */
ENTRYPOINT void
refresh_pacman (ModeInfo * mi)
drawlevel (mi);
pacman_tick (mi);
}
+#endif
ENTRYPOINT void
reshape_pacman(ModeInfo * mi, int width, int height)
pp->height = height;
pp->xb = (pp->width - pp->ncols * pp->xs) >> 1;
pp->yb = (pp->height - pp->nrows * pp->ys) >> 1;
- MI_CLEARWINDOW (mi);
+ XClearWindow (MI_DISPLAY(mi), MI_WINDOW(mi));
/* repopulate (mi); */
drawlevel (mi);
}
ENTRYPOINT void
change_pacman (ModeInfo * mi)
{
- MI_CLEARWINDOW (mi);
+ XClearWindow (MI_DISPLAY(mi), MI_WINDOW(mi));
repopulate (mi);
}
#endif /* !STANDALONE */