fix: add class_name to HandArea and CardNode, fix type inference in training_room

This commit is contained in:
xiaji
2026-05-29 20:57:37 +08:00
parent 8337a37dfe
commit 3573cc66b6
3 changed files with 27 additions and 25 deletions

View File

@@ -1,3 +1,4 @@
class_name CardNode
extends Control extends Control
signal card_clicked(card_node) signal card_clicked(card_node)

View File

@@ -1,3 +1,4 @@
class_name HandArea
extends HBoxContainer extends HBoxContainer
signal cards_selected(selected: Array) signal cards_selected(selected: Array)
@@ -5,38 +6,38 @@ signal hint_requested()
signal play_requested() signal play_requested()
signal pass_requested() signal pass_requested()
var card_nodes: Array = [] var card_nodes: Array[CardNode] = []
var selected_cards: Array = [] var selected_cards: Array = []
const CARD_SCENE := preload("res://src/ui/components/card_node.tscn") const CARD_SCENE := preload("res://src/ui/components/card_node.tscn")
var training_controller: TrainingController = null var training_controller: TrainingController = null
func update_hand(hand: Array) -> void: func update_hand(hand: Array) -> void:
for cn in card_nodes: for cn in card_nodes:
cn.queue_free() cn.queue_free()
card_nodes.clear() card_nodes.clear()
selected_cards.clear() selected_cards.clear()
for c in hand: for c in hand:
var node: Control = CARD_SCENE.instantiate() var node: CardNode = CARD_SCENE.instantiate()
node.setup(c) node.setup(c)
node.card_clicked.connect(_on_card_clicked) node.card_clicked.connect(_on_card_clicked)
node.card_double_clicked.connect(_on_card_double_clicked) node.card_double_clicked.connect(_on_card_double_clicked)
add_child(node) add_child(node)
card_nodes.append(node) card_nodes.append(node)
func _on_card_clicked(card_node: Node) -> void: func _on_card_clicked(card_node: CardNode) -> void:
card_node.set_selected(not card_node.is_selected) card_node.set_selected(not card_node.is_selected)
if card_node.is_selected: if card_node.is_selected:
selected_cards.append(card_node.card_data) selected_cards.append(card_node.card_data)
else: else:
selected_cards.erase(card_node.card_data) selected_cards.erase(card_node.card_data)
cards_selected.emit(selected_cards) cards_selected.emit(selected_cards)
func _on_card_double_clicked(card_node: Node) -> void: func _on_card_double_clicked(card_node: CardNode) -> void:
if not card_node.is_selected: if not card_node.is_selected:
card_node.set_selected(true) card_node.set_selected(true)
selected_cards.append(card_node.card_data) selected_cards.append(card_node.card_data)
play_requested.emit() play_requested.emit()
func _on_hint_pressed() -> void: func _on_hint_pressed() -> void:
hint_requested.emit() hint_requested.emit()

View File

@@ -2,7 +2,7 @@ extends Control
var controller: TrainingController var controller: TrainingController
@onready var hand_area: Node = $HandArea @onready var hand_area: HandArea = $HandArea
@onready var play_button: Button = $Buttons/PlayButton @onready var play_button: Button = $Buttons/PlayButton
@onready var pass_button: Button = $Buttons/PassButton @onready var pass_button: Button = $Buttons/PassButton
@onready var hint_button: Button = $Buttons/HintButton @onready var hint_button: Button = $Buttons/HintButton