59 lines
1.5 KiB
GDScript
59 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():
|
|
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()
|