diff --git a/assets/audio/voicelines/anouncer_intro_01.ogg b/assets/audio/voicelines/anouncer_intro_01.ogg new file mode 100644 index 0000000..e0858b8 Binary files /dev/null and b/assets/audio/voicelines/anouncer_intro_01.ogg differ diff --git a/assets/audio/voicelines/anouncer_intro_01.ogg.import b/assets/audio/voicelines/anouncer_intro_01.ogg.import new file mode 100644 index 0000000..14ec5a3 --- /dev/null +++ b/assets/audio/voicelines/anouncer_intro_01.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://d3741vrmaeci5" +path="res://.godot/imported/anouncer_intro_01.ogg-9a0df70f3e7b723063bbb4dcdac08629.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/voicelines/anouncer_intro_01.ogg" +dest_files=["res://.godot/imported/anouncer_intro_01.ogg-9a0df70f3e7b723063bbb4dcdac08629.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/voicelines/anouncer_intro_02.ogg b/assets/audio/voicelines/anouncer_intro_02.ogg new file mode 100644 index 0000000..145a1a9 Binary files /dev/null and b/assets/audio/voicelines/anouncer_intro_02.ogg differ diff --git a/assets/audio/voicelines/anouncer_intro_02.ogg.import b/assets/audio/voicelines/anouncer_intro_02.ogg.import new file mode 100644 index 0000000..559ce0e --- /dev/null +++ b/assets/audio/voicelines/anouncer_intro_02.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bi1rf1hi2fm2r" +path="res://.godot/imported/anouncer_intro_02.ogg-b42c3b52801bb95dcb4838d1d12078dd.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/voicelines/anouncer_intro_02.ogg" +dest_files=["res://.godot/imported/anouncer_intro_02.ogg-b42c3b52801bb95dcb4838d1d12078dd.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/voicelines/anouncer_intro_03.ogg b/assets/audio/voicelines/anouncer_intro_03.ogg new file mode 100644 index 0000000..4b444ba Binary files /dev/null and b/assets/audio/voicelines/anouncer_intro_03.ogg differ diff --git a/assets/audio/voicelines/anouncer_intro_03.ogg.import b/assets/audio/voicelines/anouncer_intro_03.ogg.import new file mode 100644 index 0000000..bc8e8af --- /dev/null +++ b/assets/audio/voicelines/anouncer_intro_03.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bji3bx3umohnw" +path="res://.godot/imported/anouncer_intro_03.ogg-be17b7b167ecc2046136bd22ae88ffd9.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/voicelines/anouncer_intro_03.ogg" +dest_files=["res://.godot/imported/anouncer_intro_03.ogg-be17b7b167ecc2046136bd22ae88ffd9.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/voicelines/anouncer_intro_04.ogg b/assets/audio/voicelines/anouncer_intro_04.ogg new file mode 100644 index 0000000..727f1da Binary files /dev/null and b/assets/audio/voicelines/anouncer_intro_04.ogg differ diff --git a/assets/audio/voicelines/anouncer_intro_04.ogg.import b/assets/audio/voicelines/anouncer_intro_04.ogg.import new file mode 100644 index 0000000..18eab82 --- /dev/null +++ b/assets/audio/voicelines/anouncer_intro_04.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://ddpvabd43s3p4" +path="res://.godot/imported/anouncer_intro_04.ogg-34d18a44a309e70c5c50c706a27eff8e.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/voicelines/anouncer_intro_04.ogg" +dest_files=["res://.godot/imported/anouncer_intro_04.ogg-34d18a44a309e70c5c50c706a27eff8e.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..1ded88f --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,62 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="C:/Users/yanni/Desktop/exports lol/project-thought-experiment.exe" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=true +texture_format/bptc=true +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" diff --git a/project.godot b/project.godot index c32c40d..0b0a62b 100644 --- a/project.godot +++ b/project.godot @@ -10,18 +10,22 @@ config_version=5 [application] -config/name="Bitmaze Adventure" -run/main_scene="res://scenes/levels/debug.tscn" +config/name="Project Thought Experiment" +run/main_scene="res://scenes/levels/lvl_1.tscn" +config/auto_accept_quit=false config/features=PackedStringArray("4.2", "Forward Plus") boot_splash/bg_color=Color(0, 0, 0, 1) boot_splash/show_image=false config/icon="res://icon.svg" -config/auto_accept_quit.release=false -boot_splash/show_image.editor=true + +[autoload] + +WindowManager="*res://scripts/autoloads/window_manager.gd" [display] window/stretch/mode="canvas_items" +window/size/mode.release=4 [editor_plugins] @@ -40,6 +44,10 @@ folder_colors={ "res://shaders/": "orange" } +[gui] + +theme/custom="res://resources/main_theme.tres" + [input] move_left={ diff --git a/resources/main_theme.tres b/resources/main_theme.tres new file mode 100644 index 0000000..fd4ce63 --- /dev/null +++ b/resources/main_theme.tres @@ -0,0 +1,3 @@ +[gd_resource type="Theme" format=3 uid="uid://yba31lyxnmib"] + +[resource] diff --git a/scenes/audio_subtitle_system.tscn b/scenes/audio_subtitle_system.tscn new file mode 100644 index 0000000..995b4a6 --- /dev/null +++ b/scenes/audio_subtitle_system.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=4 format=3 uid="uid://ce8nemacxi67m"] + +[ext_resource type="Script" path="res://scripts/audio_subtitle_system.gd" id="1_5vtxu"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_eoq1n"] +content_margin_left = 20.0 +content_margin_top = 20.0 +content_margin_right = 20.0 +content_margin_bottom = 20.0 +bg_color = Color(0, 0, 0, 0.376471) +corner_radius_top_left = 25 +corner_radius_top_right = 25 +corner_radius_bottom_right = 25 +corner_radius_bottom_left = 25 + +[sub_resource type="BoxShape3D" id="BoxShape3D_em1c1"] +size = Vector3(11, 5, 3) + +[node name="AudioSubtitleSystem" type="AudioStreamPlayer3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.27434, 0) +script = ExtResource("1_5vtxu") + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = 3 + +[node name="PanelContainer" type="PanelContainer" parent="CanvasLayer"] +visible = false +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -338.0 +offset_top = -121.0 +offset_right = 338.0 +offset_bottom = -7.0 +grow_horizontal = 2 +grow_vertical = 0 +theme_override_styles/panel = SubResource("StyleBoxFlat_eoq1n") + +[node name="RichTextLabel" type="RichTextLabel" parent="CanvasLayer/PanelContainer"] +self_modulate = Color(1, 1, 1, 0.47451) +layout_mode = 2 +bbcode_enabled = true +scroll_active = false +scroll_following = true + +[node name="Area3D" type="Area3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0) +shape = SubResource("BoxShape3D_em1c1") + +[connection signal="body_entered" from="Area3D" to="." method="_on_area_3d_body_entered"] diff --git a/scenes/close_game_confirmation.tscn b/scenes/close_game_confirmation.tscn new file mode 100644 index 0000000..6f391f2 --- /dev/null +++ b/scenes/close_game_confirmation.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=2 format=3 uid="uid://dvb7rkyyyllkc"] + +[ext_resource type="Script" path="res://scripts/close_game_confirmation.gd" id="1_qqjao"] + +[node name="CloseGameConfirmation" type="ConfirmationDialog"] +title = "Beenden" +initial_position = 2 +size = Vector2i(267, 132) +ok_button_text = "Zum Hauptmenü" +dialog_text = "Möchtest du das Spiel beenden +und zurrück zum Hauptmenü +oder zurrück zum Desktop?" +dialog_close_on_escape = false +cancel_button_text = "Zum Desktop" +script = ExtResource("1_qqjao") + +[connection signal="canceled" from="." to="." method="_on_canceled"] +[connection signal="confirmed" from="." to="." method="_on_confirmed"] diff --git a/scenes/menus/main_menu.tscn b/scenes/gui/menus/main_menu.tscn similarity index 100% rename from scenes/menus/main_menu.tscn rename to scenes/gui/menus/main_menu.tscn diff --git a/scenes/gui/menus/pause_menu.tscn b/scenes/gui/menus/pause_menu.tscn new file mode 100644 index 0000000..3a0b0ea --- /dev/null +++ b/scenes/gui/menus/pause_menu.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=2 format=3 uid="uid://1hja6jk0k310"] + +[ext_resource type="Script" path="res://scripts/menus/pause_menu.gd" id="1_e70hy"] + +[node name="PauseMenu" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_e70hy") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Continue" type="Button" parent="VBoxContainer"] +layout_mode = 2 +text = "Weiter spielen" + +[node name="RestartLevel" type="Button" parent="VBoxContainer"] +layout_mode = 2 +text = "Level neu starten" + +[node name="CloseLevel" type="Button" parent="VBoxContainer"] +layout_mode = 2 +text = "Beenden" diff --git a/scenes/levels/debug.tscn b/scenes/levels/debug.tscn deleted file mode 100644 index e735018..0000000 --- a/scenes/levels/debug.tscn +++ /dev/null @@ -1,126 +0,0 @@ -[gd_scene load_steps=20 format=3 uid="uid://ckad8stc13n83"] - -[ext_resource type="PackedScene" uid="uid://gg5ph541e4p3" path="res://scenes/player.tscn" id="1_2585i"] -[ext_resource type="PackedScene" uid="uid://ddwkhfly2xyyt" path="res://assets/models/interior.obj" id="1_lphcl"] -[ext_resource type="Texture2D" uid="uid://bu7e43m8dswwk" path="res://assets/textures/material/tilesslatesquare/tilesslatesquare_col.png" id="2_irc8l"] -[ext_resource type="Texture2D" uid="uid://dkggxcnlqd2rb" path="res://assets/textures/material/tilesslatesquare/tilesslatesquare_ao.png" id="3_465hc"] -[ext_resource type="PackedScene" uid="uid://dqy8bqf1chm8c" path="res://scenes/objects/interactables/button_stand.tscn" id="4_cruoa"] -[ext_resource type="Texture2D" uid="uid://bsklw2r406fc7" path="res://assets/textures/material/tilesslatesquare/tilesslatesquare_metalness.png" id="4_sn3wt"] -[ext_resource type="PackedScene" uid="uid://22blfybi6n4q" path="res://scenes/completion_counter.tscn" id="5_lo1l3"] -[ext_resource type="Texture2D" uid="uid://cet7gsgfgw1m2" path="res://assets/textures/material/tilesslatesquare/tilesslatesquare_nrm.png" id="5_pffg3"] -[ext_resource type="PackedScene" uid="uid://cy0x2nliyw8gw" path="res://scenes/door.tscn" id="6_853p2"] -[ext_resource type="Texture2D" uid="uid://48js50w57wk4" path="res://assets/textures/material/tilesslatesquare/tilesslatesquare_roughness.png" id="6_vrqt2"] -[ext_resource type="Texture2D" uid="uid://c72iofq6gmfaa" path="res://assets/textures/material/tiles_white/tiles_white_color.png" id="7_qai4q"] -[ext_resource type="Texture2D" uid="uid://bs0qseslb0ilu" path="res://assets/textures/material/tiles_white/tiles_white_ambientocclusion.png" id="8_wcubh"] -[ext_resource type="Texture2D" uid="uid://cpw4myruauqs6" path="res://assets/textures/material/tiles_white/tiles_white_normal.png" id="9_xs8gx"] -[ext_resource type="Texture2D" uid="uid://uy7vdufb7mhc" path="res://assets/textures/material/tiles_white/tiles_white_roughness.png" id="10_mli04"] -[ext_resource type="PackedScene" uid="uid://ced2w03t8er5k" path="res://scenes/objects/cube.tscn" id="15_h1ivu"] - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dkjw0"] -albedo_texture = ExtResource("2_irc8l") -metallic = 1.0 -metallic_texture = ExtResource("4_sn3wt") -roughness_texture = ExtResource("6_vrqt2") -normal_enabled = true -normal_texture = ExtResource("5_pffg3") -ao_enabled = true -ao_texture = ExtResource("3_465hc") -uv1_scale = Vector3(35, 35, 35) -uv1_triplanar_sharpness = 0.148651 -uv1_world_triplanar = true - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cl8ik"] -albedo_texture = ExtResource("7_qai4q") -roughness_texture = ExtResource("10_mli04") -normal_enabled = true -normal_scale = 1.5 -normal_texture = ExtResource("9_xs8gx") -ao_enabled = true -ao_texture = ExtResource("8_wcubh") -uv1_scale = Vector3(8, 30, 8) - -[sub_resource type="BoxMesh" id="BoxMesh_wyr1d"] -size = Vector3(4, 0.2, 5) - -[sub_resource type="BoxShape3D" id="BoxShape3D_lygjd"] -size = Vector3(4, 0.2, 5) - -[node name="Debug" type="Node3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1) - -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] -transform = Transform3D(0.707107, -0.707107, 0, 0.5, 0.5, 0.707107, -0.5, -0.5, 0.707107, 0, 0, 0) -directional_shadow_blend_splits = true -sky_mode = 1 - -[node name="interior" parent="." instance=ExtResource("1_lphcl")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0) - -[node name="Hallway" parent="interior" index="0"] -surface_material_override/0 = SubResource("StandardMaterial3D_dkjw0") - -[node name="StaticBody3D" parent="interior/Hallway" index="0"] -collision_layer = 7 -collision_mask = 7 - -[node name="Cube" parent="interior" index="1"] -surface_material_override/0 = SubResource("StandardMaterial3D_cl8ik") - -[node name="StaticBody3D" parent="interior/Cube" index="0"] -collision_layer = 7 -collision_mask = 7 -collision_priority = 2000.0 - -[node name="Player" parent="." instance=ExtResource("1_2585i")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 5.23956) - -[node name="CompletionCounter" parent="." node_paths=PackedStringArray("nodes_needed") instance=ExtResource("5_lo1l3")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0617981, 3.05379, 6.24098) -nodes_needed = [NodePath("../ButtonStand2"), NodePath("../ButtonStand3")] - -[node name="Door" parent="." instance=ExtResource("6_853p2")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.1, 1.58488, 6.64) - -[node name="ButtonStand2" parent="." instance=ExtResource("4_cruoa")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.03802, 0.7, 4) - -[node name="ButtonStand3" parent="." instance=ExtResource("4_cruoa")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 4.7, 1) - -[node name="Cube" parent="." instance=ExtResource("15_h1ivu")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) -collision_priority = 2.0 - -[node name="Cube2" parent="." instance=ExtResource("15_h1ivu")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 1, 0) -collision_priority = 2.0 - -[node name="Cube3" parent="." instance=ExtResource("15_h1ivu")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 1, -2) -collision_priority = 2.0 - -[node name="Cube4" parent="." instance=ExtResource("15_h1ivu")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 1, -2) -collision_priority = 2.0 - -[node name="Cube5" parent="." instance=ExtResource("15_h1ivu")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -2) -collision_priority = 2.0 - -[node name="Cube6" parent="." instance=ExtResource("15_h1ivu")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 1, -2) -collision_priority = 2.0 - -[node name="DebugPlane" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.9, 3.9, 0) - -[node name="MeshInstance3D" type="MeshInstance3D" parent="DebugPlane"] -mesh = SubResource("BoxMesh_wyr1d") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="DebugPlane"] -shape = SubResource("BoxShape3D_lygjd") - -[connection signal="lock" from="CompletionCounter" to="Door" method="close"] -[connection signal="unlock" from="CompletionCounter" to="Door" method="open"] - -[editable path="interior"] diff --git a/scenes/levels/lvl_1.tscn b/scenes/levels/lvl_1.tscn new file mode 100644 index 0000000..54e25c0 --- /dev/null +++ b/scenes/levels/lvl_1.tscn @@ -0,0 +1,158 @@ +[gd_scene load_steps=30 format=3 uid="uid://ckad8stc13n83"] + +[ext_resource type="PackedScene" uid="uid://ddwkhfly2xyyt" path="res://assets/models/interior.obj" id="1_xs30l"] +[ext_resource type="Texture2D" uid="uid://bu7e43m8dswwk" path="res://assets/textures/material/tilesslatesquare/tilesslatesquare_col.png" id="2_afued"] +[ext_resource type="Texture2D" uid="uid://dkggxcnlqd2rb" path="res://assets/textures/material/tilesslatesquare/tilesslatesquare_ao.png" id="3_4uy3l"] +[ext_resource type="Texture2D" uid="uid://bsklw2r406fc7" path="res://assets/textures/material/tilesslatesquare/tilesslatesquare_metalness.png" id="4_vi1ta"] +[ext_resource type="Texture2D" uid="uid://cet7gsgfgw1m2" path="res://assets/textures/material/tilesslatesquare/tilesslatesquare_nrm.png" id="5_sjo1j"] +[ext_resource type="Texture2D" uid="uid://48js50w57wk4" path="res://assets/textures/material/tilesslatesquare/tilesslatesquare_roughness.png" id="6_os40o"] +[ext_resource type="Texture2D" uid="uid://c72iofq6gmfaa" path="res://assets/textures/material/tiles_white/tiles_white_color.png" id="7_gqmq7"] +[ext_resource type="Texture2D" uid="uid://bs0qseslb0ilu" path="res://assets/textures/material/tiles_white/tiles_white_ambientocclusion.png" id="8_54t4l"] +[ext_resource type="Texture2D" uid="uid://cpw4myruauqs6" path="res://assets/textures/material/tiles_white/tiles_white_normal.png" id="9_5dnm4"] +[ext_resource type="Texture2D" uid="uid://uy7vdufb7mhc" path="res://assets/textures/material/tiles_white/tiles_white_roughness.png" id="10_208rc"] +[ext_resource type="PackedScene" uid="uid://gg5ph541e4p3" path="res://scenes/player.tscn" id="11_lls6p"] +[ext_resource type="PackedScene" uid="uid://22blfybi6n4q" path="res://scenes/objects/completion_counter.tscn" id="12_vn8j0"] +[ext_resource type="PackedScene" uid="uid://cy0x2nliyw8gw" path="res://scenes/objects/door.tscn" id="13_fhdru"] +[ext_resource type="PackedScene" uid="uid://dqy8bqf1chm8c" path="res://scenes/objects/interactables/button_stand.tscn" id="14_mpdbg"] +[ext_resource type="PackedScene" uid="uid://ced2w03t8er5k" path="res://scenes/objects/cube.tscn" id="15_40os8"] +[ext_resource type="PackedScene" uid="uid://ce8nemacxi67m" path="res://scenes/audio_subtitle_system.tscn" id="16_2wrmg"] +[ext_resource type="AudioStream" uid="uid://d3741vrmaeci5" path="res://assets/audio/voicelines/anouncer_intro_01.ogg" id="17_1a448"] +[ext_resource type="Script" path="res://scripts/voiceline_resource.gd" id="18_jxpoe"] +[ext_resource type="AudioStream" uid="uid://bi1rf1hi2fm2r" path="res://assets/audio/voicelines/anouncer_intro_02.ogg" id="19_2roq0"] +[ext_resource type="AudioStream" uid="uid://bji3bx3umohnw" path="res://assets/audio/voicelines/anouncer_intro_03.ogg" id="20_dqpxk"] +[ext_resource type="AudioStream" uid="uid://ddpvabd43s3p4" path="res://assets/audio/voicelines/anouncer_intro_04.ogg" id="21_n11nj"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dkjw0"] +albedo_texture = ExtResource("2_afued") +metallic = 1.0 +metallic_texture = ExtResource("4_vi1ta") +roughness_texture = ExtResource("6_os40o") +normal_enabled = true +normal_texture = ExtResource("5_sjo1j") +ao_enabled = true +ao_texture = ExtResource("3_4uy3l") +uv1_scale = Vector3(35, 35, 35) +uv1_triplanar_sharpness = 0.148651 +uv1_world_triplanar = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cl8ik"] +albedo_texture = ExtResource("7_gqmq7") +roughness_texture = ExtResource("10_208rc") +normal_enabled = true +normal_scale = 1.5 +normal_texture = ExtResource("9_5dnm4") +ao_enabled = true +ao_texture = ExtResource("8_54t4l") +uv1_scale = Vector3(8, 30, 8) + +[sub_resource type="BoxMesh" id="BoxMesh_wyr1d"] +size = Vector3(4, 0.2, 5) + +[sub_resource type="BoxShape3D" id="BoxShape3D_lygjd"] +size = Vector3(4, 0.2, 5) + +[sub_resource type="Resource" id="Resource_u3j5u"] +script = ExtResource("18_jxpoe") +audio = ExtResource("17_1a448") +text = "Hallo!" + +[sub_resource type="Resource" id="Resource_3g4yn"] +script = ExtResource("18_jxpoe") +audio = ExtResource("19_2roq0") +text = "Und willkommen zur Gehirn Test Simulation „Project Thought Experiment“." + +[sub_resource type="Resource" id="Resource_6wqks"] +script = ExtResource("18_jxpoe") +audio = ExtResource("20_dqpxk") +text = "Falls Sie sich nicht erinnern: Sie haben uns, der „Neura-Förderkooperation“, Ihren gesamten Körper gespendet. " + +[sub_resource type="Resource" id="Resource_im7qv"] +script = ExtResource("18_jxpoe") +audio = ExtResource("21_n11nj") +text = "Jetzt werden Sie einige Tests durchführen, um sicherzustellen, dass Sie [rainbow][wave]keinen Hirnschaden[/wave][/rainbow] haben oder ein [rainbow][wave]kompletter Idiot[/wave][/rainbow] sind, da es jetzt vollständig in unser digitales Simulationssystem integriert ist." + +[node name="LVL1" type="Node3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1) + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.707107, -0.707107, 0, 0.5, 0.5, 0.707107, -0.5, -0.5, 0.707107, 0, 0, 0) +directional_shadow_blend_splits = true +sky_mode = 1 + +[node name="interior" parent="." instance=ExtResource("1_xs30l")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0) + +[node name="Hallway" parent="interior" index="0"] +surface_material_override/0 = SubResource("StandardMaterial3D_dkjw0") + +[node name="StaticBody3D" parent="interior/Hallway" index="0"] +collision_layer = 7 +collision_mask = 7 + +[node name="Cube" parent="interior" index="1"] +surface_material_override/0 = SubResource("StandardMaterial3D_cl8ik") + +[node name="StaticBody3D" parent="interior/Cube" index="0"] +collision_layer = 7 +collision_mask = 7 +collision_priority = 2000.0 + +[node name="Player" parent="." instance=ExtResource("11_lls6p")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 5.23956) + +[node name="CompletionCounter" parent="." node_paths=PackedStringArray("nodes_needed") instance=ExtResource("12_vn8j0")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0617981, 3.05379, 6.24098) +nodes_needed = [NodePath("../ButtonStand2"), NodePath("../ButtonStand3")] + +[node name="Door" parent="." instance=ExtResource("13_fhdru")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.1, 1.58488, 6.64) + +[node name="ButtonStand2" parent="." instance=ExtResource("14_mpdbg")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.03802, 0.7, 4) + +[node name="ButtonStand3" parent="." instance=ExtResource("14_mpdbg")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 4.7, 0.0433838) + +[node name="Cube" parent="." instance=ExtResource("15_40os8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.51, 0) +collision_priority = 2.0 + +[node name="Cube2" parent="." instance=ExtResource("15_40os8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0.51, 0) +collision_priority = 2.0 + +[node name="Cube3" parent="." instance=ExtResource("15_40os8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0.51, -2) +collision_priority = 2.0 + +[node name="Cube4" parent="." instance=ExtResource("15_40os8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0.51, -3.93867) +collision_priority = 2.0 + +[node name="Cube5" parent="." instance=ExtResource("15_40os8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.51, -2) +collision_priority = 2.0 + +[node name="Cube6" parent="." instance=ExtResource("15_40os8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.96977, 0.51, -2) +collision_priority = 2.0 + +[node name="DebugPlane" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.9, 3.9, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="DebugPlane"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0) +mesh = SubResource("BoxMesh_wyr1d") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="DebugPlane"] +shape = SubResource("BoxShape3D_lygjd") + +[node name="AudioSubtitleSystem" parent="." instance=ExtResource("16_2wrmg")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.27434, 3) +voice_lines = Array[ExtResource("18_jxpoe")]([SubResource("Resource_u3j5u"), SubResource("Resource_3g4yn"), SubResource("Resource_6wqks"), SubResource("Resource_im7qv")]) + +[connection signal="lock" from="CompletionCounter" to="Door" method="close"] +[connection signal="unlock" from="CompletionCounter" to="Door" method="open"] + +[editable path="interior"] +[editable path="AudioSubtitleSystem"] diff --git a/scenes/completion_counter.tscn b/scenes/objects/completion_counter.tscn similarity index 100% rename from scenes/completion_counter.tscn rename to scenes/objects/completion_counter.tscn diff --git a/scenes/objects/cube.tscn b/scenes/objects/cube.tscn index e07c543..a617a7c 100644 --- a/scenes/objects/cube.tscn +++ b/scenes/objects/cube.tscn @@ -11,7 +11,6 @@ absorbent = true [node name="Cube" type="RigidBody3D" groups=["pushables"]] mass = 1.5 physics_material_override = SubResource("PhysicsMaterial_b2i4c") -lock_rotation = true continuous_cd = true [node name="CollisionShape3D" type="CollisionShape3D" parent="."] diff --git a/scenes/door.tscn b/scenes/objects/door.tscn similarity index 100% rename from scenes/door.tscn rename to scenes/objects/door.tscn diff --git a/scenes/objects/interactables/button_stand.tscn b/scenes/objects/interactables/button_stand.tscn index 0fed6d0..01ba600 100644 --- a/scenes/objects/interactables/button_stand.tscn +++ b/scenes/objects/interactables/button_stand.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=11 format=3 uid="uid://dqy8bqf1chm8c"] -[ext_resource type="PackedScene" uid="uid://dm8l36ephydnl" path="res://scenes/interaction_area.tscn" id="1_0okd0"] +[ext_resource type="PackedScene" uid="uid://dm8l36ephydnl" path="res://scenes/objects/interaction_area.tscn" id="1_0okd0"] [ext_resource type="Script" path="res://scripts/interactables/completer/button_stand.gd" id="1_gkcm2"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_jpuiw"] diff --git a/scenes/objects/interactables/screens/debug_screen.tscn b/scenes/objects/interactables/screens/debug_screen.tscn deleted file mode 100644 index e400ceb..0000000 --- a/scenes/objects/interactables/screens/debug_screen.tscn +++ /dev/null @@ -1,33 +0,0 @@ -[gd_scene format=3 uid="uid://cfk83h5xyhmor"] - -[node name="DebugScreen" type="Control"] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="ColorRect" type="ColorRect" parent="."] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -color = Color(0, 1, 0.517647, 1) - -[node name="Button" type="Button" parent="."] -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -22.0 -offset_top = -15.5 -offset_right = 22.0 -offset_bottom = 15.5 -grow_horizontal = 2 -grow_vertical = 2 -text = "TEST" diff --git a/scenes/objects/interactables/task_terminal.tscn b/scenes/objects/interactables/task_terminal.tscn deleted file mode 100644 index 57aca46..0000000 --- a/scenes/objects/interactables/task_terminal.tscn +++ /dev/null @@ -1,54 +0,0 @@ -[gd_scene load_steps=10 format=3 uid="uid://b8bvidqu7tmfs"] - -[ext_resource type="PackedScene" uid="uid://cfk83h5xyhmor" path="res://scenes/objects/interactables/screens/debug_screen.tscn" id="1_q1qkj"] - -[sub_resource type="BoxShape3D" id="BoxShape3D_sh78v"] - -[sub_resource type="BoxMesh" id="BoxMesh_t4f0s"] - -[sub_resource type="PrismMesh" id="PrismMesh_law6y"] - -[sub_resource type="ViewportTexture" id="ViewportTexture_l2fsg"] -viewport_path = NodePath("ScreenMesh/SubViewport") - -[sub_resource type="ViewportTexture" id="ViewportTexture_ckudb"] -viewport_path = NodePath("ScreenMesh/SubViewport") - -[sub_resource type="ViewportTexture" id="ViewportTexture_01tli"] -viewport_path = NodePath("ScreenMesh/SubViewport") - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7alnb"] -resource_local_to_scene = true -vertex_color_use_as_albedo = true -albedo_texture = SubResource("ViewportTexture_l2fsg") -rim_tint = 1.0 -rim_texture = SubResource("ViewportTexture_01tli") -backlight_enabled = true -backlight_texture = SubResource("ViewportTexture_ckudb") - -[sub_resource type="PlaneMesh" id="PlaneMesh_hekp8"] -resource_local_to_scene = true -material = SubResource("StandardMaterial3D_7alnb") -size = Vector2(1, 1) - -[node name="TaskTerminal" type="StaticBody3D"] - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("BoxShape3D_sh78v") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -mesh = SubResource("BoxMesh_t4f0s") - -[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) -mesh = SubResource("PrismMesh_law6y") - -[node name="ScreenMesh" type="MeshInstance3D" parent="."] -transform = Transform3D(-4.37114e-08, 0.891007, 0.453991, 0, 0.453991, -0.891007, -1, -3.89471e-08, -1.98446e-08, 0.255, 1, 0) -mesh = SubResource("PlaneMesh_hekp8") - -[node name="SubViewport" type="SubViewport" parent="ScreenMesh"] -size_2d_override = Vector2i(512, 512) -render_target_update_mode = 4 - -[node name="DebugScreen" parent="ScreenMesh/SubViewport" instance=ExtResource("1_q1qkj")] diff --git a/scenes/interaction_area.tscn b/scenes/objects/interaction_area.tscn similarity index 100% rename from scenes/interaction_area.tscn rename to scenes/objects/interaction_area.tscn diff --git a/scenes/player.tscn b/scenes/player.tscn index 6b5d6f7..5c31335 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -13,7 +13,7 @@ render_priority = 0 shader = ExtResource("2_rpqdy") shader_parameter/ray_position = null shader_parameter/blur_strength = 3 -shader_parameter/blur_falloff = 7.0 +shader_parameter/blur_falloff = 2.0 shader_parameter/blur_near = 20.0 shader_parameter/blur_far = 200.0 @@ -53,6 +53,9 @@ transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -8.113 target_position = Vector3(0, 0, -10) debug_shape_custom_color = Color(0, 0, 0, 0) +[node name="AudioListener3D" type="AudioListener3D" parent="Camera3D"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0) + [node name="GravityGunLayer" parent="." node_paths=PackedStringArray("player") instance=ExtResource("2_ahuce")] player = NodePath("..") diff --git a/scripts/audio_subtitle_system.gd b/scripts/audio_subtitle_system.gd new file mode 100644 index 0000000..e17efa4 --- /dev/null +++ b/scripts/audio_subtitle_system.gd @@ -0,0 +1,21 @@ +extends AudioStreamPlayer3D + +@export var voice_lines: Array[VoiceLine] + +@onready var textbox: RichTextLabel = $CanvasLayer/PanelContainer/RichTextLabel + +var played: bool + +func _on_area_3d_body_entered(body: Node3D) -> void: + if !played && body is Player: + start_audio_sequence() + played = true + +func start_audio_sequence(): + $CanvasLayer/PanelContainer.show() + for line in voice_lines: + textbox.text = line.text + stream = line.audio + play() + await finished + $CanvasLayer/PanelContainer.hide() diff --git a/scripts/autoloads/window_manager.gd b/scripts/autoloads/window_manager.gd new file mode 100644 index 0000000..011be22 --- /dev/null +++ b/scripts/autoloads/window_manager.gd @@ -0,0 +1,12 @@ +extends Node + +var close_request_window: ConfirmationDialog + +func _ready() -> void: + close_request_window = preload("res://scenes/close_game_confirmation.tscn").instantiate() + add_child(close_request_window) + +func _notification(what: int) -> void: + if what == NOTIFICATION_WM_CLOSE_REQUEST: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + close_request_window.popup() diff --git a/scripts/close_game_confirmation.gd b/scripts/close_game_confirmation.gd new file mode 100644 index 0000000..82328a8 --- /dev/null +++ b/scripts/close_game_confirmation.gd @@ -0,0 +1,7 @@ +extends ConfirmationDialog + +func _on_confirmed() -> void: + pass # Replace with function body. + +func _on_canceled() -> void: + get_tree().quit() diff --git a/scripts/gravity_gun.gd b/scripts/gravity_gun.gd index b2f5ca0..ca6c984 100644 --- a/scripts/gravity_gun.gd +++ b/scripts/gravity_gun.gd @@ -24,6 +24,7 @@ func _physics_process(_delta): collider.global_position = player.goal.global_position elif player.raycast.get_collider() is RigidBody3D: collider = player.raycast.get_collider() + collider.lock_rotation = true if Input.is_action_pressed("gravity_push") || Input.is_action_just_pressed("gravity_push"): player.spring_arm.spring_length += .5 if Input.is_action_pressed("gravity_pull") || Input.is_action_just_pressed("gravity_pull"): @@ -31,5 +32,7 @@ func _physics_process(_delta): player.spring_arm.spring_length = clamp(player.spring_arm.spring_length,2,spring_length_cap) else: gravity_particles.visible = false + if collider: + collider.lock_rotation = false collider = null diff --git a/scripts/menus/pause_menu.gd b/scripts/menus/pause_menu.gd new file mode 100644 index 0000000..1b513e8 --- /dev/null +++ b/scripts/menus/pause_menu.gd @@ -0,0 +1,3 @@ +extends Control + + diff --git a/scripts/player.gd b/scripts/player.gd index af76eb6..243dfdb 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -51,7 +51,7 @@ func _input(event: InputEvent) -> void: if event is InputEventMouseMotion && Input.mouse_mode == Input.MOUSE_MODE_CAPTURED: rotate_y(-event.relative.x * camera_senitivity * 0.0025) camera.rotate_x(-event.relative.y * camera_senitivity * 0.0015) - camera.rotation_degrees.x = clamp(camera.rotation_degrees.x, -40, 80) + camera.rotation_degrees.x = clamp(camera.rotation_degrees.x, -80, 80) if event.is_action_pressed("pause"): capture(false) if event.is_action_pressed("mouse_capture"): diff --git a/scripts/voiceline_resource.gd b/scripts/voiceline_resource.gd new file mode 100644 index 0000000..2fcf69d --- /dev/null +++ b/scripts/voiceline_resource.gd @@ -0,0 +1,5 @@ +extends Resource +class_name VoiceLine + +@export var audio: AudioStreamOggVorbis +@export_multiline var text: String