summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/los.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-10-19 12:16:45 +0200
committerRobert Vollmert <rvollmert@gmx.net>2009-10-22 22:37:06 +0200
commitbaac5dcb6b5ae6f006cedcd3ff708b03df84bd69 (patch)
tree2336f520bd8ff9a9c5868b2d50937ff22e47cebf /crawl-ref/source/los.cc
parente14a242819bafa92d2edf0425729a0485f78f591 (diff)
downloadcrawl-ref-baac5dcb6b5ae6f006cedcd3ff708b03df84bd69.tar.gz
crawl-ref-baac5dcb6b5ae6f006cedcd3ff708b03df84bd69.zip
Wrap losight() in class los_def together with env_show_grid.
Diffstat (limited to 'crawl-ref/source/los.cc')
-rw-r--r--crawl-ref/source/los.cc39
1 files changed, 39 insertions, 0 deletions
diff --git a/crawl-ref/source/los.cc b/crawl-ref/source/los.cc
index 8213e825a4..f42f55afbf 100644
--- a/crawl-ref/source/los.cc
+++ b/crawl-ref/source/los.cc
@@ -920,6 +920,44 @@ void losight(env_show_grid& sh, const coord_def& center,
losight(sh, los_param_funcs(center, opc, bounds));
}
+
+// class los
+// TODO: lazy update?
+
+los_def::los_def() {}
+
+los_def::los_def(const coord_def& c, const opacity_func &o,
+ const bounds_func &b)
+{
+ init(c, o, b);
+}
+
+void los_def::init(const coord_def& c, const opacity_func &o,
+ const bounds_func &b)
+{
+ center = &c;
+ opc = &o;
+ bds = &b;
+ update();
+}
+
+void los_def::update()
+{
+ losight(show, *center, *opc, *bds);
+}
+
+void los_def::set_center(const coord_def& c)
+{
+ center = &c;
+ update();
+}
+
+bool los_def::see_cell(const coord_def& p) const
+{
+ return (::see_cell(show, *center, p));
+}
+
+
void losight_permissive(env_show_grid &sh, const coord_def& center)
{
for (int x = -ENV_SHOW_OFFSET; x <= ENV_SHOW_OFFSET; ++x)
@@ -931,6 +969,7 @@ void losight_permissive(env_show_grid &sh, const coord_def& center)
}
}
+
void calc_show_los()
{
if (!crawl_state.arena && !crawl_state.arena_suspended)