summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scenes/mainmenu.tscn1
-rw-r--r--scenes/optionsmenu.tscn143
-rw-r--r--scripts/global_variables.gd8
-rw-r--r--scripts/mainmenu.gd11
-rw-r--r--scripts/optionsmenu.gd41
-rw-r--r--scripts/pausemenu.gd6
6 files changed, 200 insertions, 10 deletions
diff --git a/scenes/mainmenu.tscn b/scenes/mainmenu.tscn
index 3c77f01..f3a0776 100644
--- a/scenes/mainmenu.tscn
+++ b/scenes/mainmenu.tscn
@@ -59,7 +59,6 @@ text = "Help"
margin_top = 78.0
margin_right = 100.0
margin_bottom = 100.0
-disabled = true
text = "Options"
[node name="CreditsButton" type="Button" parent="Control/VBoxContainer"]
diff --git a/scenes/optionsmenu.tscn b/scenes/optionsmenu.tscn
new file mode 100644
index 0000000..bbd813c
--- /dev/null
+++ b/scenes/optionsmenu.tscn
@@ -0,0 +1,143 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://textures/release_indicator.png" type="Texture" id=1]
+[ext_resource path="res://scripts/optionsmenu.gd" type="Script" id=2]
+
+[node name="OptionsMenu" type="Control"]
+margin_right = 214.0
+margin_bottom = 120.0
+script = ExtResource( 2 )
+
+[node name="Panel" type="Panel" parent="."]
+margin_right = 214.0
+margin_bottom = 120.0
+
+[node name="Control" type="Control" parent="."]
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_right = 321.0
+margin_bottom = 180.0
+rect_scale = Vector2( 0.4, 0.4 )
+
+[node name="VBoxContainer" type="VBoxContainer" parent="Control"]
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+margin_left = -165.5
+margin_top = -55.0
+margin_right = 165.5
+margin_bottom = 55.0
+
+[node name="GridContainer" type="GridContainer" parent="Control/VBoxContainer"]
+margin_right = 331.0
+margin_bottom = 84.0
+columns = 2
+
+[node name="FullscreenLabel" type="Label" parent="Control/VBoxContainer/GridContainer"]
+margin_top = 4.0
+margin_right = 127.0
+margin_bottom = 20.0
+text = "Fullscreen"
+
+[node name="FullscreenCheckBox" type="CheckBox" parent="Control/VBoxContainer/GridContainer"]
+margin_left = 307.0
+margin_right = 331.0
+margin_bottom = 24.0
+size_flags_horizontal = 10
+icon_align = 2
+
+[node name="VolumeMasterLabel" type="Label" parent="Control/VBoxContainer/GridContainer"]
+margin_top = 28.0
+margin_right = 104.0
+margin_bottom = 44.0
+size_flags_horizontal = 2
+text = "Master Volume"
+
+[node name="VolumeMasterContainer" type="HBoxContainer" parent="Control/VBoxContainer/GridContainer"]
+margin_left = 131.0
+margin_top = 28.0
+margin_right = 331.0
+margin_bottom = 44.0
+rect_min_size = Vector2( 200, 0 )
+
+[node name="VolumeMasterSlider" type="HSlider" parent="Control/VBoxContainer/GridContainer/VolumeMasterContainer"]
+margin_right = 150.0
+margin_bottom = 16.0
+rect_min_size = Vector2( 150, 0 )
+custom_icons/grabber_highlight = ExtResource( 1 )
+custom_icons/grabber = ExtResource( 1 )
+value = 50.0
+
+[node name="VolumeMasterValue" type="Label" parent="Control/VBoxContainer/GridContainer/VolumeMasterContainer"]
+margin_left = 168.0
+margin_right = 200.0
+margin_bottom = 16.0
+size_flags_horizontal = 10
+text = "100%"
+
+[node name="VolumeMusicLabel" type="Label" parent="Control/VBoxContainer/GridContainer"]
+margin_top = 48.0
+margin_right = 127.0
+margin_bottom = 64.0
+text = "Music Volume"
+
+[node name="VolumeMusicContainer" type="HBoxContainer" parent="Control/VBoxContainer/GridContainer"]
+margin_left = 131.0
+margin_top = 48.0
+margin_right = 331.0
+margin_bottom = 64.0
+
+[node name="VolumeMusicSlider" type="HSlider" parent="Control/VBoxContainer/GridContainer/VolumeMusicContainer"]
+margin_right = 150.0
+margin_bottom = 16.0
+rect_min_size = Vector2( 150, 0 )
+custom_icons/grabber_highlight = ExtResource( 1 )
+custom_icons/grabber = ExtResource( 1 )
+value = 50.0
+
+[node name="VolumeMusicValue" type="Label" parent="Control/VBoxContainer/GridContainer/VolumeMusicContainer"]
+margin_left = 168.0
+margin_right = 200.0
+margin_bottom = 16.0
+size_flags_horizontal = 10
+text = "100%"
+
+[node name="VolumeSFXLabel" type="Label" parent="Control/VBoxContainer/GridContainer"]
+margin_top = 68.0
+margin_right = 127.0
+margin_bottom = 84.0
+text = "SFX Volume"
+
+[node name="VolumeSFXContainer" type="HBoxContainer" parent="Control/VBoxContainer/GridContainer"]
+margin_left = 131.0
+margin_top = 68.0
+margin_right = 331.0
+margin_bottom = 84.0
+
+[node name="VolumeSFXSlider" type="HSlider" parent="Control/VBoxContainer/GridContainer/VolumeSFXContainer"]
+margin_right = 150.0
+margin_bottom = 16.0
+rect_min_size = Vector2( 150, 0 )
+custom_icons/grabber_highlight = ExtResource( 1 )
+custom_icons/grabber = ExtResource( 1 )
+value = 50.0
+
+[node name="VolumeSFXValue" type="Label" parent="Control/VBoxContainer/GridContainer/VolumeSFXContainer"]
+margin_left = 168.0
+margin_right = 200.0
+margin_bottom = 16.0
+size_flags_horizontal = 10
+text = "100%"
+
+[node name="ReturnButton" type="Button" parent="Control/VBoxContainer"]
+margin_top = 88.0
+margin_right = 331.0
+margin_bottom = 110.0
+text = "Return"
+
+[connection signal="pressed" from="Control/VBoxContainer/GridContainer/FullscreenCheckBox" to="." method="_on_FullscreenCheckBox_pressed"]
+[connection signal="value_changed" from="Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterSlider" to="." method="_on_VolumeMasterSlider_value_changed"]
+[connection signal="value_changed" from="Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicSlider" to="." method="_on_VolumeMusicSlider_value_changed"]
+[connection signal="value_changed" from="Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXSlider" to="." method="_on_VolumeSFXSlider_value_changed"]
+[connection signal="pressed" from="Control/VBoxContainer/ReturnButton" to="." method="_on_ReturnButton_pressed"]
diff --git a/scripts/global_variables.gd b/scripts/global_variables.gd
index 3f57f95..a5d0fd5 100644
--- a/scripts/global_variables.gd
+++ b/scripts/global_variables.gd
@@ -2,3 +2,11 @@ extends Node
var score = 0
var timer_zero = false
+
+# Audio Settings
+var volume_master = 50
+var volume_master_enabled = true
+var volume_music = 50
+var volume_music_enabled = true
+var volume_sfx = 50
+var volume_sfx_enabled = true
diff --git a/scripts/mainmenu.gd b/scripts/mainmenu.gd
index e07b88f..d63d1be 100644
--- a/scripts/mainmenu.gd
+++ b/scripts/mainmenu.gd
@@ -1,23 +1,22 @@
extends Control
-func _ready():
- pass
func _on_StartButton_pressed():
get_tree().change_scene("res://scenes/level.tscn")
func _on_LeaderboardButton_pressed():
- pass # Replace with function body.
+ pass
func _on_HelpButton_pressed():
- pass # Replace with function body.
+ pass
func _on_OptionsButton_pressed():
- pass # Replace with function body.
+ add_child(preload("res://scenes/optionsmenu.tscn").instance())
+
func _on_CreditsButton_pressed():
- pass # Replace with function body.
+ pass
func _on_QuitButton_pressed():
get_tree().quit()
diff --git a/scripts/optionsmenu.gd b/scripts/optionsmenu.gd
new file mode 100644
index 0000000..6951425
--- /dev/null
+++ b/scripts/optionsmenu.gd
@@ -0,0 +1,41 @@
+extends Control
+
+func _ready():
+ # When scene is instanced, load the settings from singleton
+ $Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterValue.text = str(global_variables.volume_master) + "%"
+ $Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterSlider.value = global_variables.volume_master
+ $Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicValue.text = str(global_variables.volume_music) + "%"
+ $Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicSlider.value = global_variables.volume_music
+ $Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXValue.text = str(global_variables.volume_sfx) + "%"
+ $Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXSlider.value = global_variables.volume_sfx
+ $Control/VBoxContainer/GridContainer/FullscreenCheckBox.pressed = OS.window_fullscreen
+
+func _on_ReturnButton_pressed():
+ queue_free()
+
+func _on_VolumeMasterSlider_value_changed(value):
+ global_variables.volume_master = value
+ $Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterValue.text = str(value) + "%"
+ if value == $Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterSlider.min_value:
+ global_variables.volume_music_enabled = false
+ else:
+ global_variables.volume_music_enabled = true
+
+func _on_VolumeMusicSlider_value_changed(value):
+ global_variables.volume_music = value
+ $Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicValue.text = str(value) + "%"
+ if value == $Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicSlider.min_value:
+ global_variables.volume_music_enabled = false
+ else:
+ global_variables.volume_music_enabled = true
+
+func _on_VolumeSFXSlider_value_changed(value):
+ global_variables.volume_sfx = value
+ $Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXValue.text = str(value) + "%"
+ if value == $Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXSlider.min_value:
+ global_variables.volume_sfx_enabled = false
+ else:
+ global_variables.volume_sfx_enabled = true
+
+func _on_FullscreenCheckBox_pressed():
+ OS.window_fullscreen = !OS.window_fullscreen
diff --git a/scripts/pausemenu.gd b/scripts/pausemenu.gd
index 6b0acdb..3fb525d 100644
--- a/scripts/pausemenu.gd
+++ b/scripts/pausemenu.gd
@@ -11,10 +11,10 @@ func _on_RestartButton_pressed():
get_tree().paused = false
reset_variables()
-func _on_HelpButton_pressed():
- pass
-
func _on_OptionsButton_pressed():
+ add_child(preload("res://scenes/optionsmenu.tscn").instance())
+
+func _on_HelpButton_pressed():
pass
func _on_QuitButton_pressed():