extends Control var explored_rooms: Array = [] var current_room_id: String = "" var cell_size: Vector2 = Vector2(20, 20) var padding: float = 5.0 func _ready(): # Remove any children if they exist (cleanup from previous implementation) for child in get_children(): child.queue_free() func update_map(new_room_id: String, explored: Array): current_room_id = new_room_id explored_rooms = explored queue_redraw() func _draw(): if current_room_id == "": return var center = size / 2 # Parse current room coordinates to center the map var current_coords = _parse_coords(current_room_id) for room_id in explored_rooms: var coords = _parse_coords(room_id) var rel_x = coords.x - current_coords.x var rel_y = coords.y - current_coords.y # Calculate position relative to center # (rel_x, rel_y) * (cell_size + padding) gives the offset var offset = Vector2(rel_x, rel_y) * (cell_size + Vector2(padding, padding)) var rect_pos = center + offset - cell_size / 2 var rect = Rect2(rect_pos, cell_size) var color = Color.LIGHT_GRAY if room_id == current_room_id: color = Color.GREEN draw_rect(rect, color, true) draw_rect(rect, Color.BLACK, false, 1.0) # Border func _parse_coords(id: String) -> Vector2: var parts = id.split("_") if parts.size() >= 3: return Vector2(int(parts[1]), int(parts[2])) return Vector2.ZERO