Add tweening to the card arrangement

This commit is contained in:
Sebastian Morr 2020-10-14 00:04:47 +02:00
parent 306e852e73
commit e2679fcec9
5 changed files with 57 additions and 12 deletions

View file

@ -11,7 +11,7 @@ var _home_position = null
func _ready(): func _ready():
set_process_unhandled_input(true) set_process_unhandled_input(true)
_home_position = position position = get_viewport_rect().size
func _process(delta): func _process(delta):
if dragged: if dragged:
@ -39,7 +39,7 @@ func _unhandled_input(event):
else: else:
move_back() move_back()
else: else:
_home_position = get_viewport().get_mouse_position() + drag_offset move_back()
func _mouse_entered(): func _mouse_entered():
hovered = true hovered = true
@ -56,10 +56,10 @@ func move_back():
func buuurn(): func buuurn():
queue_free() queue_free()
$"..".draw_rand_card() #$"..".draw_rand_card()
$"..".arrange_cards()
func dropped_on(other): func dropped_on(other):
#print("I have been dropped on "+str(other.id))
var full_command = "" var full_command = ""
match arg_number: match arg_number:
1: 1:

View file

@ -1,8 +1,19 @@
[gd_scene load_steps=4 format=2] [gd_scene load_steps=5 format=2]
[ext_resource path="res://card.gd" type="Script" id=1] [ext_resource path="res://card.gd" type="Script" id=1]
[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=2] [ext_resource path="res://fonts/default.tres" type="DynamicFont" id=2]
[sub_resource type="StyleBoxFlat" id=2]
bg_color = Color( 0.145098, 0.529412, 0.682353, 1 )
border_color = Color( 0.0627451, 0.141176, 0.176471, 1 )
corner_radius_top_left = 10
corner_radius_top_right = 10
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
shadow_color = Color( 0, 0, 0, 0.392157 )
shadow_size = 4
shadow_offset = Vector2( -2, 2 )
[sub_resource type="RectangleShape2D" id=1] [sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 105.74, 143.46 ) extents = Vector2( 105.74, 143.46 )
@ -11,7 +22,19 @@ extents = Vector2( 105.74, 143.46 )
]] ]]
script = ExtResource( 1 ) script = ExtResource( 1 )
[node name="Panel" type="Panel" parent="."]
margin_left = -105.0
margin_top = -291.0
margin_right = 104.0
margin_bottom = -2.0
mouse_filter = 2
custom_styles/panel = SubResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ColorRect" type="ColorRect" parent="."] [node name="ColorRect" type="ColorRect" parent="."]
visible = false
margin_left = -103.0 margin_left = -103.0
margin_top = -290.336 margin_top = -290.336
margin_right = 103.0 margin_right = 103.0

View file

@ -12,7 +12,6 @@ var cards = [
{"command": 'git reflog expire --expire=now --all; git prune', "arg_number": 0}, {"command": 'git reflog expire --expire=now --all; git prune', "arg_number": 0},
{"command": 'git rebase', "arg_number": 1} {"command": 'git rebase', "arg_number": 1}
] ]
var total_angle = 45
func _ready(): func _ready():
@ -45,18 +44,32 @@ func draw_rand_card():
arrange_cards() arrange_cards()
func arrange_cards(): func arrange_cards():
var t = Timer.new()
t.wait_time = 0.05
add_child(t)
t.start()
yield(t, "timeout")
var amount_cards = get_tree().get_nodes_in_group("cards").size() var amount_cards = get_tree().get_nodes_in_group("cards").size()
var total_angle = 45.0/7*amount_cards
var angle_between_cards = 0 var angle_between_cards = 0
if amount_cards > 1: if amount_cards > 1:
angle_between_cards = total_angle / (amount_cards-1) angle_between_cards = total_angle / (amount_cards-1)
var current_angle = -total_angle/2 var current_angle = -total_angle/2
for card in get_tree().get_nodes_in_group("cards"): for card in get_tree().get_nodes_in_group("cards"):
card.position = Vector2(get_viewport_rect().size.x/2, get_viewport_rect().size.y + 1500) var target_position = Vector2(get_viewport_rect().size.x/2, get_viewport_rect().size.y + 1500)
card.rotation_degrees = current_angle var target_rotation = current_angle
var translation_vec = Vector2(0,-1500).rotated(current_angle/180.0*PI) var translation_vec = Vector2(0,-1500).rotated(current_angle/180.0*PI)
card.position += translation_vec target_position += translation_vec
print(current_angle)
current_angle += angle_between_cards current_angle += angle_between_cards
card._home_position = target_position
var tween = Tween.new()
tween.interpolate_property(card, "position", card.position, target_position, 0.5, Tween.TRANS_CUBIC, Tween.EASE_IN_OUT)
tween.interpolate_property(card, "rotation_degrees", card.rotation_degrees, target_rotation, 0.5, Tween.TRANS_CUBIC, Tween.EASE_IN_OUT)
add_child(tween)
tween.start()
func redraw_all_cards(): func redraw_all_cards():
for card in get_tree().get_nodes_in_group("cards"): for card in get_tree().get_nodes_in_group("cards"):

View file

@ -8,10 +8,18 @@
[node name="Cardgame" type="Node2D"] [node name="Cardgame" type="Node2D"]
script = ExtResource( 4 ) script = ExtResource( 4 )
[node name="ColorRect" type="ColorRect" parent="."]
margin_right = 1922.0
margin_bottom = 1083.0
mouse_filter = 2
color = Color( 0.0823529, 0.0823529, 0.0823529, 1 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Repository" parent="." instance=ExtResource( 3 )] [node name="Repository" parent="." instance=ExtResource( 3 )]
margin_right = 1481.0 margin_right = 1481.0
margin_bottom = 592.0 margin_bottom = 592.0
file_browser_active = false
simplified_view = true simplified_view = true
[node name="DropArea" parent="." instance=ExtResource( 2 )] [node name="DropArea" parent="." instance=ExtResource( 2 )]

View file

@ -37,7 +37,7 @@ __meta__ = {
[node name="TopHalf" type="Control" parent="Rows"] [node name="TopHalf" type="Control" parent="Rows"]
margin_right = 1920.0 margin_right = 1920.0
margin_bottom = 980.0 margin_bottom = 1052.0
size_flags_vertical = 3 size_flags_vertical = 3
[node name="Output" type="RichTextLabel" parent="Rows/TopHalf"] [node name="Output" type="RichTextLabel" parent="Rows/TopHalf"]
@ -65,6 +65,7 @@ __meta__ = {
} }
[node name="VBoxContainer" type="VBoxContainer" parent="Rows"] [node name="VBoxContainer" type="VBoxContainer" parent="Rows"]
visible = false
margin_top = 984.0 margin_top = 984.0
margin_right = 1920.0 margin_right = 1920.0
margin_bottom = 1052.0 margin_bottom = 1052.0