class_name PlayerHand extends Node3D @export var card_width: float = 2.35 ## Distance cards will be apart when there is a small amount of them @export var card_distance_max: float = 0.8 ## Distance cards will be apart when there is a large amount of them @export var card_distance_min: float = 0.32 ## How many test cards to add @export_range(0, 20) var test_card_count: int = 0 @export var card_scene: PackedScene @export_range(0, 20, 0.1, "radians_as_degrees") var card_angle: float func _ready() -> void: _arrange_cards() for i in test_card_count: var card: PlayingCard = card_scene.instantiate() card.card_clicked.connect(_on_card_clicked) add_card(card) await get_tree().create_timer(0.24).timeout func add_card(card: PlayingCard) -> void: self.add_child(card) _arrange_cards() func remove_card(card: PlayingCard) -> void: self.remove_child(card) _arrange_cards() func _arrange_cards() -> void: var cards = self.get_children() # Only arrange cards if there are any! if cards.size() > 0: var card_distance: float = _get_card_distance(cards.size() - 1) print(card_distance) var desired_width: float = (card_distance * (cards.size() - 1)) var card_position = -desired_width / 2.0 for card in cards: #card.position.x = card_position card.move_to(card_position) card_position += card_distance card.rotation.y = card_angle func _get_card_distance(card_count: int) -> float: return card_distance_min + ((card_distance_max - card_distance_min) * (1.0 - (float(card_count) / 19.0))) func _on_card_clicked(playing_card: PlayingCard) -> void: pass