nsomva/ui/hand.gd
2026-03-04 19:20:17 +05:00

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)