diff --git a/src/ui/scenes/training_room.gd b/src/ui/scenes/training_room.gd index 4e467c9..6f2152e 100644 --- a/src/ui/scenes/training_room.gd +++ b/src/ui/scenes/training_room.gd @@ -1,6 +1,10 @@ extends Control const CARD_NODE_SCENE := preload("res://src/ui/components/card_node.tscn") +const FLIGHT_DURATION := 0.30 +const COMMENTARY_FADE_IN := 0.20 +const COMMENTARY_HOLD := 0.60 +const COMMENTARY_FADE_OUT := 0.30 var controller: TrainingController var table_cards: Array[CardNode] = [] @@ -12,6 +16,8 @@ var table_cards: Array[CardNode] = [] @onready var status_label: Label = $StatusLabel @onready var guide_label: Label = $GuideLabel @onready var table_label: Label = $TableLabel +@onready var commentary_label: Label = $CommentaryLabel +@onready var table_card_root: Control = $TableCardRoot func _ready() -> void: if play_button: @@ -124,6 +130,24 @@ func _clear_table_cards() -> void: cn.queue_free() table_cards.clear() +func _show_commentary(player_idx: int, play: HandEvaluator.EvaluatedPlay) -> void: + if not commentary_label: + return + var pname := controller.game_state.player_names[player_idx] + var type_name := _get_type_name(play.type) + commentary_label.text = "%s 出了 %s(%d张,主阶=%d)" \ + % [pname, type_name, play.cards.size(), play.primary_rank] + commentary_label.modulate.a = 0.0 + var t := create_tween() + t.tween_property(commentary_label, "modulate:a", 1.0, COMMENTARY_FADE_IN) + + +func _find_hand_node(card: Card) -> CardNode: + for cn in hand_area.card_nodes: + if cn.card_data != null and cn.card_data.card_id == card.card_id: + return cn + return null + func _get_error_message(error_code: int) -> String: match error_code: 1: return "无效的牌型组合"