extends Area class_name Stack signal hover() signal blur() signal card_picked(card) export var title: String export var zoneName: String export var faceDown: bool export var editable: bool export var offset: float export var showCounter: bool var clicked: bool = false var cards: Array = [] onready var stackCountLabel := $StackCount func _ready(): set_title(title) func set_title(title: String): $StackNameViewport/Label.text = title func _mouse_entered(): emit_signal("hover") func _mouse_exited(): emit_signal("blur") func push_card(card): # Flip card is stack has face-down cards if faceDown: card.flipped = true card.animation.queue("flip-fast") # Disable collider for top card if cards.size() > 0: cards[0].disableInput() cards.push_front(card) reorder_cards() func pop_card() -> Card: if cards.size() < 1: return null var card := cards.pop_front() as Card reorder_cards() if cards.size() > 0: cards[0].enableInput() if faceDown: card.flipped = false return card const CARD_DISTANCE = 0.005 func reorder_cards(): var i := 0 var count := cards.size() for card in cards: card.translation.y = offset+(count-i)*CARD_DISTANCE i += 1 $StackCountViewport/Label.text = str(count) if showCounter and count > 1: stackCountLabel.translation.y = offset+0.11+count*CARD_DISTANCE else: stackCountLabel.translation.y = -1