summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan O'Rear <stefanor@cox.net>2009-11-02 19:01:25 -0800
committerStefan O'Rear <stefanor@cox.net>2009-11-02 19:01:25 -0800
commit385b092e89c160e2b22c6ed502988c983940d05c (patch)
tree520af9d7fb4ef5e2a900b52cb3b2b3d352a7d2d6
parent3f3c0139c0eeb94c90b2afad0ba6af493c0f2b08 (diff)
downloadcrawl-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.h1
-rw-r--r--crawl-ref/source/cmd-name.h1
-rw-r--r--crawl-ref/source/debug.cc4
-rw-r--r--crawl-ref/source/enum.h1
-rw-r--r--crawl-ref/source/travel.cc22
-rw-r--r--crawl-ref/source/travel.h3
-rw-r--r--crawl-ref/source/view.cc18
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;