OverviewFilesCommitsIssuesDocsReleasesPeers

godot-witchy_world_demo commits / 13a25f7

the stuffs
13a25f70d74c2f1ebeb8ef03d1e116bb9eaf02b9
by Dresk Spidflisk <dreskspidflisk@gmail.com> · 2022-04-27T00:48:23.000Z

Changed files (11) +137 -209

assets/models/night_ghost/night_ghost.scn +0 -0
(no content changes — binary or rename)
game/player/masks/mask_ratface.tscn +3 -3
……@@ -11,10 +11,10 @@ script = ExtResource( 2 )
1111
1212[node name="asset_ratface" parent="." instance=ExtResource( 1 )]
1313
14[node name="Area" type="Area" parent="asset_ratface"]
14[node name="Area" type="Area" parent="."]
1515
16[node name="CollisionShape" type="CollisionShape" parent="asset_ratface/Area"]
16[node name="CollisionShape" type="CollisionShape" parent="Area"]
1717transform = Transform( 0.702435, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0282457, 0.00615473 )
1818shape = SubResource( 1 )
1919
20[connection signal="body_entered" from="asset_ratface/Area" to="." method="_on_Area_body_entered"]
20[connection signal="body_entered" from="Area" to="." method="_on_Area_body_entered"]
game/player/masks/mask_skull.tscn +3 -3
……@@ -11,10 +11,10 @@ script = ExtResource( 2 )
1111
1212[node name="asset_skull" parent="." instance=ExtResource( 1 )]
1313
14[node name="Area" type="Area" parent="asset_skull"]
14[node name="Area" type="Area" parent="."]
1515
16[node name="CollisionShape" type="CollisionShape" parent="asset_skull/Area"]
16[node name="CollisionShape" type="CollisionShape" parent="Area"]
1717transform = Transform( 6.91679, 0, 0, 0, 6.44877, 0, 0, 0, 9.56146, 0, 0.0420572, 0 )
1818shape = SubResource( 1 )
1919
20[connection signal="body_entered" from="asset_skull/Area" to="." method="_on_Area_body_entered"]
20[connection signal="body_entered" from="Area" to="." method="_on_Area_body_entered"]
game/player/player_core.gd +1 -1
……@@ -34,7 +34,7 @@ onready var meshNode : Spatial = $Model
3434onready var meshSkeletonNode : Skeleton = $Model/rig/Skeleton
3535onready var meshFaceBone : int = meshSkeletonNode.find_bone("DEF-spine.006")
3636onready var meshFaceBonePos : Transform = meshSkeletonNode.get_bone_pose(meshFaceBone)
37onready var meshMaskAttachment : BoneAttachment = $Model/rig/Skeleton/Spatial/MaskAttachment
37onready var meshMaskAttachment : BoneAttachment = $Model/rig/Skeleton/MaskAttachment
3838
3939var activeMeshMaskAttachment
4040
game/player/player_core_local.tscn +1 -0
……@@ -62,6 +62,7 @@ fov = 90.0
6262far = 8192.0
6363
6464[node name="PlayerDebugUI" parent="." index="7" instance=ExtResource( 5 )]
65visible = false
6566
6667[node name="OmniLight" parent="." index="9"]
6768transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.73959, 0 )
game/player/player_core_local_input_special.gd +3 -1
……@@ -10,7 +10,9 @@ func _ready():
1010
1111func _input(_event):
1212 if Input.is_action_just_pressed("ui_cancel"):
13 get_tree().quit()
13 # Open UI (for now)
14 get_tree().get_current_scene().get_node("UI").get_node("Menu_Main").ui.show()
15 # get_tree().quit()
1416 if Input.is_action_just_pressed("toggleMouse"):
1517 if Input.get_mouse_mode() != Input.MOUSE_MODE_VISIBLE:
1618 mouseModeBackup = Input.get_mouse_mode()
game/settings.gd +81 -0
……@@ -0,0 +1,81 @@
1extends Node
2
3enum GIQuality {
4 DISABLED = 0,
5 LOW = 1,
6 HIGH = 2,
7}
8
9enum AAQuality {
10 DISABLED = 0,
11 AA_2X = 1,
12 AA_4X = 2,
13 AA_8X = 3,
14}
15
16enum SSAOQuality {
17 DISABLED = 0,
18 LOW = 1,
19 HIGH = 2,
20}
21
22enum BloomQuality {
23 DISABLED = 0,
24 LOW = 1,
25 HIGH = 2,
26}
27
28enum Resolution {
29 RES_540 = 0,
30 RES_720 = 1,
31 RES_1080 = 2,
32 NATIVE = 3,
33}
34
35var gi_quality = GIQuality.LOW
36var aa_quality = AAQuality.AA_2X
37var ssao_quality = SSAOQuality.DISABLED
38var bloom_quality = BloomQuality.HIGH
39var resolution = Resolution.NATIVE
40var fullscreen = true
41
42func _ready():
43 load_settings()
44
45func load_settings():
46 var f = File.new()
47 var error = f.open("user://settings.json", File.READ)
48 if error:
49 print("There are no settings to load.")
50 return
51
52 var d = parse_json(f.get_as_text())
53 if typeof(d) != TYPE_DICTIONARY:
54 return
55
56 if "gi" in d:
57 gi_quality = int(d.gi)
58
59 if "aa" in d:
60 aa_quality = int(d.aa)
61
62 if "ssao" in d:
63 ssao_quality = int(d.ssao)
64
65 if "bloom" in d:
66 bloom_quality = int(d.bloom)
67
68 if "resolution" in d:
69 resolution = int(d.resolution)
70
71 if "fullscreen" in d:
72 fullscreen = bool(d.fullscreen)
73
74
75func save_settings():
76 var f = File.new()
77 var error = f.open("user://settings.json", File.WRITE)
78 assert(not error)
79
80 var d = { "gi":gi_quality, "aa":aa_quality, "ssao":ssao_quality, "bloom":bloom_quality, "resolution":resolution, "fullscreen":fullscreen }
81 f.store_line(to_json(d))
main.tscn +3 -80
……@@ -8,92 +8,14 @@
88[ext_resource path="res://hypergodot/hyper_debugui/hyper_debugui.tscn" type="PackedScene" id=6]
99[ext_resource path="res://game/maps/map_witch_island/map_witch_island.scn" type="PackedScene" id=7]
1010[ext_resource path="res://game/maps/map_core.gd" type="Script" id=8]
11[ext_resource path="res://ui/witchlogo.png" type="Texture" id=9]
11[ext_resource path="res://menu/main/menu_main.scn" type="PackedScene" id=9]
1212
1313[node name="Main" type="Node"]
1414script = ExtResource( 2 )
1515
1616[node name="UI" type="Node" parent="."]
1717
18[node name="Control" type="Control" parent="UI"]
19margin_right = 1440.0
20margin_bottom = 810.0
21mouse_filter = 2
22
23[node name="Main" type="Control" parent="UI/Control"]
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 = 390.0
33margin_top = 258.0
34margin_right = 1049.0
35margin_bottom = 551.0
36
37[node name="Witchy World" type="TextureRect" parent="UI/Control/Main/CenterContainer/VBoxContainer"]
38margin_right = 659.0
39margin_bottom = 197.0
40texture = ExtResource( 9 )
41
42[node name="Resume" type="Button" parent="UI/Control/Main/CenterContainer/VBoxContainer"]
43margin_top = 201.0
44margin_right = 659.0
45margin_bottom = 221.0
46text = "Resume"
47
48[node name="Settings" type="Button" parent="UI/Control/Main/CenterContainer/VBoxContainer"]
49margin_top = 225.0
50margin_right = 659.0
51margin_bottom = 245.0
52text = "Settings"
53
54[node name="Multiplayer" type="Button" parent="UI/Control/Main/CenterContainer/VBoxContainer"]
55margin_top = 249.0
56margin_right = 659.0
57margin_bottom = 269.0
58text = "Multiplayer"
59
60[node name="Quit" type="Button" parent="UI/Control/Main/CenterContainer/VBoxContainer"]
61margin_top = 273.0
62margin_right = 659.0
63margin_bottom = 293.0
64text = "Quit"
65
66[node name="Settings" type="VBoxContainer" parent="UI/Control"]
67margin_right = 1440.0
68margin_bottom = 810.0
69
70[node name="Shadows" type="HBoxContainer" parent="UI/Control/Settings"]
71margin_right = 1440.0
72margin_bottom = 20.0
73
74[node name="Label" type="Label" parent="UI/Control/Settings/Shadows"]
75margin_top = 3.0
76margin_right = 63.0
77margin_bottom = 17.0
78text = "Shadows :"
79
80[node name="High" type="Button" parent="UI/Control/Settings/Shadows"]
81margin_left = 67.0
82margin_right = 108.0
83margin_bottom = 20.0
84text = "High"
85
86[node name="Low" type="Button" parent="UI/Control/Settings/Shadows"]
87margin_left = 112.0
88margin_right = 149.0
89margin_bottom = 20.0
90text = "Low"
91
92[node name="Disabled" type="Button" parent="UI/Control/Settings/Shadows"]
93margin_left = 153.0
94margin_right = 221.0
95margin_bottom = 20.0
96text = "Disabled"
18[node name="Menu_Main" parent="UI" instance=ExtResource( 9 )]
9719
9820[node name="Maps" type="Node" parent="."]
9921
……@@ -116,6 +38,7 @@ script = ExtResource( 3 )
11638script = ExtResource( 1 )
11739
11840[node name="HyperDebugUI" parent="HyperGodot" instance=ExtResource( 6 )]
41visible = false
11942
12043[node name="LocalSnapshotTimer" type="Timer" parent="HyperGodot"]
12144autostart = true
menu/main/menu_main.gd +38 -121
……@@ -1,4 +1,4 @@
1extends Control
1extends Node
22
33var res_loader: ResourceInteractiveLoader = null
44var loading_thread: Thread = null
……@@ -7,9 +7,9 @@ signal replace_main_scene
77#warning-ignore:unused_signal
88signal quit # Useless, but needed as there is no clean way to check if a node exposes a signal
99
10onready var ui = $UI
10onready var ui = $Menu_Main
1111onready var main = ui.get_node(@"Main")
12onready var play_button = main.get_node(@"Play")
12onready var play_button = main.get_node(@"Resume")
1313onready var settings_button = main.get_node(@"Settings")
1414onready var quit_button = main.get_node(@"Quit")
1515
……@@ -18,92 +18,39 @@ onready var settings_actions = settings_menu.get_node(@"Actions")
1818onready var settings_action_apply = settings_actions.get_node(@"Apply")
1919onready var settings_action_cancel = settings_actions.get_node(@"Cancel")
2020
21onready var multiplayer_menu = ui.get_node(@"Multiplayer")
22
2123onready var gi_menu = settings_menu.get_node(@"GI")
2224onready var gi_high = gi_menu.get_node(@"High")
2325onready var gi_low = gi_menu.get_node(@"Low")
2426onready var gi_disabled = gi_menu.get_node(@"Disabled")
2527
2628onready 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")
29onready var aa_8x = aa_menu.get_node(@"8x")
30onready var aa_4x = aa_menu.get_node(@"4x")
31onready var aa_2x = aa_menu.get_node(@"2x")
3032onready var aa_disabled = aa_menu.get_node(@"Disabled")
3133
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
3734onready var bloom_menu = settings_menu.get_node(@"Bloom")
3835onready var bloom_high = bloom_menu.get_node(@"High")
3936onready var bloom_low = bloom_menu.get_node(@"Low")
4037onready var bloom_disabled = bloom_menu.get_node(@"Disabled")
4138
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")
39func _ready():
40 get_tree().set_screen_stretch(SceneTree.STRETCH_MODE_2D, SceneTree.STRETCH_ASPECT_KEEP, Vector2(1920, 1080))
4741
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")
42func _on_quit_pressed():
43 get_tree().quit()
5144
52onready var loading = ui.get_node(@"Loading")
53onready var loading_progress = loading.get_node(@"Progress")
54onready var loading_done_timer = loading.get_node(@"DoneTimer")
45func _on_Resume_pressed():
46 # Hide UI (for now)
47 ui.hide()
5548
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():
49func _on_Quit_pressed():
50 get_tree().quit()
51
52
53func _on_Settings_pressed():
10754 main.hide()
10855 settings_menu.show()
10956 settings_action_cancel.grab_focus()
……@@ -124,13 +71,6 @@ func _on_settings_pressed():
12471 elif Settings.aa_quality == Settings.AAQuality.DISABLED:
12572 aa_disabled.pressed = true
12673
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
13474 if Settings.bloom_quality == Settings.BloomQuality.HIGH:
13575 bloom_high.pressed = true
13676 elif Settings.bloom_quality == Settings.BloomQuality.LOW:
……@@ -138,28 +78,14 @@ func _on_settings_pressed():
13878 elif Settings.bloom_quality == Settings.BloomQuality.DISABLED:
13979 bloom_disabled.pressed = true
14080
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()
15881
82func _on_Multiplayer_pressed():
83 main.hide()
84 multiplayer_menu.show()
15985
160func _on_apply_pressed():
86func _on_Apply_pressed():
16187 main.show()
162 play_button.grab_focus()
88 # play_button.grab_focus()
16389 settings_menu.hide()
16490
16591 if gi_high.pressed:
……@@ -178,13 +104,6 @@ func _on_apply_pressed():
178104 elif aa_disabled.pressed:
179105 Settings.aa_quality = Settings.AAQuality.DISABLED
180106
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
188107 if bloom_high.pressed:
189108 Settings.bloom_quality = Settings.BloomQuality.HIGH
190109 elif bloom_low.pressed:
……@@ -192,24 +111,22 @@ func _on_apply_pressed():
192111 elif bloom_disabled.pressed:
193112 Settings.bloom_quality = Settings.BloomQuality.DISABLED
194113
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
114 Settings.save_settings()
203115
204 Settings.fullscreen = fullscreen_yes.pressed
205116
206 # Apply the setting directly
207 OS.window_fullscreen = Settings.fullscreen
117func _on_Cancel_pressed():
118 main.show()
119 # play_button.grab_focus()
120 settings_menu.hide()
208121
209 Settings.save_settings()
122
123func _on_Multiplayer_Cancel_pressed():
124 main.show()
125 # play_button.grab_focus()
126 multiplayer_menu.hide()
210127
211128
212func _on_cancel_pressed():
129func _on_Multiplayer_Apply_pressed():
213130 main.show()
214 play_button.grab_focus()
215 settings_menu.hide()
131 # play_button.grab_focus()
132 multiplayer_menu.hide()
menu/main/menu_main.scn +0 -0
(no content changes — binary or rename)
project.godot +4 -0
……@@ -120,6 +120,10 @@ config/name="Witch Island"
120120run/main_scene="res://main.tscn"
121121config/icon="res://icon.png"
122122
123[autoload]
124
125Settings="*res://game/settings.gd"
126
123127[display]
124128
125129window/size/width=1440