extends Control var viewing : bool var animation_length = 0.5 func _ready(): if get_parent().name == "Menu": viewing = true $Control/ButtHBox/RestartButton.visible = false $Control/Label.visible = false $Control/LineEdit.visible = false $Control/Button.visible = false else: $Control/ButtHBox.visible = false $Control/LineEdit.grab_focus() if !global_variables.player_name.is_empty(): $Control/LineEdit.text = global_variables.player_name $Control/LineEdit.select_all() $Control/Label.text = "Your score:\n" + str(global_variables.score) refresh_menu() 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/ButtHBox.visible = true global_variables.player_name = new_text var placement = get_placement() update_leaderboard(placement) leaderboard_transition_animation(placement) func get_placement(): for i in range(global_variables.leaderboard.size()): if global_variables.score >= global_variables.leaderboard[i][1]: 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: queue_free() else: get_tree().change_scene_to_file("res://scenes/mainmenu.tscn") get_tree().paused = false global_variables.reset_variables() func _on_RestartButton_pressed(): get_tree().reload_current_scene() get_tree().paused = false global_variables.reset_variables() func _on_Button_pressed(): _on_LineEdit_text_entered($Control/LineEdit.text)