summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLogan <logan@cflip.net>2023-04-30 18:52:55 -0600
committerLogan <logan@cflip.net>2023-04-30 18:52:55 -0600
commitdce598f66e1334698fcb38074fbd80457301ff07 (patch)
tree2aaa86fd44a2ce81297f3dadc8705de58a4844c2
parentf4381c59c1d239400fbd787fe3a5247f0c535460 (diff)
Add animation to leaderboard
-rw-r--r--scenes/leaderboard.tscn12
-rw-r--r--scripts/leaderboard.gd60
2 files changed, 45 insertions, 27 deletions
diff --git a/scenes/leaderboard.tscn b/scenes/leaderboard.tscn
index ee9e1a4..b4e1910 100644
--- a/scenes/leaderboard.tscn
+++ b/scenes/leaderboard.tscn
@@ -245,7 +245,7 @@ text = "Your Score:
00"
horizontal_alignment = 1
-[node name="HBoxContainer" type="HBoxContainer" parent="Control"]
+[node name="ButtHBox" type="HBoxContainer" parent="Control"]
layout_mode = 0
anchor_left = 1.0
anchor_top = 0.5
@@ -256,14 +256,14 @@ offset_top = 40.0
offset_right = -4.0
offset_bottom = 56.0
-[node name="RestartButton" type="TextureButton" parent="Control/HBoxContainer"]
+[node name="RestartButton" type="TextureButton" parent="Control/ButtHBox"]
layout_mode = 2
size_flags_horizontal = 10
focus_mode = 0
texture_normal = ExtResource("3")
texture_hover = ExtResource("5")
-[node name="QuitButton" type="TextureButton" parent="Control/HBoxContainer"]
+[node name="QuitButton" type="TextureButton" parent="Control/ButtHBox"]
layout_mode = 2
size_flags_horizontal = 10
focus_mode = 0
@@ -293,7 +293,7 @@ offset_bottom = 119.0
scale = Vector2(0.8, 0.8)
text = "Submit"
-[connection signal="pressed" from="Control/HBoxContainer/RestartButton" to="." method="_on_RestartButton_pressed"]
-[connection signal="pressed" from="Control/HBoxContainer/QuitButton" to="." method="_on_QuitButton_pressed"]
-[connection signal="text_entered" from="Control/LineEdit" to="." method="_on_LineEdit_text_entered"]
+[connection signal="pressed" from="Control/ButtHBox/RestartButton" to="." method="_on_RestartButton_pressed"]
+[connection signal="pressed" from="Control/ButtHBox/QuitButton" to="." method="_on_QuitButton_pressed"]
+[connection signal="text_submitted" from="Control/LineEdit" to="." method="_on_LineEdit_text_entered"]
[connection signal="pressed" from="Control/Button" to="." method="_on_Button_pressed"]
diff --git a/scripts/leaderboard.gd b/scripts/leaderboard.gd
index 279d3c6..d58623d 100644
--- a/scripts/leaderboard.gd
+++ b/scripts/leaderboard.gd
@@ -1,16 +1,17 @@
extends Control
var viewing : bool
+var animation_length = 0.5
func _ready():
if get_parent().name == "Menu":
viewing = true
- $Control/HBoxContainer/RestartButton.visible = false
+ $Control/ButtHBox/RestartButton.visible = false
$Control/Label.visible = false
$Control/LineEdit.visible = false
$Control/Button.visible = false
else:
- $Control/HBoxContainer.visible = false
+ $Control/ButtHBox.visible = false
$Control/LineEdit.grab_focus()
if !global_variables.player_name.is_empty():
$Control/LineEdit.text = global_variables.player_name
@@ -18,34 +19,51 @@ func _ready():
$Control/Label.text = "Your score:\n" + str(global_variables.score)
refresh_menu()
-func refresh_menu():
- for i in range(10):
- var label_name = "GridContainer/NamePanel" + str(i + 1) + "/Name"
- var label_score = "GridContainer/ScorePanel" + str(i + 1) + "/Score"
- get_node(label_name).text = global_variables.leaderboard[i][0]
- get_node(label_score).text = str(global_variables.leaderboard[i][1])
-
func _on_LineEdit_text_entered(new_text):
if !new_text.is_empty():
$Control/LineEdit.release_focus()
$Control/LineEdit.focus_mode = FOCUS_NONE
$Control/LineEdit.editable = false
$Control/Button.visible = false
- $Control/HBoxContainer.visible = true
+ $Control/ButtHBox.visible = true
global_variables.player_name = new_text
- update_leaderboard()
- refresh_menu()
-
+ var placement = get_placement()
+ update_leaderboard(placement)
+ leaderboard_transition_animation(placement)
-func update_leaderboard():
- for i in range(10):
+func get_placement():
+ for i in range(global_variables.leaderboard.size()):
if global_variables.score >= global_variables.leaderboard[i][1]:
- for x in range(global_variables.leaderboard.size() - 2, i - 1, -1):
- global_variables.leaderboard[x+1][0] = global_variables.leaderboard[x][0]
- global_variables.leaderboard[x+1][1] = global_variables.leaderboard[x][1]
- global_variables.leaderboard[i][0] = global_variables.player_name
- global_variables.leaderboard[i][1] = global_variables.score
- break
+ return i
+
+func update_leaderboard(placement):
+ for x in range(global_variables.leaderboard.size() - 2, placement - 1, -1):
+ global_variables.leaderboard[x+1][0] = global_variables.leaderboard[x][0]
+ global_variables.leaderboard[x+1][1] = global_variables.leaderboard[x][1]
+ global_variables.leaderboard[placement][0] = global_variables.player_name
+ global_variables.leaderboard[placement][1] = global_variables.score
+
+func leaderboard_transition_animation(placement):
+ for x in range(global_variables.leaderboard.size(), placement, -1):
+ for y in ["NamePanel", "ScorePanel"]:
+ var panel = "GridContainer/" + y + str(x)
+ var overlay = ColorRect.new()
+ overlay.set_size(get_node(panel).size * $GridContainer.scale)
+ overlay.set_position(get_node(panel).global_position)
+ overlay.color = Color(1, 1, 1, 0)
+ add_child(overlay)
+ var tween = create_tween()
+ tween.tween_property(get_node(overlay.get_path()), "color", Color(1, 1, 1, 1), animation_length)
+ tween.tween_property(get_node(overlay.get_path()), "color", Color(1, 1, 1, 0), animation_length)
+ await get_tree().create_timer(animation_length).timeout
+ refresh_menu()
+
+func refresh_menu():
+ for i in range(10):
+ var label_name = "GridContainer/NamePanel" + str(i + 1) + "/Name"
+ var label_score = "GridContainer/ScorePanel" + str(i + 1) + "/Score"
+ get_node(label_name).text = global_variables.leaderboard[i][0]
+ get_node(label_score).text = str(global_variables.leaderboard[i][1])
func _on_QuitButton_pressed():
if viewing: