Advertisement
Guest User

Untitled

a guest
Aug 30th, 2015
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 3.06 KB | None | 0 0
  1. diff --git a/crawl-ref/source/rltiles/dc-wall.txt b/crawl-ref/source/rltiles/dc-wall.txt
  2. index 49187ce..bd099cc 100644
  3. --- a/crawl-ref/source/rltiles/dc-wall.txt
  4. +++ b/crawl-ref/source/rltiles/dc-wall.txt
  5. @@ -1577,3 +1577,37 @@ shadow_e_top_darker
  6.  
  7.  %sdir dngn/vaults
  8.  brick_dark_leak WALL_BRICK_DARK_LEAK
  9. +
  10. +#los blend
  11. +%sdir dngn/losblend
  12. +los_blend_edge_1 LOS_BLEND_EDGE
  13. +los_blend_edge_2
  14. +los_blend_edge_3
  15. +los_blend_edge_4
  16. +los_blend_edge_5
  17. +los_blend_edge_6
  18. +los_blend_edge_7
  19. +los_blend_edge_8
  20. +los_blend_edge_9
  21. +los_blend_edge_10
  22. +los_blend_edge_11
  23. +los_blend_edge_12
  24. +los_blend_edge_13
  25. +los_blend_edge_14
  26. +los_blend_edge_15
  27. +
  28. +los_blend_corner_1 LOS_BLEND_CORNER
  29. +los_blend_corner_2
  30. +los_blend_corner_3
  31. +los_blend_corner_4
  32. +los_blend_corner_5
  33. +los_blend_corner_6
  34. +los_blend_corner_7
  35. +los_blend_corner_8
  36. +los_blend_corner_9
  37. +los_blend_corner_10
  38. +los_blend_corner_11
  39. +los_blend_corner_12
  40. +los_blend_corner_13
  41. +los_blend_corner_14
  42. +los_blend_corner_15
  43. diff --git a/crawl-ref/source/tilecell.cc b/crawl-ref/source/tilecell.cc
  44. index 0c9a84e..42cadee 100644
  45. --- a/crawl-ref/source/tilecell.cc
  46. +++ b/crawl-ref/source/tilecell.cc
  47. @@ -476,6 +476,54 @@ static bool _is_seen_slimy_wall(const coord_def& gc)
  48.      return feat == DNGN_SLIMY_WALL;
  49.  }
  50.  
  51. +static bool _is_visible(const coord_def& gc)
  52. +{
  53. +    if (!map_bounds(gc))
  54. +        return false;
  55. +    return env.map_knowledge(gc).visible();
  56. +}
  57. +
  58. +static void _pack_los_blend(const coord_def &gc, packed_cell *cell)
  59. +{
  60. +    /*
  61. +     * edges:
  62. +     * 1: north, 2: east,  4: south, 8: west
  63. +     * corners:
  64. +     * 1: north-east, 2: south-east, 4: south-west, 8: north-west
  65. +     */
  66. +     if (!_is_visible(coord_def(gc.x, gc.y)))
  67. +        return;
  68. +
  69. +    int edges = 0;
  70. +    int corners = 0;
  71. +
  72. +    // orthogonals
  73. +    if (!_is_visible(coord_def(gc.x, gc.y - 1)))
  74. +        edges |= 1;
  75. +    if (!_is_visible(coord_def(gc.x + 1, gc.y)))
  76. +        edges |= 2;
  77. +    if (!_is_visible(coord_def(gc.x, gc.y + 1)))
  78. +        edges |= 4;
  79. +    if (!_is_visible(coord_def(gc.x - 1, gc.y)))
  80. +        edges |= 8;
  81. +
  82. +    if (edges)
  83. +        _add_overlay(TILE_LOS_BLEND_EDGE + edges - 1, cell);
  84. +
  85. +    // corners
  86. +    if (!(edges & 1) && !(edges & 2) && !_is_visible(coord_def(gc.x + 1, gc.y - 1)))
  87. +        corners |= 1;
  88. +    if (!(edges & 2) && !(edges & 4) && !_is_visible(coord_def(gc.x + 1, gc.y + 1)))
  89. +        corners |= 2;
  90. +    if (!(edges & 4) && !(edges & 8) && !_is_visible(coord_def(gc.x - 1, gc.y + 1)))
  91. +        corners |= 4;
  92. +    if (!(edges & 1) && !(edges & 8) && !_is_visible(coord_def(gc.x - 1, gc.y - 1)))
  93. +        corners |= 8;
  94. +
  95. +    if (corners)
  96. +        _add_overlay(TILE_LOS_BLEND_CORNER + corners - 1, cell);
  97. +}
  98. +
  99.  void pack_cell_overlays(const coord_def &gc, packed_cell *cell)
  100.  {
  101.      if (env.map_knowledge(gc).feat() == DNGN_UNSEEN)
  102. @@ -499,4 +547,6 @@ void pack_cell_overlays(const coord_def &gc, packed_cell *cell)
  103.              shadow_tile = TILE_DNGN_WALL_SHADOW_DARK;
  104.          _pack_wall_shadows(gc, cell, shadow_tile);
  105.      }
  106. +
  107. +    _pack_los_blend(gc, cell);
  108.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement