extends Area2D class_name DatawhaleHonorBoard const RANKING_PANEL_SCENE: PackedScene = preload("res://scenes/ui/datawhale_honor_ranking_panel.tscn") const RANKING_PANEL_NAME: String = "DatawhaleHonorRankingPanel" 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": "honor_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(RANKING_PANEL_NAME): return var panel := RANKING_PANEL_SCENE.instantiate() panel.name = RANKING_PANEL_NAME root.add_child(panel)