diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-07-28 14:05:26 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-07-28 14:05:26 +0000 |
commit | 4bddff39d6767838f019f79d069591020223389c (patch) | |
tree | b8869ace0b3417b93b7d5afc0c3cac6af05b9fd9 /crawl-ref/source/view.cc | |
parent | 4626c89fde4187298219d76253415b58347b199c (diff) | |
download | crawl-ref-4bddff39d6767838f019f79d069591020223389c.tar.gz crawl-ref-4bddff39d6767838f019f79d069591020223389c.zip |
* Another magic mapping fix in cooperation with zebez. Thanks! :)
* Don't make Detect creatures "detect" monsters you can currently see.
* Replace rock stair tiles with Eino's escape hatch tiles.
* Update change log once again.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/branches/stone_soup-0.5@10447 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/view.cc')
-rw-r--r-- | crawl-ref/source/view.cc | 64 |
1 files changed, 54 insertions, 10 deletions
diff --git a/crawl-ref/source/view.cc b/crawl-ref/source/view.cc index 7d4878c93f..171141a3c8 100644 --- a/crawl-ref/source/view.cc +++ b/crawl-ref/source/view.cc @@ -826,19 +826,38 @@ void clear_map(bool clear_detected_items, bool clear_detected_monsters) if (!clear_detected_monsters && is_envmap_detected_mons(p)) continue; - if (is_terrain_mapped(p)) +#ifdef USE_TILE + if (is_terrain_mapped(p) && !is_envmap_detected_mons(p)) continue; +#endif - set_envmap_obj(p, is_terrain_known(p)? grd(p) : DNGN_UNSEEN); + set_envmap_obj(p, is_terrain_seen(p) || is_terrain_mapped(p) + ? grd(p) : DNGN_UNSEEN); set_envmap_detected_mons(p, false); set_envmap_detected_item(p, false); #ifdef USE_TILE - set_envmap_obj(p, is_terrain_known(p)? grd(p) : DNGN_UNSEEN); - env.tile_bk_fg(p) = 0; - env.tile_bk_bg(p) = is_terrain_known(p) ? - tile_idx_unseen_terrain(p.x, p.y, grd(p)) : - tileidx_feature(DNGN_UNSEEN, p.x, p.y); + if (is_terrain_mapped(p)) + { + unsigned int feature = grd(p); + + unsigned int grid_symbol; + unsigned short grid_colour; + get_item_symbol(feature, &grid_symbol, &grid_colour); + + unsigned int fg; + unsigned int bg; + tileidx_unseen(fg, bg, grid_symbol, p); + env.tile_bk_bg(p) = bg; + env.tile_bk_fg(p) = fg; + } + else + { + env.tile_bk_bg(p) = is_terrain_seen(p) ? + tile_idx_unseen_terrain(p.x, p.y, grd(p)) : + tileidx_feature(DNGN_UNSEEN, p.x, p.y); + env.tile_bk_fg(p) = 0; + } #endif } } @@ -3918,17 +3937,34 @@ bool magic_mapping(int map_radius, int proportion, bool suppress_msg, if (is_terrain_changed(*ri)) clear_envmap_grid(*ri); +#if 0 #ifdef USE_TILE if (!wizard_map && is_terrain_known(*ri) && !is_terrain_mapped(*ri)) { // Can't use set_envmap_obj because that would // overwrite the gmap. - env.tile_bk_bg(*ri) = tile_idx_unseen_terrain(ri->x, ri->y, - grd(*ri)); + if (is_terrain_seen(*ri)) + { + env.tile_bk_bg(*ri) = tile_idx_unseen_terrain(ri->x, ri->y, + grd(*ri)); + } + else + { + unsigned int feature = grd(*ri); + unsigned int grid_symbol; + unsigned short grid_color; + get_item_symbol(feature, &grid_symbol, &grid_color); + + unsigned int fg; + unsigned int bg; + tileidx_unseen(fg, bg, grid_symbol, *ri); + env.tile_bk_bg(*ri) = bg; + } } #endif +#endif - if (!wizard_map && (is_terrain_known(*ri) || is_terrain_seen(*ri))) + if (!wizard_map && (is_terrain_seen(*ri) || is_terrain_mapped(*ri))) continue; bool open = true; @@ -3953,7 +3989,15 @@ bool magic_mapping(int map_radius, int proportion, bool suppress_msg, set_envmap_obj(*ri, grd(*ri)); if (wizard_map) + { set_terrain_seen(*ri); +#ifdef USE_TILE + // Can't use set_envmap_obj because that would + // overwrite the gmap. + env.tile_bk_bg(*ri) = tile_idx_unseen_terrain(ri->x, ri->y, + grd(*ri)); +#endif + } else set_terrain_mapped(*ri); |