39 lines
1.1 KiB
GDScript
39 lines
1.1 KiB
GDScript
class_name CardNode
|
|
extends Control
|
|
|
|
signal card_clicked(card_node: CardNode)
|
|
signal card_double_clicked(card_node: CardNode)
|
|
|
|
var card_data: Card = null
|
|
var is_selected: bool = false
|
|
|
|
@onready var texture_rect: TextureRect = $TextureRect
|
|
@onready var label: Label = $Label
|
|
|
|
func setup(card: Card) -> void:
|
|
card_data = card
|
|
update_display()
|
|
|
|
func update_display() -> void:
|
|
if card_data == null:
|
|
return
|
|
var suits := ["S", "H", "C", "D", "SJ", "BJ"]
|
|
var ranks := ["", "", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "SJ", "BJ"]
|
|
var suit := card_data.suit()
|
|
var rank := card_data.rank()
|
|
if rank < ranks.size() and suit < suits.size() and label:
|
|
label.text = "%s %s" % [suits[suit], ranks[rank]]
|
|
modulate = Color.WHITE if not is_selected else Color(1.2, 1.2, 0.8)
|
|
|
|
func set_selected(sel: bool) -> void:
|
|
is_selected = sel
|
|
update_display()
|
|
|
|
func _on_gui_input(event: InputEvent) -> void:
|
|
if event is InputEventMouseButton:
|
|
if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
|
|
if event.double_click:
|
|
card_double_clicked.emit(self)
|
|
else:
|
|
card_clicked.emit(self)
|