diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2010-02-22 12:47:26 +0100 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2010-02-22 09:43:18 -0600 |
commit | 66dab56cd5c2c7249036f53e101b753d39ba33a1 (patch) | |
tree | 5df9872469128d2d316c7e2775e27fed30931edf /crawl-ref/source/losparam.cc | |
parent | 556285974181a08469b7ce2237a55df4479e31e0 (diff) | |
download | crawl-ref-66dab56cd5c2c7249036f53e101b753d39ba33a1.tar.gz crawl-ref-66dab56cd5c2c7249036f53e101b753d39ba33a1.zip |
opacity_immob for monster movement.
This moves the previous opacity_no_trans modifications (a9af5253)
into a separate opacity_func to avoid conflicts with other uses
of opacity_no_trans.
(cherry picked from commit d2d2410aa72b9fc18f10e4b1dd38aceeeb602f0c)
Diffstat (limited to 'crawl-ref/source/losparam.cc')
-rw-r--r-- | crawl-ref/source/losparam.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/crawl-ref/source/losparam.cc b/crawl-ref/source/losparam.cc index 7bbfa5ac3e..dd60a26ae8 100644 --- a/crawl-ref/source/losparam.cc +++ b/crawl-ref/source/losparam.cc @@ -49,6 +49,33 @@ opacity_type opacity_no_trans::operator()(const coord_def& p) const return base; } +static bool mons_block_immob(const monsters* mons) +{ + if (mons == NULL) + return false; + + switch (mons->id()) + { + case MONS_BUSH: + case MONS_PLANT: + case MONS_OKLOB_PLANT: + case MONS_FUNGUS: + return true; + default: + return false; + } +} + +opacity_type opacity_immob::operator()(const coord_def& p) const +{ + opacity_type base = opc_no_trans(p); + + if (mons_block_immob(monster_at(p))) + return OPC_OPAQUE; + else + return base; +} + // Make anything solid block in addition to normal LOS. // That's just granite statues in addition to opacity_no_trans. opacity_type opacity_solid::operator()(const coord_def& p) const |