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:
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
13
src/cmd.c
13
src/cmd.c
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user