extends Node2D var map_size: Vector2i = Vector2i.ZERO var tile_size: int = 16 var explored_map: PackedInt32Array = PackedInt32Array() var visible_map: PackedInt32Array = PackedInt32Array() var fog_color_unseen: Color = Color(0, 0, 0, 1.0) var fog_color_seen: Color = Color(0, 0, 0, 0.85) var debug_lines: Array = [] var debug_enabled: bool = false func setup(new_map_size: Vector2i, new_tile_size: int = 16) -> void: map_size = new_map_size tile_size = new_tile_size func set_maps(new_explored_map: PackedInt32Array, new_visible_map: PackedInt32Array) -> void: explored_map = new_explored_map visible_map = new_visible_map queue_redraw() func set_debug_lines(lines: Array, enabled: bool) -> void: debug_lines = lines debug_enabled = enabled queue_redraw() func _draw() -> void: if map_size == Vector2i.ZERO or explored_map.is_empty() or visible_map.is_empty(): return for x in range(map_size.x): for y in range(map_size.y): var idx = x + y * map_size.x if idx >= explored_map.size() or idx >= visible_map.size(): continue var pos = Vector2(x * tile_size, y * tile_size) if visible_map[idx] == 1: continue if explored_map[idx] == 0: draw_rect(Rect2(pos, Vector2(tile_size, tile_size)), fog_color_unseen, true) else: draw_rect(Rect2(pos, Vector2(tile_size, tile_size)), fog_color_seen, true) if debug_enabled: for line in debug_lines: if line is Array and line.size() == 2: draw_line(line[0], line[1], Color(0, 1, 0, 0.4), 1.0)