mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Add a new midend function to reset the tile size to the puzzle's
default (but still counting the <puzzle>_TILESIZE user preference environment variables, where available). [originally from svn r9820]
This commit is contained in:
16
devel.but
16
devel.but
@ -2812,6 +2812,22 @@ that \e{and} set the \c{user_size} flag, though!
|
||||
The midend relies on the frontend calling \cw{midend_new_game()}
|
||||
(\k{midend-new-game}) before calling \cw{midend_size()}.
|
||||
|
||||
\H{midend-reset-tilesize} \cw{midend_reset_tilesize()}
|
||||
|
||||
\c void midend_reset_tilesize(midend *me);
|
||||
|
||||
This function resets the midend's preferred tile size to that of the
|
||||
standard puzzle.
|
||||
|
||||
As discussed in \k{midend-size}, puzzle resizes are typically
|
||||
'sticky', in that once the user has dragged the puzzle to a different
|
||||
window size, the resulting tile size will be remembered and used when
|
||||
the puzzle configuration changes. If you \e{don't} want that, e.g. if
|
||||
you want to provide a command to explicitly reset the puzzle size back
|
||||
to its default, then you can call this just before calling
|
||||
\cw{midend_size()} (which, in turn, you would probably call with
|
||||
\c{user_size} set to \cw{FALSE}).
|
||||
|
||||
\H{midend-new-game} \cw{midend_new_game()}
|
||||
|
||||
\c void midend_new_game(midend *me);
|
||||
|
43
midend.c
43
midend.c
@ -94,6 +94,29 @@ struct midend {
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
void midend_reset_tilesize(midend *me)
|
||||
{
|
||||
me->preferred_tilesize = me->ourgame->preferred_tilesize;
|
||||
{
|
||||
/*
|
||||
* Allow an environment-based override for the default tile
|
||||
* size by defining a variable along the lines of
|
||||
* `NET_TILESIZE=15'.
|
||||
*/
|
||||
|
||||
char buf[80], *e;
|
||||
int j, k, ts;
|
||||
|
||||
sprintf(buf, "%s_TILESIZE", me->ourgame->name);
|
||||
for (j = k = 0; buf[j]; j++)
|
||||
if (!isspace((unsigned char)buf[j]))
|
||||
buf[k++] = toupper((unsigned char)buf[j]);
|
||||
buf[k] = '\0';
|
||||
if ((e = getenv(buf)) != NULL && sscanf(e, "%d", &ts) == 1 && ts > 0)
|
||||
me->preferred_tilesize = ts;
|
||||
}
|
||||
}
|
||||
|
||||
midend *midend_new(frontend *fe, const game *ourgame,
|
||||
const drawing_api *drapi, void *drhandle)
|
||||
{
|
||||
@ -153,25 +176,7 @@ midend *midend_new(frontend *fe, const game *ourgame,
|
||||
else
|
||||
me->drawing = NULL;
|
||||
|
||||
me->preferred_tilesize = ourgame->preferred_tilesize;
|
||||
{
|
||||
/*
|
||||
* Allow an environment-based override for the default tile
|
||||
* size by defining a variable along the lines of
|
||||
* `NET_TILESIZE=15'.
|
||||
*/
|
||||
|
||||
char buf[80], *e;
|
||||
int j, k, ts;
|
||||
|
||||
sprintf(buf, "%s_TILESIZE", me->ourgame->name);
|
||||
for (j = k = 0; buf[j]; j++)
|
||||
if (!isspace((unsigned char)buf[j]))
|
||||
buf[k++] = toupper((unsigned char)buf[j]);
|
||||
buf[k] = '\0';
|
||||
if ((e = getenv(buf)) != NULL && sscanf(e, "%d", &ts) == 1 && ts > 0)
|
||||
me->preferred_tilesize = ts;
|
||||
}
|
||||
midend_reset_tilesize(me);
|
||||
|
||||
sfree(randseed);
|
||||
|
||||
|
@ -232,6 +232,7 @@ const game *midend_which_game(midend *me);
|
||||
void midend_set_params(midend *me, game_params *params);
|
||||
game_params *midend_get_params(midend *me);
|
||||
void midend_size(midend *me, int *x, int *y, int user_size);
|
||||
void midend_reset_tilesize(midend *me);
|
||||
void midend_new_game(midend *me);
|
||||
void midend_restart_game(midend *me);
|
||||
void midend_stop_anim(midend *me);
|
||||
|
Reference in New Issue
Block a user