diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-07-29 17:19:00 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-07-29 17:19:00 +0000 |
commit | e1eaf149bf86f69dbdc8afa9ef28e94640c2c124 (patch) | |
tree | 8d42ea1c79f7d5ca90e2b12fa0cc91971383fb3a /crawl-ref/source/dgnevent.cc | |
parent | 199d107c9f40413126a31fcc843f5c54608bc73c (diff) | |
download | crawl-ref-e1eaf149bf86f69dbdc8afa9ef28e94640c2c124.tar.gz crawl-ref-e1eaf149bf86f69dbdc8afa9ef28e94640c2c124.zip |
Handle dungeon event listeners correctly when shifting terrain.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1948 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dgnevent.cc')
-rw-r--r-- | crawl-ref/source/dgnevent.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/crawl-ref/source/dgnevent.cc b/crawl-ref/source/dgnevent.cc index 0109c0090a..b0c24c5fb1 100644 --- a/crawl-ref/source/dgnevent.cc +++ b/crawl-ref/source/dgnevent.cc @@ -21,6 +21,23 @@ void dgn_event_dispatcher::clear() grid_triggers[x][y].reset(NULL); } +void dgn_event_dispatcher::clear_listeners_at(const coord_def &pos) +{ + grid_triggers[pos.x][pos.y].reset(NULL); +} + +void dgn_event_dispatcher::move_listeners( + const coord_def &from, const coord_def &to) +{ + // Any existing listeners at to will be discarded. YHBW. + grid_triggers[to.x][to.y] = grid_triggers[from.x][from.y]; +} + +bool dgn_event_dispatcher::has_listeners_at(const coord_def &pos) const +{ + return (grid_triggers[pos.x][pos.y].get()); +} + void dgn_event_dispatcher::fire_position_event( dgn_event_type event, const coord_def &pos) { |