class_name FogRenderer
extends Node2D

## Renders a fog/cave texture over every tile inside the map's bounding rect
## that is not part of any room. Future: drive visibility from map state.

## Fog tile region in aux_terrain.BMP
const FOG_RECT := Rect2(53, 53, 100, 100)

@export var atlas_texture: Texture2D

var _fog_tiles: PackedVector2Array = []


func draw_fog_for_layout(map_layout: MapLayout) -> void:
	_fog_tiles.clear()
	if not map_layout or not atlas_texture:
		queue_redraw()
		return
	for y in map_layout.size.y:
		for x in map_layout.size.x:
			var tile := Vector2i(x, y)
			if map_layout.is_tile_valid(tile):
				continue
			_fog_tiles.append(Vector2(tile) * BattleMapHelper.TILE_SIZE)
	queue_redraw()


func _draw() -> void:
	if not atlas_texture:
		return
	var dest_size := Vector2(BattleMapHelper.TILE_SIZE, BattleMapHelper.TILE_SIZE)
	for pos in _fog_tiles:
		draw_texture_rect_region(
			atlas_texture,
			Rect2(pos, dest_size),
			FOG_RECT,
		)
