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
|
don't allow polymorphed player to web over the stairs
|
||||||
geographical shopkeeper updates
|
geographical shopkeeper updates
|
||||||
stethoscope use should be free the first time it's use per player move
|
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
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
+2
-1
@@ -176,7 +176,8 @@ struct instance_flags {
|
|||||||
int purge_monsters; /* # of dead monsters still on fmon list */
|
int purge_monsters; /* # of dead monsters still on fmon list */
|
||||||
int *opt_booldup; /* for duplication of boolean opts in config file */
|
int *opt_booldup; /* for duplication of boolean opts in config file */
|
||||||
int *opt_compdup; /* for duplication of compound 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
|
#ifdef WIZARD
|
||||||
boolean sanity_check; /* run sanity checks */
|
boolean sanity_check; /* run sanity checks */
|
||||||
boolean mon_polycontrol; /* debug: control monster polymorphs */
|
boolean mon_polycontrol; /* debug: control monster polymorphs */
|
||||||
|
|||||||
@@ -2413,15 +2413,20 @@ dotravel()
|
|||||||
|
|
||||||
if (!flags.travelcmd) return 0;
|
if (!flags.travelcmd) return 0;
|
||||||
cmd[1]=0;
|
cmd[1]=0;
|
||||||
cc.x = u.ux;
|
cc.x = iflags.travelcc.x;
|
||||||
cc.y = u.uy;
|
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?");
|
pline("Where do you want to travel to?");
|
||||||
if (getpos(&cc, TRUE, "the desired destination") < 0) {
|
if (getpos(&cc, TRUE, "the desired destination") < 0) {
|
||||||
/* user pressed ESC */
|
/* user pressed ESC */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
u.tx = cc.x;
|
iflags.travelcc.x = u.tx = cc.x;
|
||||||
u.ty = cc.y;
|
iflags.travelcc.y = u.ty = cc.y;
|
||||||
cmd[0] = CMD_TRAVEL;
|
cmd[0] = CMD_TRAVEL;
|
||||||
readchar_queue = cmd;
|
readchar_queue = cmd;
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -768,6 +768,7 @@ boolean guess;
|
|||||||
nomul(0);
|
nomul(0);
|
||||||
/* reset run so domove run checks work */
|
/* reset run so domove run checks work */
|
||||||
flags.run = 8;
|
flags.run = 8;
|
||||||
|
iflags.travelcc.x = iflags.travelcc.y = -1;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -516,6 +516,7 @@ initoptions()
|
|||||||
for (i = 0; i < WARNCOUNT; i++)
|
for (i = 0; i < WARNCOUNT; i++)
|
||||||
warnsyms[i] = def_warnsyms[i].sym;
|
warnsyms[i] = def_warnsyms[i].sym;
|
||||||
iflags.bouldersym = 0;
|
iflags.bouldersym = 0;
|
||||||
|
iflags.travelcc.x = iflags.travelcc.y = -1;
|
||||||
flags.warnlevel = 1;
|
flags.warnlevel = 1;
|
||||||
flags.warntype = 0L;
|
flags.warntype = 0L;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user