diff options
-rw-r--r-- | scenes/leaderboard.tscn | 12 | ||||
-rw-r--r-- | scripts/leaderboard.gd | 60 |
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: |