diff options
author | Adam Borowski <kilobyte@angband.pl> | 2011-12-11 17:26:46 +0100 |
---|---|---|
committer | Adam Borowski <kilobyte@angband.pl> | 2011-12-11 17:27:30 +0100 |
commit | e1e8809eb886f2e70a65d9c9a440534903669623 (patch) | |
tree | 21bc42384a3f92e80229d92821e3198d86803c34 /crawl-ref/source/losparam.cc | |
parent | d09b4f16275a05d49ed29aef992ecb85212f287c (diff) | |
download | crawl-ref-e1e8809eb886f2e70a65d9c9a440534903669623.tar.gz crawl-ref-e1e8809eb886f2e70a65d9c9a440534903669623.zip |
Fix mimic opacity for different LOS models.
Diffstat (limited to 'crawl-ref/source/losparam.cc')
-rw-r--r-- | crawl-ref/source/losparam.cc | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/crawl-ref/source/losparam.cc b/crawl-ref/source/losparam.cc index 866d17b147..1d7d6154f2 100644 --- a/crawl-ref/source/losparam.cc +++ b/crawl-ref/source/losparam.cc @@ -21,12 +21,12 @@ opacity_type opacity_default::operator()(const coord_def& p) const dungeon_feature_type f = grid_appearance(p); if (feat_is_opaque(f)) return OPC_OPAQUE; - else if (is_opaque_cloud(env.cgrid(p))) - return OPC_HALF; else if (f == DNGN_TREE || f == DNGN_SWAMP_TREE) return OPC_HALF; + else if (is_opaque_cloud(env.cgrid(p))) + return OPC_HALF; if (const monster *mon = monster_at(p)) - return mons_opacity(mon); + return mons_opacity(mon, LOS_DEFAULT); return OPC_CLEAR; } @@ -40,16 +40,14 @@ opacity_type opacity_fullyopaque::operator()(const coord_def& p) const opacity_type opacity_no_trans::operator()(const coord_def& p) const { - opacity_type base = opc_default(p); - - dungeon_feature_type f = env.grid(p); - if (feat_is_opaque(f) || feat_is_wall(f) - || f == DNGN_TREE || f == DNGN_SWAMP_TREE) - { + dungeon_feature_type f = grid_appearance(p); + if (feat_is_opaque(f) || feat_is_wall(f) || feat_is_tree(f)) return OPC_OPAQUE; - } - else - return base; + else if (is_opaque_cloud(env.cgrid(p))) + return OPC_HALF; + if (const monster *mon = monster_at(p)) + return mons_opacity(mon, LOS_NO_TRANS); + return OPC_CLEAR; } static bool mons_block_immob(const monster* mons) @@ -103,7 +101,7 @@ opacity_type opacity_solid_see::operator()(const coord_def& p) const else if (is_opaque_cloud(env.cgrid(p))) return OPC_HALF; else if (const monster *mon = monster_at(p)) - return mons_opacity(mon); + return mons_opacity(mon, LOS_SOLID_SEE); return OPC_CLEAR; } |