class_name PrototypeMap extends Node2D signal dialog_triggered(dialog_map: DialogMap) signal shown_points_changed(new_shown_points: Array[int]) signal map_closed const DIALOG_MAP = preload("res://dialog/dialog_map.tscn") var shown_points: Array[int]: set(new_value): shown_points = new_value shown_points_changed.emit(shown_points) func _ready(): if 0 in shown_points: $MapPoint.is_shown_on_map = true if 1 in shown_points: $MapPoint2.is_shown_on_map = true if 2 in shown_points: $MapPoint3.is_shown_on_map = true if 3 in shown_points: $MapPoint4.is_shown_on_map = true func _on_map_point_clicked(): if not $MapPoint2.is_shown_on_map: _trigger_dialog(0) shown_points.append(1) func _on_map_point_2_clicked(): if not $MapPoint3.is_shown_on_map: _trigger_dialog(1) shown_points.append(2) shown_points.append(3) func _on_map_point_3_clicked(): _trigger_dialog(2) func _on_map_point_4_clicked(): _trigger_dialog(3) func _trigger_dialog(map_point_number: int): var dialog_map: DialogMap = DIALOG_MAP.instantiate() dialog_map.map_point_number = map_point_number dialog_map.dialog_finished.connect(_show_map_point.bind(map_point_number)) dialog_triggered.emit(dialog_map) func _show_map_point(map_point_number): print("Hi", map_point_number) match map_point_number: 0: $MapPoint2.is_shown_on_map = true 1: $MapPoint3.is_shown_on_map = true $MapPoint4.is_shown_on_map = true func _on_close_map_button_pressed(): map_closed.emit()