summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dgnevent.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2008-11-25 15:33:36 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2008-11-25 15:33:36 +0000
commit0afe4c455bf5a0358cf7f6688b413389a5080fcc (patch)
tree9580836186a5f1612b2a98279255ee7af45c1063 /crawl-ref/source/dgnevent.cc
parentad382c58bd22273fdcb13759bf35e1c89d573e97 (diff)
downloadcrawl-ref-0afe4c455bf5a0358cf7f6688b413389a5080fcc.tar.gz
crawl-ref-0afe4c455bf5a0358cf7f6688b413389a5080fcc.zip
Ziggurat portals charge gold for entry.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7610 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dgnevent.cc')
-rw-r--r--crawl-ref/source/dgnevent.cc26
1 files changed, 25 insertions, 1 deletions
diff --git a/crawl-ref/source/dgnevent.cc b/crawl-ref/source/dgnevent.cc
index d6848a8039..e6092d7de2 100644
--- a/crawl-ref/source/dgnevent.cc
+++ b/crawl-ref/source/dgnevent.cc
@@ -40,6 +40,31 @@ bool dgn_event_dispatcher::has_listeners_at(const coord_def &pos) const
return (grid_triggers[pos.x][pos.y].get());
}
+bool dgn_event_dispatcher::fire_vetoable_position_event(
+ dgn_event_type et, const coord_def &pos)
+{
+ const dgn_event event(et, pos);
+ return fire_vetoable_position_event(event, pos);
+}
+
+bool dgn_event_dispatcher::fire_vetoable_position_event(
+ const dgn_event &et, const coord_def &pos)
+{
+ dgn_square_alarm *alarm = grid_triggers[pos.x][pos.y].get();
+ if (alarm && (alarm->eventmask & et.type))
+ {
+ dgn_square_alarm alcopy(*alarm);
+ for (std::list<dgn_event_listener*>::iterator
+ i = alcopy.listeners.begin();
+ i != alcopy.listeners.end(); ++i)
+ {
+ if (!(*i)->notify_dgn_event(et))
+ return (false);
+ }
+ }
+ return (true);
+}
+
void dgn_event_dispatcher::fire_position_event(
dgn_event_type event, const coord_def &pos)
{
@@ -61,7 +86,6 @@ void dgn_event_dispatcher::fire_position_event(
(*i)->notify_dgn_event(et);
}
}
-
}
void dgn_event_dispatcher::fire_event(const dgn_event &e)