SF patch 536615: travel cache

This is derived from the proposed patch and feedback to it.  This applies
the last-position cache behavior without an option, making the behavior
more like it is for interfaces with a mouse, where holding the mouse still
acts the same way as the travel cache.  The code is not #ifdef'd either.
This commit is contained in:
cohrs
2003-06-30 04:00:14 +00:00
parent cec8e1ee31
commit b633b91875
5 changed files with 14 additions and 5 deletions

View File

@@ -96,6 +96,7 @@ when jousting a pudding into a polymorh trap, it was possible to end up
don't allow polymorphed player to web over the stairs
geographical shopkeeper updates
stethoscope use should be free the first time it's use per player move
travel command caches last position to make non-mouse less painful
Platform- and/or Interface-Specific Fixes

View File

@@ -176,7 +176,8 @@ struct instance_flags {
int purge_monsters; /* # of dead monsters still on fmon list */
int *opt_booldup; /* for duplication of boolean opts in config file */
int *opt_compdup; /* for duplication of compound opts in config file */
uchar bouldersym; /* symbol for boulder display */
uchar bouldersym; /* symbol for boulder display */
coord travelcc; /* coordinates for travel_cache */
#ifdef WIZARD
boolean sanity_check; /* run sanity checks */
boolean mon_polycontrol; /* debug: control monster polymorphs */

View File

@@ -2413,15 +2413,20 @@ dotravel()
if (!flags.travelcmd) return 0;
cmd[1]=0;
cc.x = u.ux;
cc.y = u.uy;
cc.x = iflags.travelcc.x;
cc.y = iflags.travelcc.y;
if (cc.x == -1 && cc.y == -1) {
/* No cached destination, start attempt from current position */
cc.x = u.ux;
cc.y = u.uy;
}
pline("Where do you want to travel to?");
if (getpos(&cc, TRUE, "the desired destination") < 0) {
/* user pressed ESC */
return 0;
}
u.tx = cc.x;
u.ty = cc.y;
iflags.travelcc.x = u.tx = cc.x;
iflags.travelcc.y = u.ty = cc.y;
cmd[0] = CMD_TRAVEL;
readchar_queue = cmd;
return 0;

View File

@@ -768,6 +768,7 @@ boolean guess;
nomul(0);
/* reset run so domove run checks work */
flags.run = 8;
iflags.travelcc.x = iflags.travelcc.y = -1;
}
return TRUE;
}

View File

@@ -516,6 +516,7 @@ initoptions()
for (i = 0; i < WARNCOUNT; i++)
warnsyms[i] = def_warnsyms[i].sym;
iflags.bouldersym = 0;
iflags.travelcc.x = iflags.travelcc.y = -1;
flags.warnlevel = 1;
flags.warntype = 0L;