diff options
-rw-r--r-- | scenes/mainmenu.tscn | 1 | ||||
-rw-r--r-- | scenes/optionsmenu.tscn | 143 | ||||
-rw-r--r-- | scripts/global_variables.gd | 8 | ||||
-rw-r--r-- | scripts/mainmenu.gd | 11 | ||||
-rw-r--r-- | scripts/optionsmenu.gd | 41 | ||||
-rw-r--r-- | scripts/pausemenu.gd | 6 |
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(): |