summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dgnevent.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-07-29 17:19:00 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-07-29 17:19:00 +0000
commite1eaf149bf86f69dbdc8afa9ef28e94640c2c124 (patch)
tree8d42ea1c79f7d5ca90e2b12fa0cc91971383fb3a /crawl-ref/source/dgnevent.cc
parent199d107c9f40413126a31fcc843f5c54608bc73c (diff)
downloadcrawl-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.cc17
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)
{