OverviewFilesCommitsIssuesDocsReleasesPeers

godot-witchy_world_demo commits / 9e23648

nowhere near done!
9e23648f24f39afc0b32d89e3e33f18192280006
by Dresk Spidflisk <dreskspidflisk@gmail.com> · 2022-04-26T19:21:28.000Z

Changed files (4) +302 -2

main.tscn +84 -0
……@@ -12,6 +12,90 @@
1212[node name="Main" type="Node"]
1313script = ExtResource( 2 )
1414
15[node name="UI" type="Node" parent="."]
16
17[node name="Control" type="Control" parent="UI"]
18margin_right = 1440.0
19margin_bottom = 810.0
20mouse_filter = 2
21
22[node name="Main" type="Control" parent="UI/Control"]
23visible = false
24margin_right = 1441.0
25margin_bottom = 810.0
26
27[node name="CenterContainer" type="CenterContainer" parent="UI/Control/Main"]
28margin_right = 1440.0
29margin_bottom = 810.0
30
31[node name="VBoxContainer" type="VBoxContainer" parent="UI/Control/Main/CenterContainer"]
32margin_left = 677.0
33margin_top = 350.0
34margin_right = 763.0
35margin_bottom = 460.0
36
37[node name="Witchy World" type="Label" parent="UI/Control/Main/CenterContainer/VBoxContainer"]
38margin_right = 86.0
39margin_bottom = 14.0
40text = "Witchy World"
41align = 1
42
43[node name="Resume" type="Button" parent="UI/Control/Main/CenterContainer/VBoxContainer"]
44margin_top = 18.0
45margin_right = 86.0
46margin_bottom = 38.0
47text = "Resume"
48
49[node name="Settings" type="Button" parent="UI/Control/Main/CenterContainer/VBoxContainer"]
50margin_top = 42.0
51margin_right = 86.0
52margin_bottom = 62.0
53text = "Settings"
54
55[node name="Multiplayer" type="Button" parent="UI/Control/Main/CenterContainer/VBoxContainer"]
56margin_top = 66.0
57margin_right = 86.0
58margin_bottom = 86.0
59text = "Multiplayer"
60
61[node name="Quit" type="Button" parent="UI/Control/Main/CenterContainer/VBoxContainer"]
62margin_top = 90.0
63margin_right = 86.0
64margin_bottom = 110.0
65text = "Quit"
66
67[node name="Settings" type="VBoxContainer" parent="UI/Control"]
68margin_right = 1440.0
69margin_bottom = 810.0
70
71[node name="Shadows" type="HBoxContainer" parent="UI/Control/Settings"]
72margin_right = 1440.0
73margin_bottom = 20.0
74
75[node name="Label" type="Label" parent="UI/Control/Settings/Shadows"]
76margin_top = 3.0
77margin_right = 63.0
78margin_bottom = 17.0
79text = "Shadows :"
80
81[node name="High" type="Button" parent="UI/Control/Settings/Shadows"]
82margin_left = 67.0
83margin_right = 108.0
84margin_bottom = 20.0
85text = "High"
86
87[node name="Low" type="Button" parent="UI/Control/Settings/Shadows"]
88margin_left = 112.0
89margin_right = 149.0
90margin_bottom = 20.0
91text = "Low"
92
93[node name="Disabled" type="Button" parent="UI/Control/Settings/Shadows"]
94margin_left = 153.0
95margin_right = 221.0
96margin_bottom = 20.0
97text = "Disabled"
98
1599[node name="Maps" type="Node" parent="."]
16100
17101[node name="map_witch_island" parent="Maps" instance=ExtResource( 7 )]
menu/main/menu_main.gd +215 -0
……@@ -0,0 +1,215 @@
1extends Control
2
3var res_loader: ResourceInteractiveLoader = null
4var loading_thread: Thread = null
5
6signal replace_main_scene
7#warning-ignore:unused_signal
8signal quit # Useless, but needed as there is no clean way to check if a node exposes a signal
9
10onready var ui = $UI
11onready var main = ui.get_node(@"Main")
12onready var play_button = main.get_node(@"Play")
13onready var settings_button = main.get_node(@"Settings")
14onready var quit_button = main.get_node(@"Quit")
15
16onready var settings_menu = ui.get_node(@"Settings")
17onready var settings_actions = settings_menu.get_node(@"Actions")
18onready var settings_action_apply = settings_actions.get_node(@"Apply")
19onready var settings_action_cancel = settings_actions.get_node(@"Cancel")
20
21onready var gi_menu = settings_menu.get_node(@"GI")
22onready var gi_high = gi_menu.get_node(@"High")
23onready var gi_low = gi_menu.get_node(@"Low")
24onready var gi_disabled = gi_menu.get_node(@"Disabled")
25
26onready var aa_menu = settings_menu.get_node(@"AA")
27onready var aa_8x = aa_menu.get_node(@"8X")
28onready var aa_4x = aa_menu.get_node(@"4X")
29onready var aa_2x = aa_menu.get_node(@"2X")
30onready var aa_disabled = aa_menu.get_node(@"Disabled")
31
32onready var ssao_menu = settings_menu.get_node(@"SSAO")
33onready var ssao_high = ssao_menu.get_node(@"High")
34onready var ssao_low = ssao_menu.get_node(@"Low")
35onready var ssao_disabled = ssao_menu.get_node(@"Disabled")
36
37onready var bloom_menu = settings_menu.get_node(@"Bloom")
38onready var bloom_high = bloom_menu.get_node(@"High")
39onready var bloom_low = bloom_menu.get_node(@"Low")
40onready var bloom_disabled = bloom_menu.get_node(@"Disabled")
41
42onready var resolution_menu = settings_menu.get_node(@"Resolution")
43onready var resolution_native = resolution_menu.get_node(@"Native")
44onready var resolution_1080 = resolution_menu.get_node(@"1080")
45onready var resolution_720 = resolution_menu.get_node(@"720")
46onready var resolution_540 = resolution_menu.get_node(@"540")
47
48onready var fullscreen_menu = settings_menu.get_node(@"Fullscreen")
49onready var fullscreen_yes = fullscreen_menu.get_node(@"Yes")
50onready var fullscreen_no = fullscreen_menu.get_node(@"No")
51
52onready var loading = ui.get_node(@"Loading")
53onready var loading_progress = loading.get_node(@"Progress")
54onready var loading_done_timer = loading.get_node(@"DoneTimer")
55
56func _ready():
57 get_tree().set_screen_stretch(SceneTree.STRETCH_MODE_2D, SceneTree.STRETCH_ASPECT_KEEP, Vector2(1920, 1080))
58 play_button.grab_focus()
59 var sound_effects = $BackgroundCache/RedRobot/SoundEffects
60 for child in sound_effects.get_children():
61 child.unit_db = -200
62
63
64func interactive_load(loader):
65 while true:
66 var status = loader.poll()
67 if status == OK:
68 loading_progress.value = (loader.get_stage() * 100) / loader.get_stage_count()
69 continue
70 elif status == ERR_FILE_EOF:
71 loading_progress.value = 100
72 loading_done_timer.start()
73 break
74 else:
75 print("Error while loading level: " + str(status))
76 main.show()
77 loading.hide()
78 break
79
80
81func loading_done(loader):
82 loading_thread.wait_to_finish()
83 emit_signal("replace_main_scene", loader.get_resource())
84 res_loader = null
85 # Weirdly, "res_loader = null" is needed as otherwise
86 # loading the resource again is not possible.
87
88
89func _on_loading_done_timer_timeout():
90 loading_done(res_loader)
91
92
93func _on_play_pressed():
94 main.hide()
95 loading.show()
96 var path = "res://level/level.tscn"
97 if ResourceLoader.has_cached(path):
98 emit_signal("replace_main_scene", ResourceLoader.load(path))
99 else:
100 res_loader = ResourceLoader.load_interactive(path)
101 loading_thread = Thread.new()
102 #warning-ignore:return_value_discarded
103 loading_thread.start(self, "interactive_load", res_loader)
104
105
106func _on_settings_pressed():
107 main.hide()
108 settings_menu.show()
109 settings_action_cancel.grab_focus()
110
111 if Settings.gi_quality == Settings.GIQuality.HIGH:
112 gi_high.pressed = true
113 elif Settings.gi_quality == Settings.GIQuality.LOW:
114 gi_low.pressed = true
115 elif Settings.gi_quality == Settings.GIQuality.DISABLED:
116 gi_disabled.pressed = true
117
118 if Settings.aa_quality == Settings.AAQuality.AA_8X:
119 aa_8x.pressed = true
120 elif Settings.aa_quality == Settings.AAQuality.AA_4X:
121 aa_4x.pressed = true
122 elif Settings.aa_quality == Settings.AAQuality.AA_2X:
123 aa_2x.pressed = true
124 elif Settings.aa_quality == Settings.AAQuality.DISABLED:
125 aa_disabled.pressed = true
126
127 if Settings.ssao_quality == Settings.SSAOQuality.HIGH:
128 ssao_high.pressed = true
129 elif Settings.ssao_quality == Settings.SSAOQuality.LOW:
130 ssao_low.pressed = true
131 elif Settings.ssao_quality == Settings.SSAOQuality.DISABLED:
132 ssao_disabled.pressed = true
133
134 if Settings.bloom_quality == Settings.BloomQuality.HIGH:
135 bloom_high.pressed = true
136 elif Settings.bloom_quality == Settings.BloomQuality.LOW:
137 bloom_low.pressed = true
138 elif Settings.bloom_quality == Settings.BloomQuality.DISABLED:
139 bloom_disabled.pressed = true
140
141 if Settings.resolution == Settings.Resolution.NATIVE:
142 resolution_native.pressed = true
143 elif Settings.resolution == Settings.Resolution.RES_1080:
144 resolution_1080.pressed = true
145 elif Settings.resolution == Settings.Resolution.RES_720:
146 resolution_720.pressed = true
147 elif Settings.resolution == Settings.Resolution.RES_540:
148 resolution_540.pressed = true
149
150 if Settings.fullscreen:
151 fullscreen_yes.pressed = true
152 else:
153 fullscreen_no.pressed = true
154
155
156func _on_quit_pressed():
157 get_tree().quit()
158
159
160func _on_apply_pressed():
161 main.show()
162 play_button.grab_focus()
163 settings_menu.hide()
164
165 if gi_high.pressed:
166 Settings.gi_quality = Settings.GIQuality.HIGH
167 elif gi_low.pressed:
168 Settings.gi_quality = Settings.GIQuality.LOW
169 elif gi_disabled.pressed:
170 Settings.gi_quality = Settings.GIQuality.DISABLED
171
172 if aa_8x.pressed:
173 Settings.aa_quality = Settings.AAQuality.AA_8X
174 elif aa_4x.pressed:
175 Settings.aa_quality = Settings.AAQuality.AA_4X
176 elif aa_2x.pressed:
177 Settings.aa_quality = Settings.AAQuality.AA_2X
178 elif aa_disabled.pressed:
179 Settings.aa_quality = Settings.AAQuality.DISABLED
180
181 if ssao_high.pressed:
182 Settings.ssao_quality = Settings.SSAOQuality.HIGH
183 elif ssao_low.pressed:
184 Settings.ssao_quality = Settings.SSAOQuality.LOW
185 elif ssao_disabled.pressed:
186 Settings.ssao_quality = Settings.SSAOQuality.DISABLED
187
188 if bloom_high.pressed:
189 Settings.bloom_quality = Settings.BloomQuality.HIGH
190 elif bloom_low.pressed:
191 Settings.bloom_quality = Settings.BloomQuality.LOW
192 elif bloom_disabled.pressed:
193 Settings.bloom_quality = Settings.BloomQuality.DISABLED
194
195 if resolution_native.pressed:
196 Settings.resolution = Settings.Resolution.NATIVE
197 elif resolution_1080.pressed:
198 Settings.resolution = Settings.Resolution.RES_1080
199 elif resolution_720.pressed:
200 Settings.resolution = Settings.Resolution.RES_720
201 elif resolution_540.pressed:
202 Settings.resolution = Settings.Resolution.RES_540
203
204 Settings.fullscreen = fullscreen_yes.pressed
205
206 # Apply the setting directly
207 OS.window_fullscreen = Settings.fullscreen
208
209 Settings.save_settings()
210
211
212func _on_cancel_pressed():
213 main.show()
214 play_button.grab_focus()
215 settings_menu.hide()
menu/main/menu_main.scn +0 -0
(no content changes — binary or rename)
project.godot +3 -2
……@@ -122,8 +122,8 @@ config/icon="res://icon.png"
122122
123123[display]
124124
125window/size/width=1441
126window/size/height=728
125window/size/width=1440
126window/size/height=810
127127
128128[editor_plugins]
129129
……@@ -133,6 +133,7 @@ enabled=PoolStringArray( "res://addons/jc.godot.time-of-day/plugin.cfg", "res://
133133
134134debanding=false
135135refra=false
136GI=false
136137
137138[input]
138139