summaryrefslogtreecommitdiff
path: root/scripts/leaderboard.gd
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/leaderboard.gd')
-rw-r--r--scripts/leaderboard.gd66
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)