Make map points reveal on click
All checks were successful
/ test (push) Successful in 2s

This commit is contained in:
Antonio Dell'Annunziata 2025-03-11 20:29:15 +01:00
parent 1adf5b5ed7
commit 2200085897
No known key found for this signature in database
GPG key ID: 8D2BB16641F06E94
4 changed files with 57 additions and 1 deletions

View file

@ -3,11 +3,24 @@ class_name MapPoint
extends Node2D
signal clicked
@export_tool_button("Update lines", "Callable") var update_lines = queue_redraw
@export var connected_map_points: Array[MapPoint] = []:
set(new_value):
for p in connected_map_points:
p.draw.disconnect(queue_redraw)
p.hidden.disconnect(queue_redraw)
connected_map_points = new_value
for p in connected_map_points:
p.draw.connect(queue_redraw)
p.hidden.connect(queue_redraw)
queue_redraw()
@export var is_shown_on_map: bool = false:
set(new_value):
is_shown_on_map = new_value
_set_point_shown_on_map.call_deferred()
@onready var hover_dot: Sprite2D = $HoverDot
@ -21,6 +34,21 @@ func _on_area_2d_mouse_entered():
func _on_area_2d_mouse_exited():
hover_dot.hide()
func _on_area_2d_input_event(viewport, event, shape_idx):
if event is InputEventMouseButton and event.pressed:
clicked.emit()
func _draw():
if not is_shown_on_map: return
for p in connected_map_points:
draw_dashed_line(Vector2.ZERO, to_local(p.global_position), Color.BLACK)
if p.is_shown_on_map:
draw_dashed_line(Vector2.ZERO, to_local(p.global_position), Color.BLACK)
func _set_point_shown_on_map():
visible = is_shown_on_map
if not $Area2D: return
$Area2D.monitorable = is_shown_on_map
$Area2D.monitoring = is_shown_on_map
$Area2D.input_pickable = is_shown_on_map
queue_redraw()

View file

@ -44,5 +44,6 @@ collision_mask = 1024
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource("CircleShape2D_01fxh")
[connection signal="input_event" from="Area2D" to="." method="_on_area_2d_input_event"]
[connection signal="mouse_entered" from="Area2D" to="." method="_on_area_2d_mouse_entered"]
[connection signal="mouse_exited" from="Area2D" to="." method="_on_area_2d_mouse_exited"]

View file

@ -1 +1,19 @@
extends Node2D
func _on_map_point_clicked():
if not $MapPoint2.is_shown_on_map:
$MapPoint2.is_shown_on_map = true
func _on_map_point_2_clicked():
if not $MapPoint3.is_shown_on_map:
$MapPoint3.is_shown_on_map = true
elif not $MapPoint4.is_shown_on_map:
$MapPoint4.is_shown_on_map = true
func _on_map_point_3_clicked():
pass # Replace with function body.
func _on_map_point_4_clicked():
pass # Replace with function body.

View file

@ -24,13 +24,22 @@ texture = SubResource("GradientTexture2D_fjiih")
[node name="MapPoint" parent="." node_paths=PackedStringArray("connected_map_points") instance=ExtResource("2_mj08v")]
position = Vector2(199, 332)
connected_map_points = [NodePath("../MapPoint2")]
is_shown_on_map = true
[node name="MapPoint2" parent="." node_paths=PackedStringArray("connected_map_points") instance=ExtResource("2_mj08v")]
visible = false
position = Vector2(256, 299)
connected_map_points = [NodePath("../MapPoint3"), NodePath("../MapPoint4")]
[node name="MapPoint3" parent="." instance=ExtResource("2_mj08v")]
visible = false
position = Vector2(315, 278)
[node name="MapPoint4" parent="." instance=ExtResource("2_mj08v")]
visible = false
position = Vector2(320, 330)
[connection signal="clicked" from="MapPoint" to="." method="_on_map_point_clicked"]
[connection signal="clicked" from="MapPoint2" to="." method="_on_map_point_2_clicked"]
[connection signal="clicked" from="MapPoint3" to="." method="_on_map_point_3_clicked"]
[connection signal="clicked" from="MapPoint4" to="." method="_on_map_point_4_clicked"]