Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/crawl-ref/source/rltiles/dc-wall.txt b/crawl-ref/source/rltiles/dc-wall.txt
- index 49187ce..bd099cc 100644
- --- a/crawl-ref/source/rltiles/dc-wall.txt
- +++ b/crawl-ref/source/rltiles/dc-wall.txt
- @@ -1577,3 +1577,37 @@ shadow_e_top_darker
- %sdir dngn/vaults
- brick_dark_leak WALL_BRICK_DARK_LEAK
- +
- +#los blend
- +%sdir dngn/losblend
- +los_blend_edge_1 LOS_BLEND_EDGE
- +los_blend_edge_2
- +los_blend_edge_3
- +los_blend_edge_4
- +los_blend_edge_5
- +los_blend_edge_6
- +los_blend_edge_7
- +los_blend_edge_8
- +los_blend_edge_9
- +los_blend_edge_10
- +los_blend_edge_11
- +los_blend_edge_12
- +los_blend_edge_13
- +los_blend_edge_14
- +los_blend_edge_15
- +
- +los_blend_corner_1 LOS_BLEND_CORNER
- +los_blend_corner_2
- +los_blend_corner_3
- +los_blend_corner_4
- +los_blend_corner_5
- +los_blend_corner_6
- +los_blend_corner_7
- +los_blend_corner_8
- +los_blend_corner_9
- +los_blend_corner_10
- +los_blend_corner_11
- +los_blend_corner_12
- +los_blend_corner_13
- +los_blend_corner_14
- +los_blend_corner_15
- diff --git a/crawl-ref/source/tilecell.cc b/crawl-ref/source/tilecell.cc
- index 0c9a84e..42cadee 100644
- --- a/crawl-ref/source/tilecell.cc
- +++ b/crawl-ref/source/tilecell.cc
- @@ -476,6 +476,54 @@ static bool _is_seen_slimy_wall(const coord_def& gc)
- return feat == DNGN_SLIMY_WALL;
- }
- +static bool _is_visible(const coord_def& gc)
- +{
- + if (!map_bounds(gc))
- + return false;
- + return env.map_knowledge(gc).visible();
- +}
- +
- +static void _pack_los_blend(const coord_def &gc, packed_cell *cell)
- +{
- + /*
- + * edges:
- + * 1: north, 2: east, 4: south, 8: west
- + * corners:
- + * 1: north-east, 2: south-east, 4: south-west, 8: north-west
- + */
- + if (!_is_visible(coord_def(gc.x, gc.y)))
- + return;
- +
- + int edges = 0;
- + int corners = 0;
- +
- + // orthogonals
- + if (!_is_visible(coord_def(gc.x, gc.y - 1)))
- + edges |= 1;
- + if (!_is_visible(coord_def(gc.x + 1, gc.y)))
- + edges |= 2;
- + if (!_is_visible(coord_def(gc.x, gc.y + 1)))
- + edges |= 4;
- + if (!_is_visible(coord_def(gc.x - 1, gc.y)))
- + edges |= 8;
- +
- + if (edges)
- + _add_overlay(TILE_LOS_BLEND_EDGE + edges - 1, cell);
- +
- + // corners
- + if (!(edges & 1) && !(edges & 2) && !_is_visible(coord_def(gc.x + 1, gc.y - 1)))
- + corners |= 1;
- + if (!(edges & 2) && !(edges & 4) && !_is_visible(coord_def(gc.x + 1, gc.y + 1)))
- + corners |= 2;
- + if (!(edges & 4) && !(edges & 8) && !_is_visible(coord_def(gc.x - 1, gc.y + 1)))
- + corners |= 4;
- + if (!(edges & 1) && !(edges & 8) && !_is_visible(coord_def(gc.x - 1, gc.y - 1)))
- + corners |= 8;
- +
- + if (corners)
- + _add_overlay(TILE_LOS_BLEND_CORNER + corners - 1, cell);
- +}
- +
- void pack_cell_overlays(const coord_def &gc, packed_cell *cell)
- {
- if (env.map_knowledge(gc).feat() == DNGN_UNSEEN)
- @@ -499,4 +547,6 @@ void pack_cell_overlays(const coord_def &gc, packed_cell *cell)
- shadow_tile = TILE_DNGN_WALL_SHADOW_DARK;
- _pack_wall_shadows(gc, cell, shadow_tile);
- }
- +
- + _pack_los_blend(gc, cell);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement