summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/macro.cc
diff options
context:
space:
mode:
authorMatthew Cline <zelgadis@sourceforge.net>2009-11-22 20:56:08 -0800
committerMatthew Cline <zelgadis@sourceforge.net>2009-11-22 21:02:48 -0800
commitce0b009e851f37ee522e7e0ef420a0e9fb0b246e (patch)
tree8c363c6cf37ebc36f2c615a666b00ebe3ce1b978 /crawl-ref/source/macro.cc
parent55abf2cd3e897e7c06b860427a31484810b203dc (diff)
downloadcrawl-ref-ce0b009e851f37ee522e7e0ef420a0e9fb0b246e.tar.gz
crawl-ref-ce0b009e851f37ee522e7e0ef420a0e9fb0b246e.zip
New class pause_all_key_recorders
If declared on the stack, it will pause all key recorders as soon as declared, then return them to their previous pausing state when it goes out of scope.
Diffstat (limited to 'crawl-ref/source/macro.cc')
-rw-r--r--crawl-ref/source/macro.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/crawl-ref/source/macro.cc b/crawl-ref/source/macro.cc
index 25e916430f..d1fa5f004e 100644
--- a/crawl-ref/source/macro.cc
+++ b/crawl-ref/source/macro.cc
@@ -995,6 +995,21 @@ void key_recorder::clear()
macro_trigger_keys.clear();
}
+pause_all_key_recorders::pause_all_key_recorders()
+{
+ for (unsigned int i = 0; i < recorders.size(); i++)
+ {
+ prev_pause_status.push_back(recorders[i]->paused);
+ recorders[i]->paused = true;
+ }
+}
+
+pause_all_key_recorders::~pause_all_key_recorders()
+{
+ for (unsigned int i = 0; i < recorders.size(); i++)
+ recorders[i]->paused = prev_pause_status[i];
+}
+
void add_key_recorder(key_recorder* recorder)
{
for (int i = 0, size = recorders.size(); i < size; i++)