necra-prototypes/map/prototype_map.gd
Antonio Dell'Annunziata 2cb41beef2
All checks were successful
/ test (push) Successful in 2s
Add choices to dialogs
2025-03-28 07:34:57 +01:00

53 lines
1.5 KiB
GDScript

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():
for point in shown_points:
_get_map_point(point).is_shown_on_map = true
func _on_map_point_clicked():
if not $MapPoint2.is_shown_on_map:
_trigger_dialog(0, [1])
func _on_map_point_2_clicked():
if not $MapPoint3.is_shown_on_map:
_trigger_dialog(1, [2,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, map_points_to_show: Array[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, map_points_to_show))
dialog_triggered.emit(dialog_map)
func _show_map_point(choice_selected: String, map_point_number: int, map_points_to_show: Array[int]):
if choice_selected == "Go back" or map_points_to_show.is_empty(): return
for point in map_points_to_show:
_get_map_point(point).is_shown_on_map = true
shown_points.append_array(map_points_to_show)
func _get_map_point(map_point_number: int) -> MapPoint:
return get_node("MapPoint%s"% (map_point_number+1)) as MapPoint
func _on_close_map_button_pressed():
map_closed.emit()