summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/losparam.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2010-02-22 12:47:26 +0100
committerRobert Vollmert <rvollmert@gmx.net>2010-02-22 13:13:23 +0100
commitd2d2410aa72b9fc18f10e4b1dd38aceeeb602f0c (patch)
treeac27b25c12b33751d9b79106e24cb9ff28b8d39d /crawl-ref/source/losparam.cc
parent68cd75376ce80d79e998ad13e96bf72299fb5284 (diff)
downloadcrawl-ref-d2d2410aa72b9fc18f10e4b1dd38aceeeb602f0c.tar.gz
crawl-ref-d2d2410aa72b9fc18f10e4b1dd38aceeeb602f0c.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.
Diffstat (limited to 'crawl-ref/source/losparam.cc')
-rw-r--r--crawl-ref/source/losparam.cc27
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