summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/los_def.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2010-03-22 11:16:21 +0100
committerRobert Vollmert <rvollmert@gmx.net>2010-03-22 18:49:33 +0100
commitf076dba08f371e3949cac9e25bc3d57cbe09a133 (patch)
tree5bae121339342f2052f3cfcca04d47b4cb7ecd7a /crawl-ref/source/los_def.cc
parentdea589d649ce656f83f31d3333ba61cb7b4194cb (diff)
downloadcrawl-ref-f076dba08f371e3949cac9e25bc3d57cbe09a133.tar.gz
crawl-ref-f076dba08f371e3949cac9e25bc3d57cbe09a133.zip
Update actor::get_los to use global LOS.
This is all not very nice. los_base is now an abstract base class for both los_def and los_glob (global LOS-backed los_def variant), and interators now take a *los_base. actor::update_los is gone. Arena LOS is quite probably broken again at the moment.
Diffstat (limited to 'crawl-ref/source/los_def.cc')
-rw-r--r--crawl-ref/source/los_def.cc30
1 files changed, 29 insertions, 1 deletions
diff --git a/crawl-ref/source/los_def.cc b/crawl-ref/source/los_def.cc
index 4f2115c990..4286d56eba 100644
--- a/crawl-ref/source/los_def.cc
+++ b/crawl-ref/source/los_def.cc
@@ -66,7 +66,7 @@ void los_def::set_center(const coord_def& c)
center = c;
}
-coord_def los_def::get_center()
+coord_def los_def::get_center() const
{
return center;
}
@@ -99,3 +99,31 @@ bool los_def::see_cell(const coord_def& p) const
const coord_def sp = p - center;
return (sp.rdist() <= LOS_MAX_RANGE && show(sp));
}
+
+coord_def los_glob::get_center() const
+{
+ return (center);
+}
+
+circle_def los_glob::get_bounds() const
+{
+ return (circle_def(center, bds));
+}
+
+bool los_glob::in_bounds(const coord_def& p) const
+{
+ return (bds.contains(p - center));
+}
+
+bool los_glob::see_cell(const coord_def& p) const
+{
+ return (in_bounds(p) && cell_see_cell(center, p, lt));
+}
+
+los_glob& los_glob::operator=(const los_glob& los)
+{
+ lt = los.lt;
+ center = los.center;
+ bds = los.bds;
+ return (*this);
+}