summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2007-09-16 00:46:32 +0000
committerzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2007-09-16 00:46:32 +0000
commitcf87ca267353855c40cc29c08eb40b646693e3e2 (patch)
tree0d7c2732774b41cf6bf3b0bd1dd2b21752f31270
parent6ed4daf41beec1170a296309f5013ced65ceab20 (diff)
downloadcrawl-ref-cf87ca267353855c40cc29c08eb40b646693e3e2.tar.gz
crawl-ref-cf87ca267353855c40cc29c08eb40b646693e3e2.zip
In the item selection menu, pressing "." will toggle the next item in the
list; you can press "." repeatedly to select/unselect a number of contiguous items. Also, removed the depedancy upon "menu.h" for formatted_string, since that isn't in menu.h anymore. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2101 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/chardump.cc1
-rw-r--r--crawl-ref/source/direct.cc1
-rw-r--r--crawl-ref/source/menu.cc30
-rw-r--r--crawl-ref/source/menu.h2
-rw-r--r--crawl-ref/source/mutation.cc1
-rw-r--r--crawl-ref/source/mutation.h2
-rw-r--r--crawl-ref/source/output.h2
-rw-r--r--crawl-ref/source/spl-book.cc1
-rw-r--r--crawl-ref/source/spl-book.h3
-rw-r--r--crawl-ref/source/spl-cast.cc1
-rw-r--r--crawl-ref/source/tutorial.cc1
-rw-r--r--crawl-ref/source/tutorial.h8
-rw-r--r--crawl-ref/source/view.cc1
13 files changed, 47 insertions, 7 deletions
diff --git a/crawl-ref/source/chardump.cc b/crawl-ref/source/chardump.cc
index 7092a900d2..d69ce9ce23 100644
--- a/crawl-ref/source/chardump.cc
+++ b/crawl-ref/source/chardump.cc
@@ -44,6 +44,7 @@
#include "Kills.h"
#include "macro.h"
#include "message.h"
+#include "menu.h"
#include "mutation.h"
#include "notes.h"
#include "output.h"
diff --git a/crawl-ref/source/direct.cc b/crawl-ref/source/direct.cc
index 8a6074721d..9f246d67a9 100644
--- a/crawl-ref/source/direct.cc
+++ b/crawl-ref/source/direct.cc
@@ -41,6 +41,7 @@
#include "mapmark.h"
#include "message.h"
#include "misc.h"
+#include "menu.h"
#include "monstuff.h"
#include "mon-util.h"
#include "player.h"
diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc
index 576b4517ec..c379460d8f 100644
--- a/crawl-ref/source/menu.cc
+++ b/crawl-ref/source/menu.cc
@@ -32,7 +32,8 @@ Menu::Menu( int _flags )
highlighter(new MenuHighlighter),
num(-1),
lastch(0),
- alive(false)
+ alive(false),
+ last_selected(-1)
{
set_flags(flags);
}
@@ -242,6 +243,22 @@ bool Menu::process_key( int keyin )
repaint = true;
break;
}
+ case '.':
+ if (last_selected != -1)
+ {
+ if ((first_entry + pagesize - last_selected) == 1)
+ {
+ page_down();
+ nav = true;
+ }
+
+ select_index(last_selected + 1);
+ get_selected(&sel);
+
+ repaint = true;
+ }
+ break;
+
default:
keyin = post_process(keyin);
lastch = keyin;
@@ -273,6 +290,14 @@ bool Menu::process_key( int keyin )
break;
}
+ if (last_selected != -1 &&
+ (items.size() == ((unsigned int) last_selected + 1)
+ || items[last_selected + 1] == NULL
+ || items[last_selected + 1]->level != MEL_ITEM))
+ {
+ last_selected = -1;
+ }
+
if (!isdigit( keyin ))
num = -1;
@@ -463,6 +488,7 @@ void Menu::select_index( int index, int qty )
continue;
if (is_hotkey(i, items[i]->hotkeys[0]) && is_selectable(i))
{
+ last_selected = i;
items[i]->select( qty );
draw_item( i );
}
@@ -478,6 +504,7 @@ void Menu::select_index( int index, int qty )
continue;
if (is_hotkey(i, items[i]->hotkeys[0]))
{
+ last_selected = i;
items[i]->select( qty );
draw_item( i );
}
@@ -486,6 +513,7 @@ void Menu::select_index( int index, int qty )
else if (items[si]->level == MEL_ITEM &&
(flags & (MF_SINGLESELECT | MF_MULTISELECT)))
{
+ last_selected = si;
items[si]->select( qty );
draw_item( si );
}
diff --git a/crawl-ref/source/menu.h b/crawl-ref/source/menu.h
index d4d552eb1d..f169263a98 100644
--- a/crawl-ref/source/menu.h
+++ b/crawl-ref/source/menu.h
@@ -237,6 +237,8 @@ protected:
bool alive;
+ int last_selected;
+
protected:
void do_menu();
virtual void draw_select_count(int count, bool force = false);
diff --git a/crawl-ref/source/mutation.cc b/crawl-ref/source/mutation.cc
index c4db7225a5..3deee3e691 100644
--- a/crawl-ref/source/mutation.cc
+++ b/crawl-ref/source/mutation.cc
@@ -35,6 +35,7 @@
#include "defines.h"
#include "effects.h"
+#include "format.h"
#include "itemprop.h"
#include "macro.h"
#include "notes.h"
diff --git a/crawl-ref/source/mutation.h b/crawl-ref/source/mutation.h
index a50c1c50e8..44e4ba1fde 100644
--- a/crawl-ref/source/mutation.h
+++ b/crawl-ref/source/mutation.h
@@ -15,7 +15,7 @@
#define MUTATION_H
// for formatted_string
-#include "menu.h"
+class formatted_string;
// last updated 12may2000 {dlb}
/* ***********************************************************************
diff --git a/crawl-ref/source/output.h b/crawl-ref/source/output.h
index 189f3eb492..be635602b8 100644
--- a/crawl-ref/source/output.h
+++ b/crawl-ref/source/output.h
@@ -14,7 +14,7 @@
#ifndef OUTPUT_H
#define OUTPUT_H
-#include "menu.h"
+#include "format.h"
enum status_redraw_flag_type
{
diff --git a/crawl-ref/source/spl-book.cc b/crawl-ref/source/spl-book.cc
index c3d52c0451..69a88c8991 100644
--- a/crawl-ref/source/spl-book.cc
+++ b/crawl-ref/source/spl-book.cc
@@ -29,6 +29,7 @@
#include "debug.h"
#include "delay.h"
#include "food.h"
+#include "format.h"
#include "invent.h"
#include "itemname.h"
#include "itemprop.h"
diff --git a/crawl-ref/source/spl-book.h b/crawl-ref/source/spl-book.h
index ede00e0aee..29a01280fe 100644
--- a/crawl-ref/source/spl-book.h
+++ b/crawl-ref/source/spl-book.h
@@ -15,9 +15,10 @@
#define SPL_BOOK_H
#include "externs.h"
-#include "menu.h"
#include "FixVec.h"
+class formatted_string;
+
enum read_book_action_type
{
RBOOK_USE_STAFF,
diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc
index 9fc260e9d6..fff4aef204 100644
--- a/crawl-ref/source/spl-cast.cc
+++ b/crawl-ref/source/spl-cast.cc
@@ -35,6 +35,7 @@
#include "itemname.h"
#include "itemprop.h"
#include "macro.h"
+#include "menu.h"
#include "message.h"
#include "monplace.h"
#include "monstuff.h"
diff --git a/crawl-ref/source/tutorial.cc b/crawl-ref/source/tutorial.cc
index bf3c356482..a0642733cb 100644
--- a/crawl-ref/source/tutorial.cc
+++ b/crawl-ref/source/tutorial.cc
@@ -10,6 +10,7 @@
#include "command.h"
#include "files.h"
#include "food.h"
+#include "format.h"
#include "initfile.h"
#include "itemname.h"
#include "itemprop.h"
diff --git a/crawl-ref/source/tutorial.h b/crawl-ref/source/tutorial.h
index a4824ab89b..942086d207 100644
--- a/crawl-ref/source/tutorial.h
+++ b/crawl-ref/source/tutorial.h
@@ -9,14 +9,16 @@
#ifndef TUTORIAL_H
#define TUTORIAL_H
-// for formatted_string
-#include "menu.h"
-
#include <string>
#include <vector>
#include <stdio.h>
#include <stdlib.h>
+#include "AppHdr.h"
+#include "externs.h"
+
+class formatted_string;
+
void save_tutorial( FILE* fp );
void load_tutorial( FILE* fp );
void init_tutorial_options(void);
diff --git a/crawl-ref/source/view.cc b/crawl-ref/source/view.cc
index ee5dc4c530..c44639b141 100644
--- a/crawl-ref/source/view.cc
+++ b/crawl-ref/source/view.cc
@@ -45,6 +45,7 @@
#include "delay.h"
#include "direct.h"
#include "dungeon.h"
+#include "format.h"
#include "initfile.h"
#include "itemprop.h"
#include "luadgn.h"