mlpcardgame/Scenes/Components/Stack.gd

53 lines
949 B
GDScript

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
var clicked: bool = false
var cards: Array = []
func _ready():
set_title(title)
func set_title(title: String):
$LabelViewport/Label.text = title
func _mouse_entered():
emit_signal("hover")
func _mouse_exited():
emit_signal("blur")
func push_card(card):
# 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: Card = cards.pop_front()
reorder_cards()
if cards.size() > 0:
cards[0].enableInput()
return card
const CARD_DISTANCE = 0.01
func reorder_cards():
var i := 0
var count := cards.size()
for card in cards:
card.translation.y = offset+(count-i)*CARD_DISTANCE
i += 1