summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/losparam.cc
diff options
context:
space:
mode:
authorAdam Borowski <kilobyte@angband.pl>2011-12-11 17:26:46 +0100
committerAdam Borowski <kilobyte@angband.pl>2011-12-11 17:27:30 +0100
commite1e8809eb886f2e70a65d9c9a440534903669623 (patch)
tree21bc42384a3f92e80229d92821e3198d86803c34 /crawl-ref/source/losparam.cc
parentd09b4f16275a05d49ed29aef992ecb85212f287c (diff)
downloadcrawl-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.cc24
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;
}