diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-11-25 15:33:36 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-11-25 15:33:36 +0000 |
commit | 0afe4c455bf5a0358cf7f6688b413389a5080fcc (patch) | |
tree | 9580836186a5f1612b2a98279255ee7af45c1063 /crawl-ref/source/dgnevent.cc | |
parent | ad382c58bd22273fdcb13759bf35e1c89d573e97 (diff) | |
download | crawl-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.cc | 26 |
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) |