From 4bddff39d6767838f019f79d069591020223389c Mon Sep 17 00:00:00 2001 From: j-p-e-g Date: Tue, 28 Jul 2009 14:05:26 +0000 Subject: * 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 --- crawl-ref/source/view.cc | 64 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 10 deletions(-) (limited to 'crawl-ref/source/view.cc') 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); -- cgit v1.2.3-54-g00ecf