summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorLogan <logan@cflip.net>2023-02-15 04:32:17 -0700
committerLogan <logan@cflip.net>2023-02-15 04:32:17 -0700
commitf30fbd753b23be1f71b4bada5e7063ac00215c33 (patch)
treeb44a6ad3e33daa6895e3ee26cfa7ff084495311e /scripts
parent5e6d1b25330c8246dba43dbc232e8787b40a0ab4 (diff)
Added leaderboard and various tweaks
Diffstat (limited to 'scripts')
-rw-r--r--scripts/global_variables.gd14
-rw-r--r--scripts/leaderboard.gd66
-rw-r--r--scripts/mainmenu.gd3
-rw-r--r--scripts/optionsmenu.gd8
-rw-r--r--scripts/pausemenu.gd13
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():