summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/travel.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/travel.cc')
-rw-r--r--crawl-ref/source/travel.cc59
1 files changed, 54 insertions, 5 deletions
diff --git a/crawl-ref/source/travel.cc b/crawl-ref/source/travel.cc
index dfdb0ab4fd..082ad2c784 100644
--- a/crawl-ref/source/travel.cc
+++ b/crawl-ref/source/travel.cc
@@ -3027,6 +3027,44 @@ void TravelCache::update_waypoints() const
}
}
+void TravelCache::delete_waypoint()
+{
+ if (!get_waypoint_count())
+ return;
+
+ while (get_waypoint_count())
+ {
+ mesclr();
+ mpr("Existing waypoints:");
+ list_waypoints();
+ mpr("Delete which waypoint? (* - delete all, Esc - exit) ",
+ MSGCH_PROMPT);
+
+ int key = getch();
+ if (key >= '0' && key <= '9')
+ {
+ key -= '0';
+ if (waypoints[key].is_valid())
+ {
+ waypoints[key].reset();
+ continue;
+ }
+ }
+ else if (key == '*')
+ {
+ for (int i = 0; i < TRAVEL_WAYPOINT_COUNT; ++i)
+ waypoints[i].reset();
+ break;
+ }
+
+ canned_msg(MSG_OK);
+ return;
+ }
+
+ mesclr();
+ mpr("All waypoints deleted. Have a nice day!");
+}
+
void TravelCache::add_waypoint(int x, int y)
{
if (you.level_type == LEVEL_LABYRINTH || you.level_type == LEVEL_ABYSS
@@ -3037,16 +3075,27 @@ void TravelCache::add_waypoint(int x, int y)
}
mesclr();
- if (get_waypoint_count())
+
+ const bool waypoints_exist = get_waypoint_count();
+ if (waypoints_exist)
{
- mpr("Existing waypoints");
+ mpr("Existing waypoints:");
list_waypoints();
}
- mpr("Assign waypoint to what number? (0-9) ", MSGCH_PROMPT);
- int keyin = get_ch();
+ mprf(MSGCH_PROMPT, "Assign waypoint to what number? (0-9%s) ",
+ waypoints_exist? ", D - delete waypoint" : "");
- if (keyin < '0' || keyin > '9') return;
+ int keyin = tolower(get_ch());
+
+ if (waypoints_exist && keyin == 'd')
+ {
+ delete_waypoint();
+ return;
+ }
+
+ if (keyin < '0' || keyin > '9')
+ return;
int waynum = keyin - '0';