Files
whale-town-front-v2/scenes/prefabs/items/WelcomeBoard.gd
2026-07-21 23:07:31 +08:00

35 lines
1.1 KiB
GDScript

extends Area2D
class_name WelcomeBoard
const WELCOME_DIALOG_SCENE: PackedScene = preload("res://scenes/ui/welcome_dialog.tscn")
const WELCOME_DIALOG_NAME: String = "WelcomeDialog"
const INTERACTION_COLLISION_LAYER: int = 2
const InteractionAnchorUtil = preload("res://_Core/utils/InteractionAnchor.gd")
func _ready() -> void:
collision_layer = INTERACTION_COLLISION_LAYER
collision_mask = 0
add_to_group("whaletown_interactable")
func get_interaction_actions(player: Node2D) -> Array[Dictionary]:
var anchor_position: Vector2 = InteractionAnchorUtil.get_position(self)
var distance: float = anchor_position.distance_to(player.global_position)
if distance > 150.0:
return []
return [{
"id": "welcome_board:%s" % get_instance_id(),
"title": "查看新人引导",
"distance": distance,
"priority": 35,
"callback": Callable(self, "interact"),
}]
func interact() -> void:
var root: Window = get_tree().root
if root.has_node(WELCOME_DIALOG_NAME):
return
var dialog := WELCOME_DIALOG_SCENE.instantiate()
dialog.name = WELCOME_DIALOG_NAME
root.add_child(dialog)