diff options
Diffstat (limited to 'scripts/leaderboard.gd')
-rw-r--r-- | scripts/leaderboard.gd | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/scripts/leaderboard.gd b/scripts/leaderboard.gd new file mode 100644 index 0000000..0373e44 --- /dev/null +++ b/scripts/leaderboard.gd @@ -0,0 +1,66 @@ +extends Control + +var viewing : bool + +func _ready(): + if get_parent().name == "Menu": + viewing = true + $Control/HBoxContainer/RestartButton.visible = false + $Control/Label.visible = false + $Control/LineEdit.visible = false + $Control/Button.visible = false + else: + $Control/HBoxContainer.visible = false + $Control/LineEdit.grab_focus() + if !global_variables.player_name.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 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.empty(): + $Control/LineEdit.release_focus() + $Control/LineEdit.focus_mode = FOCUS_NONE + $Control/LineEdit.editable = false + $Control/Button.visible = false + $Control/HBoxContainer.visible = true + global_variables.player_name = new_text + update_leaderboard() + refresh_menu() + + +func update_leaderboard(): + for i in range(10): + 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 + +func _on_QuitButton_pressed(): + if viewing: + queue_free() + else: + # warning-ignore:return_value_discarded + get_tree().change_scene("res://scenes/mainmenu.tscn") + get_tree().paused = false + global_variables.reset_variables() + +func _on_RestartButton_pressed(): + # warning-ignore:return_value_discarded + get_tree().reload_current_scene() + get_tree().paused = false + global_variables.reset_variables() + +func _on_Button_pressed(): + _on_LineEdit_text_entered($Control/LineEdit.text) |