This commit is contained in:
parent
1adf5b5ed7
commit
2200085897
4 changed files with 57 additions and 1 deletions
30
map_point.gd
30
map_point.gd
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue