extends Control class_name CardPreview const PREVIEW_WIDTH = 150 const PREVIEW_HEIGHT = 200 const SCREEN_MARGIN = 20 var currentCard: Card = null var previewPanel: PanelContainer func _init() -> void: previewPanel = PanelContainer.new() previewPanel.custom_minimum_size = Vector2(PREVIEW_WIDTH, PREVIEW_HEIGHT) position = Vector2(0, 0) var vbox = VBoxContainer.new() previewPanel.add_child(vbox) var style = StyleBoxFlat.new() style.bg_color = Color(0.2, 0.2, 0.2, 0.9) style.corner_radius_top_left = 10 style.corner_radius_top_right = 10 style.corner_radius_bottom_left = 10 style.corner_radius_bottom_right = 10 previewPanel.add_theme_stylebox_override("panel", style) previewPanel.hide() add_child(previewPanel) func show_card_preview(card: Card) -> void: if card == null: previewPanel.hide() currentCard = null return currentCard = card var vbox = previewPanel.get_child(0) for child in vbox.get_children(): child.queue_free() var nameLabel = Label.new() nameLabel.text = card.cardName nameLabel.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER nameLabel.add_theme_font_size_override("font_size", 18) vbox.add_child(nameLabel) var rankLabel = Label.new() rankLabel.text = "Rank " + str(card.rank) rankLabel.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER vbox.add_child(rankLabel) var idLabel = Label.new() idLabel.text = "ID: " + card.id.substr(card.id.length() - 8, -1) idLabel.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER vbox.add_child(idLabel) var durationLabel = Label.new() durationLabel.text = str(card.remaining_turns) + " turns remaining" durationLabel.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER vbox.add_child(durationLabel) var descLabel = Label.new() descLabel.text = card.description descLabel.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER descLabel.autowrap_mode = TextServer.AUTOWRAP_WORD descLabel.custom_minimum_size = Vector2(PREVIEW_WIDTH - 20, 0) vbox.add_child(descLabel) previewPanel.show() func hide_preview() -> void: previewPanel.hide() currentCard = null func update_moves_remaining(moves: int) -> void: if currentCard == null: return var vbox = previewPanel.get_child(0) var movesLabel = Label.new() movesLabel.text = "Moves remaining this turn: " + str(moves) movesLabel.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER # Remove old moves label if it exists for child in vbox.get_children(): if child.text.begins_with("Moves remaining this turn:"): child.queue_free() vbox.add_child(movesLabel)