From 6133f1e422db46410fd624c4be2b3dc2e82fdacd Mon Sep 17 00:00:00 2001 From: dshaligram Date: Sun, 3 Jun 2007 09:59:15 +0000 Subject: $ in the interlevel travel depth prompt changes the default to the deepest visited level in the branch. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1516 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/travel.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'crawl-ref/source/travel.cc') diff --git a/crawl-ref/source/travel.cc b/crawl-ref/source/travel.cc index 796df67a74..9cb7bec3bc 100644 --- a/crawl-ref/source/travel.cc +++ b/crawl-ref/source/travel.cc @@ -1960,6 +1960,17 @@ static level_id find_down_level(level_id curr) return (curr); } +static level_id find_deepest_explored(level_id curr) +{ + for (int i = branches[curr.branch].depth; i > 0; --i) + { + const level_id lid(curr.branch, i); + if (travel_cache.find_level_info(lid)) + return (lid); + } + return (curr); +} + static level_id find_down_level() { return (find_down_level(level_id::current())); @@ -1975,6 +1986,8 @@ static int travel_depth_keyfilter(int &c) case CONTROL('P'): case 'p': c = '-'; // Make uniform. return (-1); + case '$': + return (-1); default: return (1); } @@ -1998,6 +2011,9 @@ static void travel_depth_munge(int munge_method, branch_type *br, int *depth) case '-': lid = find_up_level(lid, true); break; + case '$': + lid = find_deepest_explored(lid); + break; } *br = lid.branch; *depth = lid.depth; -- cgit v1.2.3-54-g00ecf