summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/actor-los.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2010-07-20 16:22:17 +0200
committerRobert Vollmert <rvollmert@gmx.net>2010-07-20 17:21:56 +0200
commitef7bc03388e190b9942fe4e50f756bed8260eb2f (patch)
tree78c07f4062eae7b4f5cbf4d2a2fc400c5d7aee17 /crawl-ref/source/actor-los.cc
parent0b27c94de9a14259010da76ddfc7fcf485f705f8 (diff)
downloadcrawl-ref-ef7bc03388e190b9942fe4e50f756bed8260eb2f.tar.gz
crawl-ref-ef7bc03388e190b9942fe4e50f756bed8260eb2f.zip
Reorganize arena LOS overrides slightly.
Diffstat (limited to 'crawl-ref/source/actor-los.cc')
-rw-r--r--crawl-ref/source/actor-los.cc27
1 files changed, 18 insertions, 9 deletions
diff --git a/crawl-ref/source/actor-los.cc b/crawl-ref/source/actor-los.cc
index d9a51ebd70..0b865759b3 100644
--- a/crawl-ref/source/actor-los.cc
+++ b/crawl-ref/source/actor-los.cc
@@ -16,14 +16,18 @@ bool actor::observable() const
bool actor::see_cell(const coord_def &p) const
{
- los_type lt = LOS_DEFAULT;
+ if (!in_bounds(pos()))
+ return (false); // actor is off the map
+
+ return (cell_see_cell(pos(), p, LOS_DEFAULT));
+}
+bool player::see_cell(const coord_def &p) const
+{
if (crawl_state.game_is_arena() && this == &you)
- lt = LOS_ARENA; // observer can see everything
- else if (!in_bounds(pos()))
- return (false); // actor is off the map
+ return (true);
- return (cell_see_cell(pos(), p, lt));
+ return (actor::see_cell(p));
}
bool actor::can_see(const actor *target) const
@@ -43,15 +47,21 @@ bool player::trans_wall_blocking(const coord_def &p) const
const los_base* actor::get_los()
{
- if (crawl_state.game_is_arena())
+ los = los_glob(pos(), LOS_DEFAULT);
+ return (&los);
+}
+
+const los_base* player::get_los()
+{
+ if (crawl_state.game_is_arena() && this == &you)
{
// env.show.init iterates over these bounds for arena
los = los_glob(crawl_view.vgrdc, LOS_ARENA,
circle_def(LOS_MAX_RANGE, C_SQUARE));
+ return (&los);
}
else
- los = los_glob(pos(), LOS_DEFAULT);
- return (&los);
+ return (actor::get_los());
}
const los_base* actor::get_los_no_trans()
@@ -60,7 +70,6 @@ const los_base* actor::get_los_no_trans()
return (&los_no_trans);
}
-// Player LOS overrides for arena.
bool player::can_see(const actor* a) const
{
if (crawl_state.game_is_arena() || crawl_state.arena_suspended)