diff options
author | Stefan O'Rear <stefanor@cox.net> | 2009-11-02 19:01:25 -0800 |
---|---|---|
committer | Stefan O'Rear <stefanor@cox.net> | 2009-11-02 19:01:25 -0800 |
commit | 385b092e89c160e2b22c6ed502988c983940d05c (patch) | |
tree | 520af9d7fb4ef5e2a900b52cb3b2b3d352a7d2d6 | |
parent | 3f3c0139c0eeb94c90b2afad0ba6af493c0f2b08 (diff) | |
download | crawl-ref-385b092e89c160e2b22c6ed502988c983940d05c.tar.gz crawl-ref-385b092e89c160e2b22c6ed502988c983940d05c.zip |
Use G in the overmap to directly change levels
-rw-r--r-- | crawl-ref/source/cmd-keys.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/cmd-name.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/debug.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/enum.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/travel.cc | 22 | ||||
-rw-r--r-- | crawl-ref/source/travel.h | 3 | ||||
-rw-r--r-- | crawl-ref/source/view.cc | 18 |
7 files changed, 37 insertions, 13 deletions
diff --git a/crawl-ref/source/cmd-keys.h b/crawl-ref/source/cmd-keys.h index f41c6a25e4..6cda197429 100644 --- a/crawl-ref/source/cmd-keys.h +++ b/crawl-ref/source/cmd-keys.h @@ -285,6 +285,7 @@ {'[', CMD_MAP_PREV_LEVEL}, {']', CMD_MAP_NEXT_LEVEL}, {'v', CMD_MAP_OTHER_BRANCH}, +{'G', CMD_MAP_GOTO_LEVEL}, {'+', CMD_MAP_SCROLL_DOWN}, {CK_MOUSE_B5, CMD_MAP_SCROLL_DOWN}, {'-', CMD_MAP_SCROLL_UP}, diff --git a/crawl-ref/source/cmd-name.h b/crawl-ref/source/cmd-name.h index 01b0e8a3a3..c251802138 100644 --- a/crawl-ref/source/cmd-name.h +++ b/crawl-ref/source/cmd-name.h @@ -133,6 +133,7 @@ {CMD_MAP_NEXT_LEVEL, "CMD_MAP_NEXT_LEVEL"}, {CMD_MAP_PREV_LEVEL, "CMD_MAP_PREV_LEVEL"}, {CMD_MAP_OTHER_BRANCH, "CMD_MAP_OTHER_BRANCH"}, +{CMD_MAP_GOTO_LEVEL, "CMD_MAP_GOTO_LEVEL"}, {CMD_MAP_SCROLL_DOWN, "CMD_MAP_SCROLL_DOWN"}, {CMD_MAP_SCROLL_UP, "CMD_MAP_SCROLL_UP"}, {CMD_MAP_FIND_UPSTAIR, "CMD_MAP_FIND_UPSTAIR"}, diff --git a/crawl-ref/source/debug.cc b/crawl-ref/source/debug.cc index 68ab189828..a2f2aa0198 100644 --- a/crawl-ref/source/debug.cc +++ b/crawl-ref/source/debug.cc @@ -16,6 +16,7 @@ #include <time.h> #include <ctype.h> #include <algorithm> +#include <string> #include <errno.h> #ifdef TARGET_OS_DOS @@ -809,8 +810,9 @@ static void _wizard_go_to_level(const level_pos &pos) void wizard_interlevel_travel() { + std::string name; const level_pos pos = - prompt_translevel_target(TPF_ALLOW_UPDOWN | TPF_SHOW_ALL_BRANCHES).p; + prompt_translevel_target(TPF_ALLOW_UPDOWN | TPF_SHOW_ALL_BRANCHES, name).p; if (pos.id.depth < 1 || pos.id.depth > branches[pos.id.branch].depth) { diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index 8e0e7682e5..9c043e8335 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -606,6 +606,7 @@ enum command_type CMD_MAP_NEXT_LEVEL, CMD_MAP_PREV_LEVEL, CMD_MAP_OTHER_BRANCH, + CMD_MAP_GOTO_LEVEL, CMD_MAP_SCROLL_DOWN, CMD_MAP_SCROLL_UP, diff --git a/crawl-ref/source/travel.cc b/crawl-ref/source/travel.cc index a8bd3d5174..499f2561df 100644 --- a/crawl-ref/source/travel.cc +++ b/crawl-ref/source/travel.cc @@ -2254,7 +2254,8 @@ static travel_target _prompt_travel_depth(const level_id &id, } } -travel_target prompt_translevel_target(int prompt_flags) +travel_target prompt_translevel_target(int prompt_flags, + std::string& dest_name) { travel_target target; bool to_entrance = false; @@ -2272,7 +2273,7 @@ travel_target prompt_translevel_target(int prompt_flags) { target.p = _find_up_level(); if (target.p.id.depth > 0 && remember_targ) - trans_travel_dest = get_trans_travel_dest(target); + dest_name = get_trans_travel_dest(target); return (target); } @@ -2280,14 +2281,16 @@ travel_target prompt_translevel_target(int prompt_flags) { target.p = _find_down_level(); if (target.p.id.depth > 0 && remember_targ) - trans_travel_dest = get_trans_travel_dest(target); + dest_name = get_trans_travel_dest(target); return (target); } if (branch < 0) { - travel_cache.travel_to_waypoint(-branch - 1); - return target; + target = travel_cache.get_waypoint(-branch - 1); + if (target.p.id.depth > 0 && remember_targ) + dest_name = get_trans_travel_dest(target); + return (target); } target.p.id.branch = static_cast<branch_type>(branch); @@ -2302,7 +2305,7 @@ travel_target prompt_translevel_target(int prompt_flags) } if (target.p.id.depth > -1 && remember_targ) - trans_travel_dest = get_trans_travel_dest(target); + dest_name = get_trans_travel_dest(target); return target; } @@ -2355,11 +2358,8 @@ void start_translevel_travel(bool prompt_for_destination) if (prompt_for_destination) { - // prompt_translevel_target may actually initiate travel directly if - // the user chose a waypoint instead of a branch + depth. As far as - // we're concerned, if the target depth is unset, we need to take no - // further action. - travel_target target = prompt_translevel_target(); + travel_target target = prompt_translevel_target(TPF_DEFAULT_OPTIONS, + trans_travel_dest); if (target.p.id.depth <= 0) return; diff --git a/crawl-ref/source/travel.h b/crawl-ref/source/travel.h index 43736d3f98..d64d56670e 100644 --- a/crawl-ref/source/travel.h +++ b/crawl-ref/source/travel.h @@ -129,7 +129,8 @@ enum translevel_prompt_flags | TPF_REMEMBER_TARGET }; -travel_target prompt_translevel_target(int prompt_flags = TPF_DEFAULT_OPTIONS); +travel_target prompt_translevel_target(int prompt_flags, + std::string& dest_name); // Magic numbers for point_distance: diff --git a/crawl-ref/source/view.cc b/crawl-ref/source/view.cc index 301e8ec597..b7378efc18 100644 --- a/crawl-ref/source/view.cc +++ b/crawl-ref/source/view.cc @@ -2759,6 +2759,24 @@ void show_map( level_pos &spec_place, bool travel_mode, bool allow_esc ) break; } + case CMD_MAP_GOTO_LEVEL: { + std::string name; + const level_pos pos = + prompt_translevel_target(TPF_DEFAULT_OPTIONS, name).p; + + if (pos.id.depth < 1 || pos.id.depth > branches[pos.id.branch].depth + || !is_existing_level(pos.id)) + { + canned_msg(MSG_OK); + redraw_map = true; + break; + } + + le.go_to(pos.id); + new_level = true; + break; + } + case CMD_MAP_JUMP_DOWN_LEFT: move_x = -block_step; move_y = block_step; |