fix(ui): render LOS boundary wall tiles through fog without marking explored (#585)
- game_state.gd: add boundary_positions Dictionary field; BoundaryWall tiles from visible_tiles go to boundary_positions instead of visible_positions — rendered by tile_renderer but not tracked as explored fog memory - fog_state.gd: update_from_state() writes VIS_FORWARD for boundary_positions so fog lifts over margin wall content; boundary tiles excluded from exploration step so they don't persist as EXP_EXPLORED when player turns away - tile_renderer.gd: no changes needed — renders all visible_tiles by type, sector-agnostic - test_fog_shader.gd: 4 new tests — boundary excluded from visible_positions, tracked in boundary_positions, cleared each snapshot, fog lifts to VIS_FORWARD Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -161,6 +161,14 @@ func update_from_state() -> void:
|
||||
if px < 0 or py < 0 or px >= _width or py >= _height:
|
||||
continue
|
||||
_vis_bytes[py * _width + px] = VIS_FORWARD
|
||||
# #585: BoundaryWall margin tiles — fog lifts so wall content composites correctly,
|
||||
# but NOT in visible_positions so they don't persist as explored memory.
|
||||
for pos in GameState.boundary_positions:
|
||||
var px: int = pos.x - ox
|
||||
var py: int = pos.y - oy
|
||||
if px < 0 or py < 0 or px >= _width or py >= _height:
|
||||
continue
|
||||
_vis_bytes[py * _width + px] = VIS_FORWARD
|
||||
_vis_image.set_data(_width, _height, false, Image.FORMAT_R8, _vis_bytes)
|
||||
visibility_texture.update(_vis_image)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user