29 lines
916 B
GDScript
29 lines
916 B
GDScript
@tool
|
|
extends Control
|
|
|
|
const CARD_SCENE = preload("uid://dl3ve6prnn2m6")
|
|
|
|
@export var radius: float = 10.
|
|
@export_range(0,360,0.01,"or_greater","radians_as_degrees") var arch: float = PI/6
|
|
@export var rotate_cards: bool = true
|
|
|
|
func _ready() -> void:
|
|
GameplaySignalBus.draw_card.connect(draw_card)
|
|
|
|
func draw_card(card_resource: CardResource):
|
|
var card: Card = CARD_SCENE.instantiate()
|
|
|
|
card.card_resource = card_resource
|
|
add_child(card)
|
|
|
|
func _process(_delta: float) -> void:
|
|
for i in range(get_child_count()):
|
|
var child: Card = get_child(i)
|
|
if child.top_level:
|
|
continue
|
|
|
|
var angle: float = -arch+2*arch*((float(i+0.5))/get_child_count())
|
|
var pointing_up: float = angle - PI/2
|
|
child.position = lerp(child.position,get_combined_pivot_offset()+Vector2.from_angle(pointing_up) * radius-child.get_combined_pivot_offset(),0.25)
|
|
if rotate_cards:
|
|
child.rotation = lerp(child.rotation,angle,0.25)
|