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
|
extends Control
var _settings := {
resolution = Vector2(1280, 720), fullscreen = true, vsync = true, stopwatch = false
}
var starting = true
export(NodePath) onready var vsyncbutton = get_node(vsyncbutton)
export(NodePath) onready var fullscreenbutton = get_node(fullscreenbutton)
export(NodePath) onready var resolution_input = get_node(resolution_input)
export(NodePath) onready var stopwatchbox = get_node(stopwatchbox)
func _ready():
var data = SaveLoad.files.settings.data
_settings.stopwatch = data.stopwatch
_settings.resolution = data.resolution
_settings.vsync = data.vsync
_settings.fullscreen = data.fullscreen
update_settings(false)
func start():
starting = false
yield(get_tree().create_timer(.3), "timeout")
$ColorRect/ExitButton.grab_focus()
show()
func update_settings_visual():
fullscreenbutton.pressed = _settings.fullscreen
vsyncbutton.pressed = _settings.vsync
var resolution_text_placeholder = (
str(_settings.resolution.x)
+ "x"
+ str(_settings.resolution.y)
)
resolution_input.placeholder_text = resolution_text_placeholder
stopwatchbox.pressed = _settings.stopwatch
func _on_VscynButton_toggled(button_pressed):
if starting:
return
_settings.vsync = button_pressed
update_settings()
func _on_FullscreenButton_toggled(button_pressed):
if starting:
return
_settings.fullscreen = button_pressed
update_settings()
func update_settings(open := true) -> void:
if not open:
_settings.vsync = OS.vsync_enabled
_settings.fullscreen = OS.window_fullscreen
_settings.resolution = OS.window_size
var data = SaveLoad.files.settings.data
_settings = data
apply_settings()
update_settings_visual()
if open:
MainInstances.console.Log("Settings applied.", .1, 1)
$ColorRect/VBoxContainer/HBoxContainer2/ResolutionHolder.visible = !_settings.fullscreen
SaveLoad.save("settings")
func apply_settings():
resolution_input.placeholder_text = (
str(_settings.resolution.x)
+ "x"
+ str(_settings.resolution.y)
)
OS.window_fullscreen = _settings.fullscreen
if _settings.fullscreen:
_settings.resolution = OS.get_screen_size()
OS.set_window_size(_settings.resolution)
OS.vsync_enabled = _settings.vsync
globalsettings.stopwatch = _settings.stopwatch
func _on_ResolutionInput_text_entered(new_text: String):
if starting:
return
var text = new_text.split("x")
if text.size() < 2:
MainInstances.console.Log("Please split text with a x (1270x720)", 2.5, 5)
return
var text_processed = []
for number in text:
number = int(number)
number = round(number)
number = clamp(number, 400, 4000)
text_processed.append(number)
var new_res = Vector2(text_processed[0], text_processed[1])
_settings.resolution = new_res
update_settings()
func _on_ResolutionButton_pressed():
if starting:
return
resolution_input.visible = !resolution_input.visible
func _on_ExitButton_pressed():
hide()
update_settings(false)
if get_parent().has_method("pause_toggle"):
get_parent().pause_toggle(true)
else:
push_warning("Parent of %s not pausemenu" % self)
func _on_StopwatchBox_toggled(button_pressed):
if starting:
return
_settings.stopwatch = button_pressed
update_settings()
|