-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainMenu.gd
More file actions
147 lines (109 loc) · 4.31 KB
/
MainMenu.gd
File metadata and controls
147 lines (109 loc) · 4.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
extends Control
onready var startButton = $MainMenu/StartButton
onready var settingsButton = $MainMenu/SettingsButton
onready var mainMenu = $MainMenu
onready var settingsMenu = $SettingsMenu
onready var videoSettings = $SettingsMenu/Menu/SettingsContainer/VideoSettings
onready var audioSettings = $SettingsMenu/Menu/SettingsContainer/AudioSettings
onready var controlsSettings = $SettingsMenu/Menu/SettingsContainer/ControlSettings
onready var bgmAudioStream = $SettingsMenu/Menu/SettingsContainer/AudioSettings/BGMTestButton/BGMAudioStreamPlayer
onready var sfxAudioStream = $SettingsMenu/Menu/SettingsContainer/AudioSettings/SFXTestButton/SFXAudioStreamPlayer
onready var masterLabel = $SettingsMenu/Menu/SettingsContainer/AudioSettings/MasterValue
onready var bgmLabel = $SettingsMenu/Menu/SettingsContainer/AudioSettings/BGMValue
onready var sfxLabel = $SettingsMenu/Menu/SettingsContainer/AudioSettings/SFXValue
onready var optionsButton = $SettingsMenu/Menu/SettingsContainer/VideoSettings/VideoOptionsButton
var config = ConfigFile.new()
var testing = false
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time.
func _ready():
BackgroundMusic.get_node("AudioStreamPlayer").stop()
settingsMenu.hide()
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass
func hide_settings():
videoSettings.hide()
audioSettings.hide()
controlsSettings.hide()
func _on_StartButton_pressed():
PlayerStats.reset_stats()
get_tree().change_scene("res://Main.tscn")
func _on_OptionsButton_pressed():
mainMenu.hide()
settingsMenu.popup()
hide_settings()
videoSettings.show()
pass # Replace with function body.
func _on_QuitButton_pressed():
get_tree().quit()
func _on_VideoButton_pressed():
hide_settings()
videoSettings.show()
func _on_AudioButton_pressed():
hide_settings()
audioSettings.show()
func _on_ControlsButton_pressed():
hide_settings()
controlsSettings.show()
func _on_MasterSlider_value_changed(value):
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear2db(value))
masterLabel.text = String(value * 100)
func _on_BGMSlider_value_changed(value):
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("BGM"), linear2db(value))
bgmLabel.text = String(value * 100)
func _on_SFXSlider_value_changed(value):
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("SFX"), linear2db(value))
sfxLabel.text = String(value * 100)
func _on_BGMTestButton_pressed():
if testing == false:
bgmAudioStream.play()
testing = true
else:
bgmAudioStream.stop()
sfxAudioStream.stop()
testing = false
func _on_SFXTestButton_pressed():
if testing == false:
sfxAudioStream.play()
testing = true
else:
bgmAudioStream.stop()
sfxAudioStream.stop()
testing = false
func _on_CloseButton_pressed():
mainMenu.show()
settingsMenu.hide()
# Emitted when the selected resolution changes.
signal resolution_changed(new_resolution)
func _update_selected_item(text: String) -> void:
# The resolution options are written in the form "XRESxYRES".
# Using `split_floats` we get an array with both values as floats.
var values := text.split_floats("x")
# Emit a signal for informing the newly selected resolution
emit_signal("resolution_changed", Vector2(values[0], values[1]))
func _on_VideoOptionsButton_item_selected(index):
_update_selected_item(optionsButton.text)
# Emitted when the user presses the "apply" button.
signal apply_button_pressed(settings)
# We store the selected settings in a dictionary
var _settings := {resolution = Vector2(1280, 720), fullscreen = false, vsync = false}
# Emit the `apply_button_pressed` signal, when user presses the button.
func _on_ApplyButton_pressed() -> void:
# Send the last selected settings with the signal
#print("apply")
emit_signal("apply_button_pressed", _settings)
update_settings(_settings)
func _on_FullscreenCheckBox_toggled(button_pressed):
_settings.fullscreen = button_pressed
func _on_StartMenu_resolution_changed(new_resolution):
_settings.resolution = new_resolution
func update_settings(settings: Dictionary) -> void:
OS.window_fullscreen = settings.fullscreen
#get_tree().set_screen_stretch(
# SceneTree.STRETCH_MODE_2D, SceneTree.STRETCH_ASPECT_KEEP, settings.resolution
#)
#OS.set_window_size(settings.resolution)