diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2010-07-20 16:22:17 +0200 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2010-07-20 17:21:56 +0200 |
commit | ef7bc03388e190b9942fe4e50f756bed8260eb2f (patch) | |
tree | 78c07f4062eae7b4f5cbf4d2a2fc400c5d7aee17 /crawl-ref/source/actor-los.cc | |
parent | 0b27c94de9a14259010da76ddfc7fcf485f705f8 (diff) | |
download | crawl-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.cc | 27 |
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) |