diff options
author | Logan <logan@cflip.net> | 2023-02-15 04:32:17 -0700 |
---|---|---|
committer | Logan <logan@cflip.net> | 2023-02-15 04:32:17 -0700 |
commit | f30fbd753b23be1f71b4bada5e7063ac00215c33 (patch) | |
tree | b44a6ad3e33daa6895e3ee26cfa7ff084495311e /scripts | |
parent | 5e6d1b25330c8246dba43dbc232e8787b40a0ab4 (diff) |
Added leaderboard and various tweaks
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/global_variables.gd | 14 | ||||
-rw-r--r-- | scripts/leaderboard.gd | 66 | ||||
-rw-r--r-- | scripts/mainmenu.gd | 3 | ||||
-rw-r--r-- | scripts/optionsmenu.gd | 8 | ||||
-rw-r--r-- | scripts/pausemenu.gd | 13 |
5 files changed, 95 insertions, 9 deletions
diff --git a/scripts/global_variables.gd b/scripts/global_variables.gd index 4d01ff5..3205209 100644 --- a/scripts/global_variables.gd +++ b/scripts/global_variables.gd @@ -3,6 +3,20 @@ extends Node var startup : bool var score = 0 var timer_zero = false +var player_name : String + +var leaderboard = { + 0 : ["Logan", 45], + 1 : ["Finley", 40], + 2 : ["Kieran", 35], + 3 : ["Ben", 30], + 4 : ["Lucas", 25], + 5 : ["Rhys", 20], + 6 : ["Justin", 15], + 7 : ["Tucker", 10], + 8 : ["Chayston", 5], + 9 : ["Owen", 4] +} # Audio Settings var volume_master = 0 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) diff --git a/scripts/mainmenu.gd b/scripts/mainmenu.gd index 258760f..c317d22 100644 --- a/scripts/mainmenu.gd +++ b/scripts/mainmenu.gd @@ -7,10 +7,11 @@ func _ready(): $"/root/Audio/AudioStreamPlayer".play() func _on_StartButton_pressed(): + # warning-ignore:return_value_discarded get_tree().change_scene("res://scenes/level.tscn") func _on_LeaderboardButton_pressed(): - pass + add_child(load("res://scenes/leaderboard.tscn").instance()) func _on_HelpButton_pressed(): pass diff --git a/scripts/optionsmenu.gd b/scripts/optionsmenu.gd index 5ed17d8..5376e21 100644 --- a/scripts/optionsmenu.gd +++ b/scripts/optionsmenu.gd @@ -12,9 +12,9 @@ onready var SFXSlider = $Control/VBoxContainer/GridContainer/VolumeSFXContainer/ func _ready(): # When scene is instanced, load the settings from singleton - update_menu(global_variables.volume_master, MasterValue, MasterSlider) - update_menu(global_variables.volume_music, MusicValue, MusicSlider) - update_menu(global_variables.volume_sfx, SFXValue, SFXSlider) + refresh_menu(global_variables.volume_master, MasterValue, MasterSlider) + refresh_menu(global_variables.volume_music, MusicValue, MusicSlider) + refresh_menu(global_variables.volume_sfx, SFXValue, SFXSlider) $Control/VBoxContainer/GridContainer/FullscreenCheckButton.set_pressed_no_signal(OS.window_fullscreen) func _input(event): @@ -49,7 +49,7 @@ func update_audio(value, bus, slider, enabled_var, volume_var, valuelabel): AudioServer.set_bus_mute(bus, false) global_variables.set(enabled_var, false) -func update_menu(value, valuelabel, slider): +func refresh_menu(value, valuelabel, slider): # Converts stored range values back into a percentage value var percentage = ((float(value) - min_vol) / (max_vol - min_vol) ) * 100 valuelabel.text = str(percentage) + "%" diff --git a/scripts/pausemenu.gd b/scripts/pausemenu.gd index d31bee8..bc0d577 100644 --- a/scripts/pausemenu.gd +++ b/scripts/pausemenu.gd @@ -1,13 +1,14 @@ extends Control func _input(event): - if !is_instance_valid(get_node_or_null("OptionsMenu")) && event.is_action_pressed("escape"): + if event.is_action_pressed("escape") && !is_instance_valid(get_node_or_null("OptionsMenu")) && !is_instance_valid(get_node_or_null("Leaderboard")): var pause_toggle = !get_tree().paused get_tree().paused = pause_toggle visible = pause_toggle rename_hover_panel("PAUSED") func _on_RestartButton_pressed(): + # warning-ignore:return_value_discarded get_tree().reload_current_scene() get_tree().paused = false global_variables.reset_variables() @@ -20,9 +21,13 @@ func _on_HelpButton_pressed(): pass func _on_QuitButton_pressed(): - get_tree().change_scene("res://scenes/mainmenu.tscn") - get_tree().paused = false - global_variables.reset_variables() + if global_variables.score >= global_variables.leaderboard[9][1]: + add_child(preload("res://scenes/leaderboard.tscn").instance()) + 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_mouse_entered(): |