Compare commits

..

23 Commits

Author SHA1 Message Date
tiger tiger tiger 845fc1d84d chore: remove extraneous debug 2025-12-13 13:16:51 +01:00
tiger tiger tiger 454839f20a fix: warnings removed, scrolling behaviour intent perhaps fixed 2025-12-13 13:14:16 +01:00
tiger tiger tiger 38a5a49e67 fix: dead rotation tween removed 2025-12-13 12:59:05 +01:00
tiger tiger tiger 8fad1b60df fix: savegame parsing failure no longer crashes. 2025-12-13 12:56:02 +01:00
tiger tiger tiger 0072490f8b fix: warning count to zero 2025-12-13 12:52:25 +01:00
tiger tiger tiger fb9c6d034c fix: syntax error class 2025-12-13 12:43:25 +01:00
tiger tiger tiger 16414da77e fix: show Nav UI in accessibility is now accessible again 2025-12-13 12:42:26 +01:00
tiger tiger tiger 30a38c9eb2 fix: regenerated missing UIDs in theme files 2025-12-13 11:54:58 +01:00
tiger tiger tiger 59356c6b9d fix: shadowing issues in card-board. 2025-12-13 11:14:10 +01:00
tiger tiger tiger aefc236baa fix: refactoring path for settings panel 2025-12-13 11:10:11 +01:00
tiger tiger tiger ffe4f4461c change: replaced all bare print() statements with print_debug() 2025-12-13 11:06:15 +01:00
tiger tiger tiger f8293f6974 fail: helplessly trying to prevent the weird state system from creating TWO savegames. down from four... 2025-12-13 00:22:21 +01:00
tiger tiger tiger 5f610241e0 fix: typo in size for screenshots, was 261, must be 216 height. 2025-12-12 19:19:37 +01:00
tiger tiger tiger 21bb98db8d fix: settings no longer race condition. 2025-12-12 17:18:04 +01:00
tiger tiger tiger 3e030e2b85 chore: rename SaveGameHandle to SaveGameList 2025-12-12 16:35:07 +01:00
tiger tiger tiger ec38d8edef fix: loading order, savegame directory creation 2025-12-12 16:33:06 +01:00
tiger tiger tiger 59497838fe fix: markdown uses application theme now. 2025-12-10 19:14:31 +01:00
tiger tiger tiger b676f4500b fix: markdown no longer tries to load nonexistent resource. 2025-12-10 19:13:29 +01:00
tiger tiger tiger 8d911e3911 fix: masking was incorrectly applied to loading indicator 2025-12-10 18:52:56 +01:00
tiger tiger tiger 6982d32169 chore: main scene is now a control.§ 2025-12-10 18:52:09 +01:00
tiger tiger tiger 515462b631 chore: trying to clean up some of the structure 2025-12-10 18:07:45 +01:00
tiger tiger tiger 842813ddb4 fix: hardcoded localization load (en) removed from scene player 2025-12-09 17:03:09 +01:00
tiger tiger tiger 796878b0ab fix: attempted to remove tools. bug: now the game won't load. 2025-12-08 18:30:02 +01:00
125 changed files with 2646 additions and 2512 deletions

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GdProjectSettingsState">
<annotators>warn</annotators>
</component>
</project>

View File

@ -5,5 +5,5 @@ func _ready() -> void:
$MarkdownLabel.display_file("res://addons/markdownlabel/README.md") $MarkdownLabel.display_file("res://addons/markdownlabel/README.md")
$MarkdownLabel.task_checkbox_clicked.connect( $MarkdownLabel.task_checkbox_clicked.connect(
func(id: int, line: int, checked: bool, text: String) -> void: func(id: int, line: int, checked: bool, text: String) -> void:
print("%s task #%d on line %d: %s" % ["Checked" if checked else "Unchecked", id, line, text]) print_debug("%s task #%d on line %d: %s" % ["Checked" if checked else "Unchecked", id, line, text])
) )

View File

@ -640,7 +640,7 @@ func _reset_escaped_chars(_text: String,code:=false) -> String:
func _debug(string: String) -> void: func _debug(string: String) -> void:
if not _debug_mode: if not _debug_mode:
return return
print(string) print_debug(string)
func _denotes_fenced_code_block(line: String, character: String) -> bool: func _denotes_fenced_code_block(line: String, character: String) -> bool:
var stripped_line := line.strip_edges() var stripped_line := line.strip_edges()

View File

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cfwa5dq3flk4b" uid="uid://cfwa5dq3flk4b"
path="res://.godot/imported/sky_textures.png-1bc387632f79299cfe768a08f95b36df.ctex" path="res://.godot/imported/sky_textures.png-1ba6043dcaf28986e3e05f5171fee2b4.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://base-environments/intro_scene/textures/sky_textures.png" source_file="res://base-environments/intro/textures/sky_textures.png"
dest_files=["res://.godot/imported/sky_textures.png-1bc387632f79299cfe768a08f95b36df.ctex"] dest_files=["res://.godot/imported/sky_textures.png-1ba6043dcaf28986e3e05f5171fee2b4.ctex"]
[params] [params]

View File

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dabnlcnuticww" uid="uid://dabnlcnuticww"
path="res://.godot/imported/sky_textures_2.png-a1913291aa98549785b8c12dd6aa67b9.ctex" path="res://.godot/imported/sky_textures_2.png-79f9797d0c2a05f0a7e04941a93a9158.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://base-environments/intro_scene/textures/sky_textures_2.png" source_file="res://base-environments/intro/textures/sky_textures_2.png"
dest_files=["res://.godot/imported/sky_textures_2.png-a1913291aa98549785b8c12dd6aa67b9.ctex"] dest_files=["res://.godot/imported/sky_textures_2.png-79f9797d0c2a05f0a7e04941a93a9158.ctex"]
[params] [params]

View File

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bblv1y6l4re8y" uid="uid://bblv1y6l4re8y"
path="res://.godot/imported/star.png-8963d4096c36d0531880a451c851e16d.ctex" path="res://.godot/imported/star.png-a94df91fbef396160044c05bed745e1c.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://base-environments/intro_scene/textures/star.png" source_file="res://base-environments/intro/textures/star.png"
dest_files=["res://.godot/imported/star.png-8963d4096c36d0531880a451c851e16d.ctex"] dest_files=["res://.godot/imported/star.png-a94df91fbef396160044c05bed745e1c.ctex"]
[params] [params]

View File

@ -4,7 +4,7 @@
[ext_resource type="FontFile" uid="uid://bdkb43smt08c0" path="res://import/fonts/Ubuntu-B.ttf" id="2_q6nhe"] [ext_resource type="FontFile" uid="uid://bdkb43smt08c0" path="res://import/fonts/Ubuntu-B.ttf" id="2_q6nhe"]
[sub_resource type="GDScript" id="GDScript_80ahk"] [sub_resource type="GDScript" id="GDScript_80ahk"]
script/source = "@tool script/source = "
extends Node2D extends Node2D
@export var current_station: Scenes.id = Scenes.id.ADULT_DND: @export var current_station: Scenes.id = Scenes.id.ADULT_DND:

View File

@ -14,7 +14,7 @@ func _ready() -> void:
get_parent().load_save(save_game)) get_parent().load_save(save_game))
func start_room(): func start_room():
save_game = State.active_save_game save_game = State.save_game
State.pass_stage_to(%PlayerController) State.pass_stage_to(%PlayerController)
on_first_station() on_first_station()

View File

@ -5,7 +5,7 @@
[ext_resource type="Texture2D" uid="uid://bewykr0twbplg" path="res://base-environments/transition/import/textures/LateralTren_baseColor_upscayl_2x_realesrgan-x4plus-anime.png" id="5_6pwip"] [ext_resource type="Texture2D" uid="uid://bewykr0twbplg" path="res://base-environments/transition/import/textures/LateralTren_baseColor_upscayl_2x_realesrgan-x4plus-anime.png" id="5_6pwip"]
[sub_resource type="GDScript" id="GDScript_6pwip"] [sub_resource type="GDScript" id="GDScript_6pwip"]
script/source = "@tool script/source = "
extends Node3D extends Node3D
@export var door_open: bool: @export var door_open: bool:

View File

@ -958,23 +958,14 @@ viewport_path = NodePath("Displays/Train_Display_R")
[sub_resource type="ViewportTexture" id="ViewportTexture_csq32"] [sub_resource type="ViewportTexture" id="ViewportTexture_csq32"]
viewport_path = NodePath("Displays/Train_Display_L") viewport_path = NodePath("Displays/Train_Display_L")
[sub_resource type="Animation" id="Animation_symoa"] [sub_resource type="Animation" id="Animation_o0t2h"]
resource_name = "init" resource_name = "dnd_to_uni"
[sub_resource type="Animation" id="Animation_820wi"]
resource_name = "volunteer_exit"
[sub_resource type="Animation" id="Animation_e75no"] [sub_resource type="Animation" id="Animation_e75no"]
resource_name = "dnd_to_volunteer" resource_name = "dnd_to_volunteer"
[sub_resource type="Animation" id="Animation_c3uo7"] [sub_resource type="Animation" id="Animation_symoa"]
resource_name = "volunteer_to_uni" resource_name = "init"
[sub_resource type="Animation" id="Animation_r7fs3"]
resource_name = "volunteer_to_therapy"
[sub_resource type="Animation" id="Animation_o0t2h"]
resource_name = "dnd_to_uni"
[sub_resource type="Animation" id="Animation_jleua"] [sub_resource type="Animation" id="Animation_jleua"]
resource_name = "uni_to_burnout" resource_name = "uni_to_burnout"
@ -985,6 +976,15 @@ resource_name = "uni_to_therapy"
[sub_resource type="Animation" id="Animation_dm3ia"] [sub_resource type="Animation" id="Animation_dm3ia"]
resource_name = "uni_to_volunteer" resource_name = "uni_to_volunteer"
[sub_resource type="Animation" id="Animation_820wi"]
resource_name = "volunteer_exit"
[sub_resource type="Animation" id="Animation_r7fs3"]
resource_name = "volunteer_to_therapy"
[sub_resource type="Animation" id="Animation_c3uo7"]
resource_name = "volunteer_to_uni"
[sub_resource type="AnimationLibrary" id="AnimationLibrary_xcyoy"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_xcyoy"]
_data = { _data = {
&"dnd_to_uni": SubResource("Animation_o0t2h"), &"dnd_to_uni": SubResource("Animation_o0t2h"),
@ -1058,7 +1058,7 @@ transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 6.24
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7804413, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7804413, 0, 0)
[node name="MeshInstance3D8" type="MeshInstance3D" parent="Train/Visuals/Train"] [node name="MeshInstance3D8" type="MeshInstance3D" parent="Train/Visuals/Train"]
transform = Transform3D(-42.01, 4.075623e-07, 4.3401022e-07, -6.330816e-06, -2.8743172, -0.1808367, -5.9450385e-06, 0.1808367, -2.8743172, -3.9468384, 1.286, 2.488358) transform = Transform3D(-42.01, 4.075623e-07, 4.340103e-07, -6.330816e-06, -2.8743172, -0.1808367, -5.9450394e-06, 0.1808367, -2.8743172, -3.9468384, 1.286, 2.488358)
visible = false visible = false
material_override = SubResource("ShaderMaterial_0vobo") material_override = SubResource("ShaderMaterial_0vobo")
mesh = SubResource("QuadMesh_ppxbm") mesh = SubResource("QuadMesh_ppxbm")
@ -1391,6 +1391,7 @@ unique_name_in_owner = true
[node name="Displays" type="Node3D" parent="."] [node name="Displays" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.003971815, 9.536743e-07, 0.0078623295) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.003971815, 9.536743e-07, 0.0078623295)
visible = false
[node name="Train_Display_L" type="SubViewport" parent="Displays"] [node name="Train_Display_L" type="SubViewport" parent="Displays"]
transparent_bg = true transparent_bg = true

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_hmyim"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_hmyim"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_n54tc"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_n54tc"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="5_xi27m"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="5_xi27m"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="6_h63aa"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="6_h63aa"]
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="7_71rn2"] [ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="7_71rn2"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="8_3ljef"] [ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="8_3ljef"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="9_nvo2d"] [ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="9_nvo2d"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_280pk"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_280pk"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_ji3tv"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_ji3tv"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_iwhp8"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_iwhp8"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_iufku"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_iufku"]
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_4ni3m"] [ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_4ni3m"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_eqxbt"] [ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_eqxbt"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_pthbi"] [ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_pthbi"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_86ec2"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_86ec2"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_abtq0"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_abtq0"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_pcx8t"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_pcx8t"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_w4vem"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_w4vem"]
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_0dsyx"] [ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_0dsyx"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_fiu8d"] [ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_fiu8d"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_sh3ja"] [ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_sh3ja"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_8utmq"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_8utmq"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_gfeis"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_gfeis"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_u0xc1"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_u0xc1"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_62vlf"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_62vlf"]
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_6h2ud"] [ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_6h2ud"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_44s4k"] [ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_44s4k"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_rpv31"] [ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_rpv31"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_uxp36"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_uxp36"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_27dlw"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_27dlw"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_6qw45"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_6qw45"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_pf7gl"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_pf7gl"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_ecg2n"] [ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_ecg2n"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_ld7n3"] [ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_ld7n3"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_ym0sv"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_ym0sv"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_00crh"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_00crh"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_3iy8l"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_3iy8l"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_32a0r"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_32a0r"]
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_bfggg"] [ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_bfggg"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_hdxjv"] [ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_hdxjv"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_xkdnh"] [ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_xkdnh"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_d3khy"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_d3khy"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_fe2un"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_fe2un"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_uj7tn"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_uj7tn"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_05o76"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_05o76"]
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_0b3yt"] [ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_0b3yt"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_4fkwm"] [ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_4fkwm"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_ede0y"] [ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_ede0y"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_1pvsj"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_1pvsj"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_5x2mw"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_5x2mw"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_xe0ue"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_xe0ue"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_apcmj"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_apcmj"]
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_aytqp"] [ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_aytqp"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_l131v"] [ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_l131v"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_rd1kp"] [ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_rd1kp"]

View File

@ -7,7 +7,7 @@ signal ini_room
@onready var player: Player = %PlayerController @onready var player: Player = %PlayerController
func start_room(): func start_room():
save_game = State.active_save_game save_game = State.save_game
save_game.current_room = State.rooms.ADULTHOOD save_game.current_room = State.rooms.ADULTHOOD
Scenes.completed_sequences = save_game.mementos_complete Scenes.completed_sequences = save_game.mementos_complete
Scenes.started_sequences = save_game.mementos_complete Scenes.started_sequences = save_game.mementos_complete

View File

@ -21,8 +21,8 @@
[ext_resource type="PackedScene" uid="uid://brk4hjdf2x81a" path="res://logic-scenes/card_picker/card_picker.tscn" id="18_upyac"] [ext_resource type="PackedScene" uid="uid://brk4hjdf2x81a" path="res://logic-scenes/card_picker/card_picker.tscn" id="18_upyac"]
[ext_resource type="PackedScene" uid="uid://bnskiyx1sksww" path="res://logic-scenes/board/physics-board.tscn" id="19_ci4rn"] [ext_resource type="PackedScene" uid="uid://bnskiyx1sksww" path="res://logic-scenes/board/physics-board.tscn" id="19_ci4rn"]
[ext_resource type="PackedScene" uid="uid://citwb7f4dl3l1" path="res://thank-you.tscn" id="20_e1uao"] [ext_resource type="PackedScene" uid="uid://citwb7f4dl3l1" path="res://thank-you.tscn" id="20_e1uao"]
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/shaders/stars.gdshader" id="22_e1uao"] [ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro/shaders/stars.gdshader" id="22_e1uao"]
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/textures/sky_textures_2.png" id="23_my8p4"] [ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro/textures/sky_textures_2.png" id="23_my8p4"]
[sub_resource type="BoxMesh" id="BoxMesh_tmbwx"] [sub_resource type="BoxMesh" id="BoxMesh_tmbwx"]
size = Vector3(1, 2.778, 1.353) size = Vector3(1, 2.778, 1.353)
@ -196,7 +196,7 @@ func scene_finished(id: Scenes.id, _repeat: bool):
queue(\"RESET\") queue(\"RESET\")
func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void: func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void:
print(\"anim player accessed!\") print_debug(\"anim player accessed!\")
super.play(anin_name, a, b, c) super.play(anin_name, a, b, c)
func on_autism_done(): func on_autism_done():
@ -816,20 +816,36 @@ libraries = {
script = SubResource("GDScript_sg0pj") script = SubResource("GDScript_sg0pj")
[node name="autism" parent="Scenes/ScenePlayer" instance=ExtResource("10_gcdra")] [node name="autism" parent="Scenes/ScenePlayer" instance=ExtResource("10_gcdra")]
story_array = []
paragraph_lengths = [1]
[node name="burnout" parent="Scenes/ScenePlayer" instance=ExtResource("11_kmoh8")] [node name="burnout" parent="Scenes/ScenePlayer" instance=ExtResource("11_kmoh8")]
story_array = []
paragraph_lengths = [1]
[node name="university_eating" parent="Scenes/ScenePlayer" instance=ExtResource("12_6rb4d")] [node name="university_eating" parent="Scenes/ScenePlayer" instance=ExtResource("12_6rb4d")]
story_array = []
paragraph_lengths = [1]
[node name="university_advocacy" parent="Scenes/ScenePlayer" instance=ExtResource("13_5s6pb")] [node name="university_advocacy" parent="Scenes/ScenePlayer" instance=ExtResource("13_5s6pb")]
story_array = []
paragraph_lengths = [1]
[node name="therapy_uni" parent="Scenes/ScenePlayer" instance=ExtResource("14_upyac")] [node name="therapy_uni" parent="Scenes/ScenePlayer" instance=ExtResource("14_upyac")]
story_array = []
paragraph_lengths = [1]
[node name="therapy_volunteer" parent="Scenes/ScenePlayer" instance=ExtResource("15_ci4rn")] [node name="therapy_volunteer" parent="Scenes/ScenePlayer" instance=ExtResource("15_ci4rn")]
story_array = []
paragraph_lengths = [1]
[node name="trans" parent="Scenes/ScenePlayer" instance=ExtResource("16_e1uao")] [node name="trans" parent="Scenes/ScenePlayer" instance=ExtResource("16_e1uao")]
story_array = []
paragraph_lengths = [1]
[node name="trauma" parent="Scenes/ScenePlayer" instance=ExtResource("17_my8p4")] [node name="trauma" parent="Scenes/ScenePlayer" instance=ExtResource("17_my8p4")]
story_array = []
paragraph_lengths = [1]
[node name="UI" type="Control" parent="."] [node name="UI" type="Control" parent="."]
layout_mode = 3 layout_mode = 3

View File

@ -44,7 +44,7 @@ func _on_mouse_exited():
has_mouse = false has_mouse = false
func try_reveal(for_player: Player) -> bool: func try_reveal(for_player: Player) -> bool:
print("reveal ui!") print_debug("reveal ui!")
revealed = ui.try_reveal() revealed = ui.try_reveal()
if revealed: if revealed:
call_deferred("wait_for_ui_exit", for_player) call_deferred("wait_for_ui_exit", for_player)

View File

@ -5,7 +5,7 @@ func ready():
body_exited.connect(notify_player_exit) body_exited.connect(notify_player_exit)
func notify_player_entry(body: RigidBody3D): func notify_player_entry(body: RigidBody3D):
print("Player entered Crouch area.") print_debug("Player entered Crouch area.")
if body is Player: if body is Player:
body.inside_crouch_volume.append(self) body.inside_crouch_volume.append(self)

View File

@ -6,7 +6,7 @@
[ext_resource type="ArrayMesh" uid="uid://f5fr2e5gq313" path="res://base-environments/youth_room/shaders/fairy_light_diode.res" id="4_qh8yy"] [ext_resource type="ArrayMesh" uid="uid://f5fr2e5gq313" path="res://base-environments/youth_room/shaders/fairy_light_diode.res" id="4_qh8yy"]
[sub_resource type="GDScript" id="GDScript_2caij"] [sub_resource type="GDScript" id="GDScript_2caij"]
script/source = "@tool script/source = "
extends Node3D extends Node3D
@export var light_array: Array[Vector3]: @export var light_array: Array[Vector3]:

View File

@ -3,7 +3,7 @@
[ext_resource type="PackedScene" uid="uid://c2uf5vwe2rdbd" path="res://base-environments/youth_room/import/cheeky-city.glb" id="1_yckvd"] [ext_resource type="PackedScene" uid="uid://c2uf5vwe2rdbd" path="res://base-environments/youth_room/import/cheeky-city.glb" id="1_yckvd"]
[sub_resource type="GDScript" id="GDScript_bfd5g"] [sub_resource type="GDScript" id="GDScript_bfd5g"]
script/source = "@tool script/source = "
extends Node3D extends Node3D
@export var light_energy:float = 0: @export var light_energy:float = 0:

View File

@ -1 +0,0 @@
uid://belkrno67sft0

View File

@ -4,7 +4,7 @@
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_bkq30"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_bkq30"]
[ext_resource type="ArrayMesh" uid="uid://bfc3d4g40n0wy" path="res://logic-scenes/collectable/import/old-mask.res" id="2_jrxfv"] [ext_resource type="ArrayMesh" uid="uid://bfc3d4g40n0wy" path="res://logic-scenes/collectable/import/old-mask.res" id="2_jrxfv"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_o63m7"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_o63m7"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_q0fee"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_q0fee"]
[ext_resource type="AudioStream" uid="uid://dfblaqsfgm8le" path="res://base-environments/youth_room/audio/Childhood.wav" id="7_51c6s"] [ext_resource type="AudioStream" uid="uid://dfblaqsfgm8le" path="res://base-environments/youth_room/audio/Childhood.wav" id="7_51c6s"]
[ext_resource type="AudioStream" uid="uid://b5d4c6n2mw02s" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_TheaterAG_Deutsch_newt.wav" id="7_htg3l"] [ext_resource type="AudioStream" uid="uid://b5d4c6n2mw02s" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_TheaterAG_Deutsch_newt.wav" id="7_htg3l"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="8_51c6s"] [ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="8_51c6s"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_o2rjr"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_o2rjr"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_xwj2j"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_xwj2j"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_qgfj8"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_qgfj8"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="5_ddnfo"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="5_ddnfo"]
[ext_resource type="AudioStream" uid="uid://cvlqvlrc6lqru" path="res://base-environments/youth_room/audio/draven-de.wav" id="5_f6vs7"] [ext_resource type="AudioStream" uid="uid://cvlqvlrc6lqru" path="res://base-environments/youth_room/audio/draven-de.wav" id="5_f6vs7"]
[ext_resource type="AudioStream" uid="uid://c4clagpd3ril0" path="res://base-environments/youth_room/audio/Ambient 5.ogg" id="6_7f2et"] [ext_resource type="AudioStream" uid="uid://c4clagpd3ril0" path="res://base-environments/youth_room/audio/Ambient 5.ogg" id="6_7f2et"]
[ext_resource type="AudioStream" uid="uid://d1r1tvb1paup4" path="res://base-environments/youth_room/audio/draeven.ogg" id="7_nbb1o"] [ext_resource type="AudioStream" uid="uid://d1r1tvb1paup4" path="res://base-environments/youth_room/audio/draeven.ogg" id="7_nbb1o"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_aby4n"] [ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_aby4n"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_k4i8e"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_k4i8e"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_s5qj7"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_s5qj7"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="5_0qiyf"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="5_0qiyf"]
[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="5_s5qj7"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="5_s5qj7"]
[ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="6_0qiyf"] [ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="6_0qiyf"]
[ext_resource type="AudioStream" uid="uid://bwh60165c3saj" path="res://base-environments/youth_room/audio/lisa_youth_voice.ogg" id="7_bvh45"] [ext_resource type="AudioStream" uid="uid://bwh60165c3saj" path="res://base-environments/youth_room/audio/lisa_youth_voice.ogg" id="7_bvh45"]
@ -821,8 +821,6 @@ offset_right = -424.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_aby4n") script = ExtResource("1_aby4n")
story_array = PackedStringArray("Why do i still have this junk lying around? its not like I want to do ju jutsu ever again. I just fucked it.", "I mean I did enjoy it while it lasted. Being able to properly hit people was great.", "It gave me the confidence to intimidate students, that were begging to get folded and - as I only once actually got to do that - it also was a great vent for anger. ", "I mean my tits just about killed me during warmup and the changing room really didn\'t need mirrors - thank you I know my hips are fat and disgusting - but at least there was Lukas.", "He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.", "Also: my math grades pretty much leaped for my final year in high school thanks to him.", "He also helped me so much with jiu jitsu, as he properly floored me when I slipped up. ", "So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.", "We also had my first proper kiss. I thought I loved him. But now?", "He was weird that evening. Even more huggy and hyperactive than usual.", "We were under my bed, reading my secret comic stash when I got tired of the floor and told him we should go upstairs.", "We had a play fight on my mattress. I\'ve never seen him fight like this.", "His fingers Curled across my Skin without grabbing me, like he would normally do. And he let me win", "… with this smirk on his face.", "I rolled over exhausted when suddenly he sat on top of me, a pearl of sweat dropped from his nose on my throat.", "He started undoing his shirt.", "Do you have condoms?", "Yes, of course everybody has Why did he ask that?", "I saw my body lying on the bed, getting undressed. I was drifting away, towards the stars.", "My body didn\'t move. It didn\'t say a word when the butterflies tried to escape from its stomach as he kissed it.", "I … observed him from afar. He … didn\'t seem to notice, that I had left.", "That I didn\'t return to kiss him goodbye. That I didn\'t hug him when he went home.", "My hands knocked on my brothers door. He let me lie on his carpet.", "I slowly returned.", "\"How did it go?, Fabian asked.", "\"It was moist”, I said.", "“That usually helps.”", "He laughed awkwardly. I just wanted to also laugh, but curled into a ball and cried.", "It took him a while to say something. “I … you … it\'s fine Lisa. I know it hurts the first time.”", "He gently stroked the back I was curling towards him.", "That was good. He was a sweet angel. Why must he be so bad at comforting?")
paragraph_lengths = PackedInt32Array(3, 6, 8, 9, 10, 12, 15, 16, 17, 18, 20, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 32, 31, 30)
progress = 17.0 progress = 17.0
[node name="PanelContainer" type="PanelContainer" parent="."] [node name="PanelContainer" type="PanelContainer" parent="."]

View File

@ -1,4 +1,3 @@
@tool
extends CenterContainer extends CenterContainer
signal text_finished signal text_finished
@ -20,14 +19,14 @@ var max_lines: float = 0
set(value): set(value):
progress = value progress = value
if is_node_ready() and not all_text_revealed: if is_node_ready() and not all_text_revealed:
var start_index = 0 var start_index := 0
if progress >= substring_sizes.size() or progress < 0: if progress >= substring_sizes.size() or progress < 0:
label.visible_ratio = 1 label.visible_ratio = 1
elif progress > 0: elif progress > 0:
for i in range(min(progress, substring_sizes.size()-1) as int) if progress > 0 else range(substring_sizes.size()-1): for i in range(min(progress, substring_sizes.size()-1) as int) if progress > 0 else range(substring_sizes.size()-1):
start_index += substring_sizes[i] start_index += substring_sizes[i]
label.visible_characters = start_index + substring_sizes[min(progress as int, substring_sizes.size()-1)] * fmod(progress, 1) label.visible_characters = start_index + int(substring_sizes[min(progress as int, substring_sizes.size()-1)] * fmod(progress, 1))
else: else:
label.visible_ratio = 0 label.visible_ratio = 0
@ -72,7 +71,6 @@ func _ready() -> void:
skip_control.skip.connect(skip_text) skip_control.skip.connect(skip_text)
if get_tree().root.get_child(-1) == self: if get_tree().root.get_child(-1) == self:
TranslationServer.set_locale("en")
play_scene() play_scene()
story_array = story_array story_array = story_array
progress = progress progress = progress
@ -96,7 +94,7 @@ func _rebuild():
max_lines = float(label.get_line_count()) max_lines = float(label.get_line_count())
func try_scroll(): func try_scroll():
var forward_target: int var forward_target: float
#print( "max lines: " + str(max_lines)) #print( "max lines: " + str(max_lines))
#print( "current lines: " + str(label.get_character_line(label.visible_characters))) #print( "current lines: " + str(label.get_character_line(label.visible_characters)))
@ -111,7 +109,7 @@ func try_scroll():
else: else:
forward_target = label.size.y - scroll_container.size.y forward_target = label.size.y - scroll_container.size.y
if scroll_target != null: if scroll_target != null:
var tween: Tween = get_tree().create_tween() #var tween: Tween = get_tree().create_tween()
##tween.set_trans() ##tween.set_trans()
scroll_target = forward_target scroll_target = forward_target
@ -152,18 +150,18 @@ func play_scene():
finished.emit() finished.emit()
func _unhandled_input(event: InputEvent) -> void: func _unhandled_input(event: InputEvent) -> void:
var just_revealed_text = false var just_revealed_text := false
if event is InputEventMouseButton: if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_WHEEL_DOWN: if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
scroll_target += 40 scroll_target += 40
if not all_text_revealed: just_revealed_text if not all_text_revealed:
all_text_revealed = true just_revealed_text = true
if event.button_index == MOUSE_BUTTON_WHEEL_UP: if event.button_index == MOUSE_BUTTON_WHEEL_UP:
scroll_target -= 40 scroll_target -= 40
if not all_text_revealed: just_revealed_text if not all_text_revealed:
just_revealed_text = true
if just_revealed_text and animation_complete:
all_text_revealed = true all_text_revealed = true
if just_revealed_text:
if animation_complete: all_text_revealed = true
var scroll_target: float = 0: var scroll_target: float = 0:
set(value): set(value):
@ -172,7 +170,7 @@ func _process(delta: float) -> void:
# FIXME: maybe change this to has stage? # FIXME: maybe change this to has stage?
if visible and not Engine.is_editor_hint(): if visible and not Engine.is_editor_hint():
if scroll_container.scroll_vertical != scroll_target: if scroll_container.scroll_vertical != scroll_target:
scroll_container.scroll_vertical += (scroll_target-scroll_container.scroll_vertical)*delta*6 scroll_container.scroll_vertical += int((scroll_target-scroll_container.scroll_vertical)*delta*6)
var intro_triggered:= false var intro_triggered:= false
func trigger_intro(): func trigger_intro():

View File

@ -5,7 +5,7 @@
[ext_resource type="ArrayMesh" uid="uid://bhfqffldbvdgq" path="res://base-environments/youth_room/import/youth_special_meshes_comic_book_1.res" id="3_ho85h"] [ext_resource type="ArrayMesh" uid="uid://bhfqffldbvdgq" path="res://base-environments/youth_room/import/youth_special_meshes_comic_book_1.res" id="3_ho85h"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_ayw8a"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_ayw8a"]
[ext_resource type="ArrayMesh" uid="uid://byjfgvx7jeal" path="res://base-environments/youth_room/import/youth_special_meshes_comic_book_2.res" id="4_kn83e"] [ext_resource type="ArrayMesh" uid="uid://byjfgvx7jeal" path="res://base-environments/youth_room/import/youth_special_meshes_comic_book_2.res" id="4_kn83e"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="5_b3y80"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="5_b3y80"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="8_ho85h"] [ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="8_ho85h"]
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="8_kn83e"] [ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="8_kn83e"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="9_kn83e"] [ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="9_kn83e"]

View File

@ -14,7 +14,7 @@
[ext_resource type="AudioStream" uid="uid://cho5neuxkvpyh" path="res://base-environments/youth_room/audio/Voice Loop.wav" id="12_kmdcg"] [ext_resource type="AudioStream" uid="uid://cho5neuxkvpyh" path="res://base-environments/youth_room/audio/Voice Loop.wav" id="12_kmdcg"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="13_h8ip1"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="13_h8ip1"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="14_t30qm"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="14_t30qm"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="15_n6nrr"] [ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="15_n6nrr"]
[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="16_t6yr4"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="16_t6yr4"]
[ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="17_ce5x6"] [ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="17_ce5x6"]
[ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="18_xppl3"] [ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="18_xppl3"]
@ -32,8 +32,8 @@
[ext_resource type="AudioStream" uid="uid://bghjiqkyehs1p" path="res://base-environments/youth_room/import/sounds/rain and thunder.mp3" id="30_ustah"] [ext_resource type="AudioStream" uid="uid://bghjiqkyehs1p" path="res://base-environments/youth_room/import/sounds/rain and thunder.mp3" id="30_ustah"]
[ext_resource type="PackedScene" uid="uid://dwtxjvprjyx8p" path="res://base-environments/youth_room/lava-lamp.tscn" id="31_hv11t"] [ext_resource type="PackedScene" uid="uid://dwtxjvprjyx8p" path="res://base-environments/youth_room/lava-lamp.tscn" id="31_hv11t"]
[ext_resource type="PackedScene" uid="uid://c0i4ydmxtxfho" path="res://base-environments/youth_room/import/youth_room.glb" id="32_xw563"] [ext_resource type="PackedScene" uid="uid://c0i4ydmxtxfho" path="res://base-environments/youth_room/import/youth_room.glb" id="32_xw563"]
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/shaders/stars.gdshader" id="33_v36su"] [ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro/shaders/stars.gdshader" id="33_v36su"]
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/textures/sky_textures_2.png" id="34_g2brt"] [ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro/textures/sky_textures_2.png" id="34_g2brt"]
[ext_resource type="ArrayMesh" uid="uid://jjrvf8px2ut3" path="res://base-environments/youth_room/shaders/winfow_frames.res" id="35_62hgr"] [ext_resource type="ArrayMesh" uid="uid://jjrvf8px2ut3" path="res://base-environments/youth_room/shaders/winfow_frames.res" id="35_62hgr"]
[ext_resource type="Material" uid="uid://bmu72cnsr8c5e" path="res://base-environments/youth_room/shaders/window.material" id="36_3qqid"] [ext_resource type="Material" uid="uid://bmu72cnsr8c5e" path="res://base-environments/youth_room/shaders/window.material" id="36_3qqid"]
[ext_resource type="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="37_3deyi"] [ext_resource type="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="37_3deyi"]

View File

@ -1,3 +1,4 @@
class_name YouthRoom
extends RoomTemplate extends RoomTemplate
signal ini_room signal ini_room
@ -8,7 +9,7 @@ signal ini_room
@onready var card_picker: CardPicker = %Picker @onready var card_picker: CardPicker = %Picker
func start_room(): func start_room():
save_game = State.active_save_game save_game = State.save_game
save_game.current_room = State.rooms.YOUTH save_game.current_room = State.rooms.YOUTH
Scenes.completed_sequences = save_game.mementos_complete Scenes.completed_sequences = save_game.mementos_complete
Scenes.started_sequences = save_game.mementos_complete Scenes.started_sequences = save_game.mementos_complete
@ -25,18 +26,17 @@ func start_room():
State.pass_stage_to(%PlayerController) State.pass_stage_to(%PlayerController)
%LightAnimation.lights_on() %LightAnimation.lights_on()
func get_ready(): func get_ready():
id = State.rooms.YOUTH id = State.rooms.YOUTH
self.show() self.show()
$sfx/distant_rain.play() $sfx/distant_rain.play()
$"sfx/rain on window".play() $"sfx/rain on window".play()
await get_tree().create_timer(0.1).timeout await get_tree().process_frame #TODO: this was 0.1s, not sure if needed at all
%Board.hide() %Board.hide()
func _ready(): func _ready():
super._ready()
Scenes.scene_finished.connect(_on_scene_finished) Scenes.scene_finished.connect(_on_scene_finished)
card_picker.cards_picked.connect(card_board.populate_board) card_picker.cards_picked.connect(card_board.populate_board)
func pull_save_state(save: SaveGame) -> void: func pull_save_state(save: SaveGame) -> void:

View File

@ -0,0 +1 @@
uid://bsop46tqngddc

View File

@ -1,8 +1,7 @@
[gd_scene load_steps=137 format=4 uid="uid://b3b0gyvklqn50"] [gd_scene load_steps=136 format=4 uid="uid://b3b0gyvklqn50"]
[ext_resource type="Script" uid="uid://belkrno67sft0" path="res://base-environments/youth_room/room_handle.gd" id="1_aitp0"] [ext_resource type="Script" uid="uid://bsop46tqngddc" path="res://base-environments/youth_room/youth_room.gd" id="1_aitp0"]
[ext_resource type="AudioStream" uid="uid://1h6k2d8q1kw3" path="res://base-environments/youth_room/import/sounds/rain_on_window.mp3" id="2_3haaq"] [ext_resource type="AudioStream" uid="uid://1h6k2d8q1kw3" path="res://base-environments/youth_room/import/sounds/rain_on_window.mp3" id="2_3haaq"]
[ext_resource type="Resource" uid="uid://bgplfqxa852wo" path="res://dev-util/debug_save.tres" id="2_h6j14"]
[ext_resource type="PackedScene" uid="uid://mkccbig41bqb" path="res://logic-scenes/player_controller/player_controller.tscn" id="3_foj4y"] [ext_resource type="PackedScene" uid="uid://mkccbig41bqb" path="res://logic-scenes/player_controller/player_controller.tscn" id="3_foj4y"]
[ext_resource type="AudioStream" uid="uid://bbpo1hu35yer8" path="res://base-environments/youth_room/import/sounds/thunder.mp3" id="3_wcypa"] [ext_resource type="AudioStream" uid="uid://bbpo1hu35yer8" path="res://base-environments/youth_room/import/sounds/thunder.mp3" id="3_wcypa"]
[ext_resource type="Script" uid="uid://c281w7earok6w" path="res://base-environments/youth_room/crouch_volume.gd" id="3_x3dlb"] [ext_resource type="Script" uid="uid://c281w7earok6w" path="res://base-environments/youth_room/crouch_volume.gd" id="3_x3dlb"]
@ -38,9 +37,9 @@
[ext_resource type="PackedScene" uid="uid://bw47g00bi710i" path="res://base-environments/youth_room/youth_room_visuals.tscn" id="30_dqyng"] [ext_resource type="PackedScene" uid="uid://bw47g00bi710i" path="res://base-environments/youth_room/youth_room_visuals.tscn" id="30_dqyng"]
[ext_resource type="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="32_2vgep"] [ext_resource type="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="32_2vgep"]
[ext_resource type="Script" uid="uid://br1w2nt4pj8lt" path="res://vfx/post_processing/post_process_shader_template.gd" id="32_corra"] [ext_resource type="Script" uid="uid://br1w2nt4pj8lt" path="res://vfx/post_processing/post_process_shader_template.gd" id="32_corra"]
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/shaders/stars.gdshader" id="32_k5rvd"] [ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro/shaders/stars.gdshader" id="32_k5rvd"]
[ext_resource type="ArrayMesh" uid="uid://jjrvf8px2ut3" path="res://base-environments/youth_room/shaders/winfow_frames.res" id="32_w6oa5"] [ext_resource type="ArrayMesh" uid="uid://jjrvf8px2ut3" path="res://base-environments/youth_room/shaders/winfow_frames.res" id="32_w6oa5"]
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/textures/sky_textures_2.png" id="33_mvrs2"] [ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro/textures/sky_textures_2.png" id="33_mvrs2"]
[ext_resource type="Shader" uid="uid://dspme86ky8yj0" path="res://base-environments/youth_room/rainy-window.gdshader" id="35_ea6x8"] [ext_resource type="Shader" uid="uid://dspme86ky8yj0" path="res://base-environments/youth_room/rainy-window.gdshader" id="35_ea6x8"]
[ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="36_bgk6f"] [ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="36_bgk6f"]
[ext_resource type="PackedScene" uid="uid://cg70r0102t8nl" path="res://base-environments/youth_room/fairylights.tscn" id="39_q6rov"] [ext_resource type="PackedScene" uid="uid://cg70r0102t8nl" path="res://base-environments/youth_room/fairylights.tscn" id="39_q6rov"]
@ -975,7 +974,7 @@ func scene_finished(id: Scenes.id, _repeat: bool):
queue(\"RESET\") queue(\"RESET\")
func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void: func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void:
print(\"anim player accessed!\") print_debug(\"anim player accessed!\")
super.play(anin_name, a, b, c) super.play(anin_name, a, b, c)
" "
@ -1736,7 +1735,7 @@ func _ready():
camera = get_tree().root.get_viewport().get_camera_3d() camera = get_tree().root.get_viewport().get_camera_3d()
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta): func _process(_delta):
self.global_transform = camera.global_transform self.global_transform = camera.global_transform
" "
@ -1758,7 +1757,6 @@ func hide():
[node name="youth room" type="Node3D" groups=["serializable"]] [node name="youth room" type="Node3D" groups=["serializable"]]
process_mode = 1 process_mode = 1
script = ExtResource("1_aitp0") script = ExtResource("1_aitp0")
save_game = ExtResource("2_h6j14")
[node name="logic" type="Node3D" parent="."] [node name="logic" type="Node3D" parent="."]
@ -2039,6 +2037,8 @@ volume_db = -80.0
bus = &"music" bus = &"music"
[node name="childhood" parent="logic/ScenePlayer" instance=ExtResource("12_viwxf")] [node name="childhood" parent="logic/ScenePlayer" instance=ExtResource("12_viwxf")]
story_array = []
paragraph_lengths = [1]
[node name="VoiceTraining" type="AudioStreamPlayer" parent="logic/ScenePlayer"] [node name="VoiceTraining" type="AudioStreamPlayer" parent="logic/ScenePlayer"]
stream = ExtResource("10_wwwdq") stream = ExtResource("10_wwwdq")
@ -2048,11 +2048,15 @@ bus = &"music"
[node name="JuiJutsu" parent="logic/ScenePlayer" instance=ExtResource("12_x3dlb")] [node name="JuiJutsu" parent="logic/ScenePlayer" instance=ExtResource("12_x3dlb")]
[node name="voice_training" parent="logic/ScenePlayer" instance=ExtResource("13_v3447")] [node name="voice_training" parent="logic/ScenePlayer" instance=ExtResource("13_v3447")]
story_array = []
paragraph_lengths = [1]
[node name="Jui_Jutsu" type="AudioStreamPlayer" parent="logic/ScenePlayer"] [node name="Jui_Jutsu" type="AudioStreamPlayer" parent="logic/ScenePlayer"]
bus = &"music" bus = &"music"
[node name="draven" parent="logic/ScenePlayer" instance=ExtResource("19_d3c7p")] [node name="draven" parent="logic/ScenePlayer" instance=ExtResource("19_d3c7p")]
story_array = []
paragraph_lengths = [1]
[node name="starlight_mesh" type="MeshInstance3D" parent="logic/ScenePlayer"] [node name="starlight_mesh" type="MeshInstance3D" parent="logic/ScenePlayer"]
transform = Transform3D(0.999, 0, 0, 0, 0.999, 0, 0, 0, 0.999, 0, 0, 0) transform = Transform3D(0.999, 0, 0, 0, 0.999, 0, 0, 0, 0.999, 0, 0, 0)

View File

@ -4,12 +4,12 @@
[ext_resource type="Texture2D" uid="uid://dp1bv446sk2xf" path="res://addons/kenney_particle_pack/flare_01.png" id="2_ipdak"] [ext_resource type="Texture2D" uid="uid://dp1bv446sk2xf" path="res://addons/kenney_particle_pack/flare_01.png" id="2_ipdak"]
[sub_resource type="GDScript" id="GDScript_w4p0y"] [sub_resource type="GDScript" id="GDScript_w4p0y"]
script/source = "@tool script/source = "
extends Node3D extends Node3D
var has_stage var has_stage
@export_tool_button(\"Play Chest Animation\") var play_action = play_chest_animation #@export_tool_button(\"Play Chest Animation\") var play_action = play_chest_animation
func _ready() -> void: func _ready() -> void:
if not Engine.is_editor_hint(): if not Engine.is_editor_hint():

View File

@ -1,12 +1,12 @@
@tool
class_name ThemedButton extends Button class_name ThemedButton extends Button
@export_tool_button("Rebuild") var rebuild_action = rebuild #@export_tool_button("Rebuild") var rebuild_action := rebuild
@onready var side_decor: CompressedTexture2D = load("res://import/interface-elements/button_active.png") @onready var side_decor := load("res://import/interface-elements/button_active.png")
@onready var top_corner_decor: CompressedTexture2D = load("res://import/interface-elements/top_corner.png") @onready var top_corner_decor := load("res://import/interface-elements/top_corner.png")
@onready var lower_corner_decor: CompressedTexture2D = load("res://import/interface-elements/lower_corner.png") @onready var lower_corner_decor := load("res://import/interface-elements/lower_corner.png")
func _ready() -> void: func _ready() -> void:
print_debug(owner)
rebuild() rebuild()
theme_changed.connect(rebuild) theme_changed.connect(rebuild)
resized.connect(rebuild) resized.connect(rebuild)

1
src/code/chapter.gd Normal file
View File

@ -0,0 +1 @@


1
src/code/chapter.gd.uid Normal file
View File

@ -0,0 +1 @@
uid://dkn824t1gn0km

View File

@ -1,731 +0,0 @@
[gd_scene load_steps=37 format=3 uid="uid://dxxiyefijv48j"]
[ext_resource type="Texture2D" uid="uid://d3ewjumh0b0g6" path="res://logic-scenes/main menu/logo.png" id="1_61qpo"]
[ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="1_t34p3"]
[ext_resource type="Texture2D" uid="uid://sfo05h6uah7b" path="res://import/interface-elements/USK_12.svg" id="2_ncfee"]
[ext_resource type="Texture2D" uid="uid://bdyg065h8vcdi" path="res://base-environments/youth_room/shaders/starlight-textures.png" id="2_s1yf2"]
[ext_resource type="Texture2D" uid="uid://buo4ntxw1vofu" path="res://addons/input_prompts/icons/keyboard/w.png" id="4_8e30h"]
[ext_resource type="Script" uid="uid://bbs1u7ojno7xo" path="res://addons/input_prompts/action_prompt/action_prompt.gd" id="5_6w5b4"]
[ext_resource type="Texture2D" uid="uid://yakqusko3p3h" path="res://addons/input_prompts/icons/keyboard/a.png" id="7_g425y"]
[ext_resource type="Texture2D" uid="uid://b0kuadlp4jw6j" path="res://addons/input_prompts/icons/keyboard/d.png" id="8_kj67n"]
[ext_resource type="Texture2D" uid="uid://bwhf0tx67yj7a" path="res://addons/input_prompts/icons/keyboard/s.png" id="9_xo70c"]
[ext_resource type="Script" uid="uid://0h0lrkntx0uh" path="res://logic-scenes/main menu/pause_menu.gd" id="10_g425y"]
[ext_resource type="PackedScene" uid="uid://u0bwjr5l6nkh" path="res://logic-scenes/main menu/privacy_settings.tscn" id="10_jirkf"]
[ext_resource type="PackedScene" uid="uid://g2a27jwdapai" path="res://logic-scenes/card_burner/card_burner.tscn" id="10_kj67n"]
[ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="11_kj67n"]
[ext_resource type="PackedScene" uid="uid://b3wlecqvelh22" path="res://logic-scenes/main menu/acessability_settings.tscn" id="11_kt5p7"]
[ext_resource type="PackedScene" uid="uid://citwb7f4dl3l1" path="res://thank-you.tscn" id="13_xo70c"]
[ext_resource type="AudioStream" uid="uid://cho5neuxkvpyh" path="res://base-environments/youth_room/audio/Voice Loop.wav" id="14_k41g6"]
[sub_resource type="GDScript" id="GDScript_t34p3"]
script/source = "extends Node3D
var has_stage = false
var room = preload(\"res://base-environments/youth_room/youth_room.tscn\")
var loaded_room: RoomTemplate
func _ready() -> void:
State.take_stage(self)
load_room()
State.settings_initialised = true
State.show_content_notes = false
State.text_language = 1
State.speech_language = 1
$Menu/VBoxContainer2/PressStart.grab_focus()
Scenes.sign_up_for_sequence(prepare_transition, Scenes.id.TRANSITION, 0)
Scenes.sign_up_for_sequence(transition, Scenes.id.TRANSITION, 2)
if OS.get_locale_language() == \"de\":
$Menu/VBoxContainer/SpeechButton.select(1)
func prepare_transition(_id):
await get_tree().process_frame
Scenes.continue_sequence(self)
await get_tree().create_timer(5.0).timeout
loaded_room.prepare_transition()
ResourceLoader.load_threaded_request(\"res://base-environments/transition/first_platform.tscn\")
func transition(_id, _repeat):
#$TextureRect.texture = get_tree().root.get_texture()
#$TextureRect.visible = true
loaded_room.unload()
var packed_second_room:PackedScene = ResourceLoader.load_threaded_get(\"res://base-environments/transition/first_platform.tscn\")
loaded_room.queue_free()
%Room.add_child(packed_second_room.instantiate())
await get_tree().create_timer(15.5).timeout
$AudioStreamPlayer/AnimationPlayer.play(\"ending\")
$ending.show()
$ending.mouse_filter = Control.MOUSE_FILTER_STOP
%Room.get_child(0).queue_free()
func load_room():
for child in %Room.get_children():
child.queue_free()
loaded_room = room.instantiate()
%Room.add_child(loaded_room)
var in_game: bool
func _on_start_button_pressed():
in_game = true
var new_save = SaveGame.new()
if DirAccess.dir_exists_absolute( State.user_saves_path ):
var usr_dir = DirAccess.open(State.user_saves_path)
for path in usr_dir.get_files():
if path.ends_with(\".json\"):
var found_save: = SaveGame.new(\"%s/%s\" % [State.user_saves_path, path.get_basename()])
if found_save.is_demo:
new_save = found_save
break
State.active_save_game = new_save
var vis_tween = get_tree().create_tween()
vis_tween.tween_property(%Menu, \"modulate\", Color(1,1,1,0), .3)
await vis_tween.finished
%Menu.visible = false
%Menu.mouse_filter = Control.MouseFilter.MOUSE_FILTER_PASS
loaded_room.start_room()
func _process(delta: float) -> void:
if Input.is_action_just_pressed(\"reset_demo\"):
_on_reset()
func _on_reset():
load_room()
%Menu.modulate = Color.WHITE
%Menu.mouse_filter = Control.MouseFilter.MOUSE_FILTER_STOP
%Menu.visible = true
func _on_cn_box_toggled(toggled_on: bool) -> void:
State.show_content_notes = toggled_on
func _on_motion_box_toggled(toggled_on: bool) -> void:
State.reduce_motion = toggled_on
func _on_text_button_item_selected(index: int) -> void:
match index:
0:
State.text_language = 1
1:
State.text_language = 2
func _on_speech_button_item_selected(index: int) -> void:
State.speech_language = index + 1
%TextButton.select(1)
func _unhandled_input(event: InputEvent) -> void:
if event is InputEvent and in_game:
if event.is_action_pressed(\"ui_menu\") and not %Accessibility.is_active:
toggle_pause_menu()
func show_accessibility_settings():
%AccessibilityContainer.show()
%Accessibility.is_active = true
await %Accessibility.leave_stage
%AccessibilityContainer.hide()
func toggle_pause_menu():
if not get_tree().paused:
get_tree().paused = true
%PauseContainer.show()
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
else:
get_tree().paused = false
%PauseContainer.hide()
if State.stage_list[0] is Player:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
"
[sub_resource type="Shader" id="Shader_jirkf"]
code = "shader_type canvas_item;
render_mode blend_premul_alpha;
uniform float nebula_brightness = 4;
uniform vec2 nebula_scale = vec2(1.5);
uniform sampler2D starlight_noise: repeat_enable;
uniform sampler2D starlight_textures;
uniform float rotation_speed = 0.02;
uniform vec2 rotation_pivot = vec2(.8);
uniform vec2 drift_compensation = vec2(0.1, -0.2);
uniform float noise_strength = 0.2;
// https://gist.github.com/ayamflow/c06bc0c8a64f985dd431bd0ac5b557cd
vec2 rotateUV(vec2 uv, vec2 pivot, float rotation)
{
return vec2(
cos(rotation) * (uv.x - pivot.x) + sin(rotation) * (uv.y - pivot.y) + pivot.x,
cos(rotation) * (uv.y - pivot.y) - sin(rotation) * (uv.x - pivot.x) + pivot.y
);
}
//clamp(, .0, 1.0
void fragment() {
COLOR *= vec4(.0,
texture(starlight_textures,fract(UV*2.0)).x * 2.0*pow(max(sin(TIME + 10.0 * texture(starlight_textures,UV).y), .0), 5.0),
texture(starlight_textures,
clamp(
UV / nebula_scale + drift_compensation + 1.0 *
texture(starlight_noise, rotateUV(
UV / nebula_scale + noise_strength * texture(starlight_noise, rotateUV(UV, -rotation_pivot, TIME*rotation_speed)).yz,
rotation_pivot, TIME*rotation_speed)
).xz,
.0, 1.0))
.z * nebula_brightness,
clamp(pow(COLOR.x * 2.5 - (texture(starlight_noise, UV*2.0+TIME*.02).x + 0.8), 1.5), .0, 1.0)
) * COLOR.w;
}
"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_k41g6"]
shader = SubResource("Shader_jirkf")
shader_parameter/nebula_brightness = 2.4
shader_parameter/nebula_scale = Vector2(1.3, 1.6)
shader_parameter/starlight_noise = ExtResource("1_t34p3")
shader_parameter/starlight_textures = ExtResource("2_s1yf2")
shader_parameter/rotation_speed = 0.02
shader_parameter/rotation_pivot = Vector2(0.8, 0.8)
shader_parameter/drift_compensation = Vector2(0.1, -0.2)
shader_parameter/noise_strength = 0.2
[sub_resource type="Gradient" id="Gradient_kt5p7"]
interpolation_color_space = 2
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_jirkf"]
gradient = SubResource("Gradient_kt5p7")
width = 2048
height = 1536
fill = 1
fill_from = Vector2(0.538462, 0.491453)
fill_to = Vector2(1.3, -0.3)
[sub_resource type="InputEventKey" id="InputEventKey_kt5p7"]
device = -1
physical_keycode = 87
unicode = 119
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_mivr6"]
device = -1
axis = 1
axis_value = -1.0
[sub_resource type="InputEventKey" id="InputEventKey_52c3j"]
device = -1
physical_keycode = 65
unicode = 97
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_b7q2n"]
device = -1
axis_value = -1.0
[sub_resource type="InputEventKey" id="InputEventKey_qhf78"]
device = -1
physical_keycode = 68
unicode = 100
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_gatj6"]
device = -1
axis_value = 1.0
[sub_resource type="InputEventKey" id="InputEventKey_ol51q"]
device = -1
physical_keycode = 83
unicode = 115
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_2rqk2"]
device = -1
axis = 1
axis_value = 1.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kt5p7"]
bg_color = Color(0.0288289, 0.0448641, 0.121276, 1)
border_width_left = 10
border_width_top = 10
border_width_right = 10
border_width_bottom = 10
border_color = Color(0.0288289, 0.0448641, 0.121276, 1)
corner_radius_top_left = 20
corner_radius_top_right = 20
corner_radius_bottom_right = 20
corner_radius_bottom_left = 20
expand_margin_left = 20.0
expand_margin_right = 20.0
[sub_resource type="Shader" id="Shader_gatj6"]
code = "shader_type canvas_item;
render_mode blend_premul_alpha;
uniform float nebula_brightness = 4;
uniform vec2 nebula_scale = vec2(1.5);
uniform sampler2D starlight_noise: repeat_enable;
uniform sampler2D starlight_textures;
uniform float rotation_speed = 0.02;
uniform vec2 rotation_pivot = vec2(.8);
uniform vec2 drift_compensation = vec2(0.1, -0.2);
uniform float noise_strength = 0.2;
// https://gist.github.com/ayamflow/c06bc0c8a64f985dd431bd0ac5b557cd
vec2 rotateUV(vec2 uv, vec2 pivot, float rotation)
{
return vec2(
cos(rotation) * (uv.x - pivot.x) + sin(rotation) * (uv.y - pivot.y) + pivot.x,
cos(rotation) * (uv.y - pivot.y) - sin(rotation) * (uv.x - pivot.x) + pivot.y
);
}
//clamp(, .0, 1.0
void fragment() {
COLOR *= vec4(.0,
texture(starlight_textures,fract(UV*2.0)).x * 2.0*pow(max(sin(TIME + 10.0 * texture(starlight_textures,UV).y), .0), 5.0),
texture(starlight_textures,
clamp(
UV / nebula_scale + drift_compensation + 1.0 *
texture(starlight_noise, rotateUV(
UV / nebula_scale + noise_strength * texture(starlight_noise, rotateUV(UV, -rotation_pivot, TIME*rotation_speed)).yz,
rotation_pivot, TIME*rotation_speed)
).xz,
.0, 1.0))
.z * nebula_brightness,
clamp(pow(COLOR.x * 2.5 - (texture(starlight_noise, UV*2.0+TIME*.02).x + 0.8), 1.5), .0, 1.0)
) * COLOR.w;
}
"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ol51q"]
shader = SubResource("Shader_gatj6")
shader_parameter/nebula_brightness = 2.4
shader_parameter/nebula_scale = Vector2(1.3, 1.6)
shader_parameter/starlight_noise = ExtResource("1_t34p3")
shader_parameter/starlight_textures = ExtResource("2_s1yf2")
shader_parameter/rotation_speed = 0.02
shader_parameter/rotation_pivot = Vector2(0.8, 0.8)
shader_parameter/drift_compensation = Vector2(0.1, -0.2)
shader_parameter/noise_strength = 0.2
[sub_resource type="Gradient" id="Gradient_2rqk2"]
interpolation_color_space = 2
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_w8m28"]
gradient = SubResource("Gradient_2rqk2")
width = 2048
height = 1536
fill = 1
fill_from = Vector2(0.538462, 0.491453)
fill_to = Vector2(1.3, -0.3)
[sub_resource type="Animation" id="Animation_kt5p7"]
resource_name = "ending"
length = 120.0
tracks/0/type = "audio"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 8.34472,
"stream": ExtResource("14_k41g6")
}],
"times": PackedFloat32Array(0.517639)
}
tracks/0/use_blend = true
[sub_resource type="AnimationLibrary" id="AnimationLibrary_mivr6"]
_data = {
&"ending": SubResource("Animation_kt5p7")
}
[node name="DemoMain" type="Node3D"]
process_mode = 3
script = SubResource("GDScript_t34p3")
[node name="Room" type="Node3D" parent="."]
unique_name_in_owner = true
[node name="Menu" type="Control" parent="."]
unique_name_in_owner = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Panel" type="Panel" parent="Menu"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect3" type="TextureRect" parent="Menu/Panel"]
material = SubResource("ShaderMaterial_k41g6")
layout_mode = 0
offset_left = 2073.0
offset_top = 1497.0
offset_right = 4353.0
offset_bottom = 3530.0
rotation = -3.14159
texture = SubResource("GradientTexture2D_jirkf")
[node name="TextureRect2" type="TextureRect" parent="Menu/Panel"]
visible = false
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -395.0
offset_top = -447.0
offset_right = 1011.0
offset_bottom = 959.0
grow_horizontal = 0
grow_vertical = 0
scale = Vector2(0.2, 0.2)
texture = ExtResource("2_ncfee")
[node name="Label" type="Label" parent="Menu/Panel/TextureRect2"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -988.0
offset_top = 99.0002
offset_right = -590.0
offset_bottom = 187.0
grow_horizontal = 2
grow_vertical = 0
scale = Vector2(5, 5)
text = "*Als Messe-Demo geprüft. Entspricht angestrebtem finalen Rating."
horizontal_alignment = 1
autowrap_mode = 2
[node name="VBoxContainer2" type="VBoxContainer" parent="Menu"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -256.0
offset_top = -281.5
offset_right = 256.0
offset_bottom = 281.5
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect" type="TextureRect" parent="Menu/VBoxContainer2"]
custom_minimum_size = Vector2(512, 512)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("1_61qpo")
expand_mode = 2
[node name="PressStart" type="Button" parent="Menu/VBoxContainer2"]
layout_mode = 2
theme_override_font_sizes/font_size = 45
text = "Start the Demo!"
[node name="VBoxContainer" type="VBoxContainer" parent="Menu"]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -392.0
offset_top = -310.0
offset_right = -78.0
offset_bottom = -92.0
grow_horizontal = 0
grow_vertical = 0
[node name="Label" type="Label" parent="Menu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Accessibility"
[node name="CNBox" type="CheckBox" parent="Menu/VBoxContainer"]
layout_mode = 2
text = "show Content Notes"
[node name="MotionBox" type="CheckBox" parent="Menu/VBoxContainer"]
layout_mode = 2
text = "reduce motion and flickering"
[node name="A11Y" type="Button" parent="Menu/VBoxContainer"]
layout_mode = 2
text = "More Options"
[node name="Label3" type="Label" parent="Menu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Spoken Text"
[node name="SpeechButton" type="OptionButton" parent="Menu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
selected = 0
item_count = 2
popup/item_0/text = "englisch"
popup/item_0/id = 0
popup/item_1/text = "deutsch"
popup/item_1/id = 1
[node name="Label2" type="Label" parent="Menu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Written Text"
[node name="TextButton" type="OptionButton" parent="Menu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
selected = 0
item_count = 2
popup/item_0/text = "englisch"
popup/item_0/id = 1
popup/item_1/text = "deutsch"
popup/item_1/id = 2
[node name="Button" type="Button" parent="Menu/VBoxContainer"]
layout_mode = 2
text = "Privacy Info"
[node name="Control" type="Control" parent="Menu"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -40.0
offset_right = 40.0
grow_vertical = 0
[node name="ActionPrompt" type="TextureRect" parent="Menu/Control"]
texture_filter = 1
layout_mode = 0
offset_left = 134.0
offset_top = -282.0
offset_right = 234.0
offset_bottom = -182.0
texture = ExtResource("4_8e30h")
stretch_mode = 5
script = ExtResource("5_6w5b4")
action = "player_forwards"
icon = 4
events = Array[InputEvent]([SubResource("InputEventKey_kt5p7"), SubResource("InputEventJoypadMotion_mivr6")])
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
[node name="ActionPrompt2" type="TextureRect" parent="Menu/Control"]
texture_filter = 1
layout_mode = 0
offset_left = 70.0
offset_top = -187.0
offset_right = 170.0
offset_bottom = -87.0
texture = ExtResource("7_g425y")
stretch_mode = 5
script = ExtResource("5_6w5b4")
action = "player_left"
icon = 4
events = Array[InputEvent]([SubResource("InputEventKey_52c3j"), SubResource("InputEventJoypadMotion_b7q2n")])
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
[node name="ActionPrompt4" type="TextureRect" parent="Menu/Control"]
texture_filter = 1
layout_mode = 0
offset_left = 247.0
offset_top = -187.0
offset_right = 347.0
offset_bottom = -87.0
texture = ExtResource("8_kj67n")
stretch_mode = 5
script = ExtResource("5_6w5b4")
action = "player_right"
icon = 4
events = Array[InputEvent]([SubResource("InputEventKey_qhf78"), SubResource("InputEventJoypadMotion_gatj6")])
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
[node name="ActionPrompt3" type="TextureRect" parent="Menu/Control"]
texture_filter = 1
layout_mode = 0
offset_left = 158.0
offset_top = -187.0
offset_right = 258.0
offset_bottom = -87.0
texture = ExtResource("9_xo70c")
stretch_mode = 5
script = ExtResource("5_6w5b4")
action = "player_backwards"
icon = 4
events = Array[InputEvent]([SubResource("InputEventKey_ol51q"), SubResource("InputEventJoypadMotion_2rqk2")])
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
[node name="Label" type="Label" parent="Menu/Control"]
layout_mode = 0
offset_left = 72.0
offset_top = -89.0
offset_right = 374.0
offset_bottom = -40.0
theme_type_variation = &"HeaderMedium"
text = "Move trough the room"
[node name="PrivacyPanel" type="PanelContainer" parent="Menu"]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -701.5
offset_top = -464.5
offset_right = 701.5
offset_bottom = 464.5
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_kt5p7")
[node name="PrivacyAndDataProtection" parent="Menu/PrivacyPanel" instance=ExtResource("10_jirkf")]
layout_mode = 2
[node name="TextureRect" type="TextureRect" parent="."]
visible = false
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="CardBurner" parent="." instance=ExtResource("10_kj67n")]
visible = false
[node name="PauseContainer" type="CenterContainer" parent="."]
unique_name_in_owner = true
visible = false
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect" type="TextureRect" parent="PauseContainer"]
material = SubResource("ShaderMaterial_ol51q")
layout_mode = 2
texture = SubResource("GradientTexture2D_w8m28")
[node name="PauseMenu" type="PanelContainer" parent="PauseContainer"]
unique_name_in_owner = true
layout_mode = 2
script = ExtResource("10_g425y")
[node name="VBoxContainer" type="VBoxContainer" parent="PauseContainer/PauseMenu"]
layout_mode = 2
[node name="Label" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "Game Paused"
[node name="ResumeButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Resume"
[node name="A11Y" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
text = "Accessibility"
[node name="BugButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
script = ExtResource("11_kj67n")
metadata/_custom_type_script = "uid://sa15wakvpj2e"
[node name="ToMenuButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Return to Menu"
[node name="ToSettingsButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Open Settings"
[node name="ToDesktopButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Quit to Desktop"
[node name="HSeparator" type="HSeparator" parent="PauseContainer/PauseMenu/VBoxContainer"]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[node name="FindHelplineButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Find Help-Lines"
[node name="Label2" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
text = "opens findahelpline.com"
horizontal_alignment = 1
[node name="SkipStoryButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Skip this Story"
[node name="ending" parent="." instance=ExtResource("13_xo70c")]
visible = false
mouse_filter = 2
[node name="AccessibilityContainer" type="CenterContainer" parent="."]
unique_name_in_owner = true
visible = false
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="AccessibilityPanel" type="PanelContainer" parent="AccessibilityContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_kt5p7")
[node name="Accessibility" parent="AccessibilityContainer/AccessibilityPanel" instance=ExtResource("11_kt5p7")]
unique_name_in_owner = true
layout_mode = 2
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
[node name="AnimationPlayer" type="AnimationPlayer" parent="AudioStreamPlayer"]
libraries = {
&"": SubResource("AnimationLibrary_mivr6")
}
[connection signal="pressed" from="Menu/VBoxContainer2/PressStart" to="." method="_on_start_button_pressed"]
[connection signal="toggled" from="Menu/VBoxContainer/CNBox" to="." method="_on_cn_box_toggled"]
[connection signal="toggled" from="Menu/VBoxContainer/MotionBox" to="." method="_on_motion_box_toggled"]
[connection signal="pressed" from="Menu/VBoxContainer/A11Y" to="." method="show_accessibility_settings"]
[connection signal="item_selected" from="Menu/VBoxContainer/SpeechButton" to="." method="_on_speech_button_item_selected"]
[connection signal="item_selected" from="Menu/VBoxContainer/TextButton" to="." method="_on_text_button_item_selected"]
[connection signal="pressed" from="Menu/VBoxContainer/Button" to="Menu/PrivacyPanel" method="show"]
[connection signal="leave_stage" from="Menu/PrivacyPanel/PrivacyAndDataProtection" to="Menu/PrivacyPanel" method="hide"]
[connection signal="pressed" from="PauseContainer/PauseMenu/VBoxContainer/A11Y" to="." method="show_accessibility_settings"]

View File

@ -1,787 +0,0 @@
[gd_scene load_steps=41 format=3 uid="uid://cd63barv73rfx"]
[ext_resource type="Texture2D" uid="uid://d3ewjumh0b0g6" path="res://logic-scenes/main menu/logo.png" id="1_61qpo"]
[ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="1_t34p3"]
[ext_resource type="Texture2D" uid="uid://sfo05h6uah7b" path="res://import/interface-elements/USK_12.svg" id="2_ncfee"]
[ext_resource type="Texture2D" uid="uid://bdyg065h8vcdi" path="res://base-environments/youth_room/shaders/starlight-textures.png" id="2_s1yf2"]
[ext_resource type="Texture2D" uid="uid://buo4ntxw1vofu" path="res://addons/input_prompts/icons/keyboard/w.png" id="4_8e30h"]
[ext_resource type="Script" uid="uid://bbs1u7ojno7xo" path="res://addons/input_prompts/action_prompt/action_prompt.gd" id="5_6w5b4"]
[ext_resource type="Texture2D" uid="uid://dep3kuio0xnui" path="res://import/interface-elements/lower_corner.png" id="5_b7q2n"]
[ext_resource type="Script" uid="uid://cxton1pffwxk4" path="res://button_themer.gd" id="6_qhf78"]
[ext_resource type="Texture2D" uid="uid://yakqusko3p3h" path="res://addons/input_prompts/icons/keyboard/a.png" id="7_g425y"]
[ext_resource type="Texture2D" uid="uid://b0kuadlp4jw6j" path="res://addons/input_prompts/icons/keyboard/d.png" id="8_kj67n"]
[ext_resource type="Texture2D" uid="uid://bwhf0tx67yj7a" path="res://addons/input_prompts/icons/keyboard/s.png" id="9_xo70c"]
[ext_resource type="Script" uid="uid://0h0lrkntx0uh" path="res://logic-scenes/main menu/pause_menu.gd" id="10_g425y"]
[ext_resource type="PackedScene" uid="uid://u0bwjr5l6nkh" path="res://logic-scenes/main menu/privacy_settings.tscn" id="10_jirkf"]
[ext_resource type="PackedScene" uid="uid://g2a27jwdapai" path="res://logic-scenes/card_burner/card_burner.tscn" id="10_kj67n"]
[ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="11_kj67n"]
[ext_resource type="PackedScene" uid="uid://b3wlecqvelh22" path="res://logic-scenes/main menu/acessability_settings.tscn" id="11_kt5p7"]
[ext_resource type="PackedScene" uid="uid://gmxenhavh1lp" path="res://logic-scenes/main menu/video_settings.tscn" id="11_mivr6"]
[ext_resource type="PackedScene" uid="uid://citwb7f4dl3l1" path="res://thank-you.tscn" id="13_xo70c"]
[ext_resource type="AudioStream" uid="uid://cho5neuxkvpyh" path="res://base-environments/youth_room/audio/Voice Loop.wav" id="14_k41g6"]
[sub_resource type="GDScript" id="GDScript_t34p3"]
script/source = "extends Node3D
var has_stage = false:
set(stage):
if stage:
if not is_node_ready():
await ready
await get_tree().process_frame
%PressStart.grab_focus()
has_stage = stage
var room = preload(\"res://base-environments/youth_room/youth_room.tscn\")
var loaded_room: RoomTemplate
func _ready() -> void:
State.take_stage(self)
load_room()
State.settings_initialised = true
State.show_content_notes = false
State.text_language = 1
State.speech_language = 1
Scenes.sign_up_for_sequence(prepare_transition, Scenes.id.TRANSITION, 0)
Scenes.sign_up_for_sequence(transition, Scenes.id.TRANSITION, 2)
if OS.get_locale_language() == \"de\":
$Menu/VBoxContainer/SpeechButton.select(1)
$Menu/VBoxContainer/SpeechButton.item_selected.emit(1)
func prepare_transition(_id):
await get_tree().process_frame
Scenes.continue_sequence(self)
await get_tree().create_timer(5.0).timeout
loaded_room.prepare_transition()
ResourceLoader.load_threaded_request(\"res://base-environments/transition/first_platform.tscn\")
func transition(_id, _repeat):
#$TextureRect.texture = get_tree().root.get_texture()
#$TextureRect.visible = true
while ResourceLoader.load_threaded_get_status(\"res://base-environments/transition/first_platform.tscn\") != ResourceLoader.THREAD_LOAD_IN_PROGRESS:
await get_tree().process_frame
loaded_room.unload()
var packed_second_room:PackedScene = ResourceLoader.load_threaded_get(\"res://base-environments/transition/first_platform.tscn\")
loaded_room.queue_free()
%Room.add_child(packed_second_room.instantiate())
await get_tree().create_timer(15.5).timeout
$AudioStreamPlayer/AnimationPlayer.play(\"ending\")
$ending.show()
$ending.mouse_filter = Control.MOUSE_FILTER_STOP
%Room.get_child(0).queue_free()
func load_room():
for child in %Room.get_children():
child.queue_free()
loaded_room = room.instantiate()
%Room.add_child(loaded_room)
var in_game: bool
func _on_start_button_pressed():
in_game = true
var new_save = SaveGame.new()
if DirAccess.dir_exists_absolute( State.user_saves_path ):
var usr_dir = DirAccess.open(State.user_saves_path)
for path in usr_dir.get_files():
if path.ends_with(\".json\"):
var found_save: = SaveGame.new(\"%s/%s\" % [State.user_saves_path, path.get_basename()])
if found_save.is_demo:
new_save = found_save
break
State.active_save_game = new_save
var vis_tween = get_tree().create_tween()
vis_tween.tween_property(%Menu, \"modulate\", Color(1,1,1,0), .3)
await vis_tween.finished
%Menu.visible = false
%Menu.mouse_filter = Control.MouseFilter.MOUSE_FILTER_PASS
loaded_room.start_room()
#func _process(_delta: float) -> void:
# if Input.is_action_just_pressed(\"reset_demo\"):
# _on_reset()
func _on_reset():
load_room()
%Menu.modulate = Color.WHITE
%Menu.mouse_filter = Control.MouseFilter.MOUSE_FILTER_STOP
%Menu.visible = true
func _on_cn_box_toggled(toggled_on: bool) -> void:
State.show_content_notes = toggled_on
func _on_motion_box_toggled(toggled_on: bool) -> void:
State.reduce_motion = toggled_on
func _on_text_button_item_selected(index: int) -> void:
match index:
0:
State.text_language = 1
1:
State.text_language = 2
func _on_speech_button_item_selected(index: int) -> void:
State.speech_language = index + 1
if index == 1:
%TextButton.select(1)
%TextButton.item_selected.emit(1)
func _unhandled_input(event: InputEvent) -> void:
if event is InputEvent and in_game:
if event.is_action_pressed(\"ui_menu\"):
toggle_pause_menu()
func show_accessibility_settings():
%AccessibilityContainer.show()
%Accessibility.is_active = true
await %Accessibility.leave_stage
%AccessibilityContainer.hide()
if in_game:
%ResumeButton.grab_focus()
else:
%PressStart.grab_focus()
func toggle_pause_menu():
if not get_tree().paused:
get_tree().paused = true
%PauseContainer.show()
%ResumeButton.grab_focus()
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
else:
get_tree().paused = false
%PauseContainer.hide()
%ResumeButton.grab_focus()
if State.stage_list[0] is Player:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
"
[sub_resource type="Shader" id="Shader_jirkf"]
code = "shader_type canvas_item;
render_mode blend_premul_alpha;
uniform float nebula_brightness = 4;
uniform vec2 nebula_scale = vec2(1.5);
uniform sampler2D starlight_noise: repeat_enable;
uniform sampler2D starlight_textures;
uniform float rotation_speed = 0.02;
uniform vec2 rotation_pivot = vec2(.8);
uniform vec2 drift_compensation = vec2(0.1, -0.2);
uniform float noise_strength = 0.2;
// https://gist.github.com/ayamflow/c06bc0c8a64f985dd431bd0ac5b557cd
vec2 rotateUV(vec2 uv, vec2 pivot, float rotation)
{
return vec2(
cos(rotation) * (uv.x - pivot.x) + sin(rotation) * (uv.y - pivot.y) + pivot.x,
cos(rotation) * (uv.y - pivot.y) - sin(rotation) * (uv.x - pivot.x) + pivot.y
);
}
//clamp(, .0, 1.0
void fragment() {
COLOR *= vec4(.0,
texture(starlight_textures,fract(UV*2.0)).x * 2.0*pow(max(sin(TIME + 10.0 * texture(starlight_textures,UV).y), .0), 5.0),
texture(starlight_textures,
clamp(
UV / nebula_scale + drift_compensation + 1.0 *
texture(starlight_noise, rotateUV(
UV / nebula_scale + noise_strength * texture(starlight_noise, rotateUV(UV, -rotation_pivot, TIME*rotation_speed)).yz,
rotation_pivot, TIME*rotation_speed)
).xz,
.0, 1.0))
.z * nebula_brightness,
clamp(pow(COLOR.x * 2.5 - (texture(starlight_noise, UV*2.0+TIME*.02).x + 0.8), 1.5), .0, 1.0)
) * COLOR.w;
}
"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_k41g6"]
shader = SubResource("Shader_jirkf")
shader_parameter/nebula_brightness = 2.4
shader_parameter/nebula_scale = Vector2(1.3, 1.6)
shader_parameter/starlight_noise = ExtResource("1_t34p3")
shader_parameter/starlight_textures = ExtResource("2_s1yf2")
shader_parameter/rotation_speed = 0.02
shader_parameter/rotation_pivot = Vector2(0.8, 0.8)
shader_parameter/drift_compensation = Vector2(0.1, -0.2)
shader_parameter/noise_strength = 0.2
[sub_resource type="Gradient" id="Gradient_kt5p7"]
interpolation_color_space = 2
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_jirkf"]
gradient = SubResource("Gradient_kt5p7")
width = 2048
height = 1536
fill = 1
fill_from = Vector2(0.538462, 0.491453)
fill_to = Vector2(1.3, -0.3)
[sub_resource type="InputEventKey" id="InputEventKey_b7q2n"]
device = -1
physical_keycode = 87
unicode = 119
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_qhf78"]
device = -1
axis = 1
axis_value = -1.0
[sub_resource type="InputEventKey" id="InputEventKey_gatj6"]
device = -1
physical_keycode = 65
unicode = 97
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_ol51q"]
device = -1
axis_value = -1.0
[sub_resource type="InputEventKey" id="InputEventKey_2rqk2"]
device = -1
physical_keycode = 68
unicode = 100
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_w8m28"]
device = -1
axis_value = 1.0
[sub_resource type="InputEventKey" id="InputEventKey_kwpdx"]
device = -1
physical_keycode = 83
unicode = 115
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_2xua5"]
device = -1
axis = 1
axis_value = 1.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kt5p7"]
bg_color = Color(0.0288289, 0.0448641, 0.121276, 1)
border_width_left = 10
border_width_top = 10
border_width_right = 10
border_width_bottom = 10
border_color = Color(0.0288289, 0.0448641, 0.121276, 1)
corner_radius_top_left = 20
corner_radius_top_right = 20
corner_radius_bottom_right = 20
corner_radius_bottom_left = 20
expand_margin_left = 20.0
expand_margin_right = 20.0
[sub_resource type="Shader" id="Shader_gatj6"]
code = "shader_type canvas_item;
render_mode blend_premul_alpha;
uniform float nebula_brightness = 4;
uniform vec2 nebula_scale = vec2(1.5);
uniform sampler2D starlight_noise: repeat_enable;
uniform sampler2D starlight_textures;
uniform float rotation_speed = 0.02;
uniform vec2 rotation_pivot = vec2(.8);
uniform vec2 drift_compensation = vec2(0.1, -0.2);
uniform float noise_strength = 0.2;
// https://gist.github.com/ayamflow/c06bc0c8a64f985dd431bd0ac5b557cd
vec2 rotateUV(vec2 uv, vec2 pivot, float rotation)
{
return vec2(
cos(rotation) * (uv.x - pivot.x) + sin(rotation) * (uv.y - pivot.y) + pivot.x,
cos(rotation) * (uv.y - pivot.y) - sin(rotation) * (uv.x - pivot.x) + pivot.y
);
}
//clamp(, .0, 1.0
void fragment() {
COLOR *= vec4(.0,
texture(starlight_textures,fract(UV*2.0)).x * 2.0*pow(max(sin(TIME + 10.0 * texture(starlight_textures,UV).y), .0), 5.0),
texture(starlight_textures,
clamp(
UV / nebula_scale + drift_compensation + 1.0 *
texture(starlight_noise, rotateUV(
UV / nebula_scale + noise_strength * texture(starlight_noise, rotateUV(UV, -rotation_pivot, TIME*rotation_speed)).yz,
rotation_pivot, TIME*rotation_speed)
).xz,
.0, 1.0))
.z * nebula_brightness,
clamp(pow(COLOR.x * 2.5 - (texture(starlight_noise, UV*2.0+TIME*.02).x + 0.8), 1.5), .0, 1.0)
) * COLOR.w;
}
"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ol51q"]
shader = SubResource("Shader_gatj6")
shader_parameter/nebula_brightness = 2.4
shader_parameter/nebula_scale = Vector2(1.3, 1.6)
shader_parameter/starlight_noise = ExtResource("1_t34p3")
shader_parameter/starlight_textures = ExtResource("2_s1yf2")
shader_parameter/rotation_speed = 0.02
shader_parameter/rotation_pivot = Vector2(0.8, 0.8)
shader_parameter/drift_compensation = Vector2(0.1, -0.2)
shader_parameter/noise_strength = 0.2
[sub_resource type="Gradient" id="Gradient_2rqk2"]
interpolation_color_space = 2
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_w8m28"]
gradient = SubResource("Gradient_2rqk2")
width = 2048
height = 1536
fill = 1
fill_from = Vector2(0.538462, 0.491453)
fill_to = Vector2(1.3, -0.3)
[sub_resource type="Animation" id="Animation_kt5p7"]
resource_name = "ending"
length = 120.0
tracks/0/type = "audio"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 8.34472,
"stream": ExtResource("14_k41g6")
}],
"times": PackedFloat32Array(0.517639)
}
tracks/0/use_blend = true
[sub_resource type="AnimationLibrary" id="AnimationLibrary_mivr6"]
_data = {
&"ending": SubResource("Animation_kt5p7")
}
[sub_resource type="GDScript" id="GDScript_kt5p7"]
script/source = "extends Label
func _ready() -> void:
if not OS.has_feature(\"debug\"):
hide()
func _process(_delta):
text = \"%d/%d\" % [Engine.get_frames_per_second(), Engine.max_fps]
"
[node name="DemoMain" type="Node3D"]
process_mode = 3
script = SubResource("GDScript_t34p3")
[node name="Room" type="Node3D" parent="."]
unique_name_in_owner = true
[node name="Menu" type="Control" parent="."]
unique_name_in_owner = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Panel" type="Panel" parent="Menu"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect3" type="TextureRect" parent="Menu/Panel"]
material = SubResource("ShaderMaterial_k41g6")
layout_mode = 0
offset_left = 2073.0
offset_top = 1497.0
offset_right = 4353.0
offset_bottom = 3530.0
rotation = -3.14159
texture = SubResource("GradientTexture2D_jirkf")
[node name="TextureRect2" type="TextureRect" parent="Menu/Panel"]
visible = false
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -395.0
offset_top = -447.0
offset_right = 1011.0
offset_bottom = 959.0
grow_horizontal = 0
grow_vertical = 0
scale = Vector2(0.2, 0.2)
texture = ExtResource("2_ncfee")
[node name="Label" type="Label" parent="Menu/Panel/TextureRect2"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -988.0
offset_top = 99.0002
offset_right = -590.0
offset_bottom = 187.0
grow_horizontal = 2
grow_vertical = 0
scale = Vector2(5, 5)
text = "*Als Messe-Demo geprüft. Entspricht angestrebtem finalen Rating."
horizontal_alignment = 1
autowrap_mode = 2
[node name="VBoxContainer2" type="VBoxContainer" parent="Menu"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -256.0
offset_top = -281.5
offset_right = 256.0
offset_bottom = 281.5
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect" type="TextureRect" parent="Menu/VBoxContainer2"]
custom_minimum_size = Vector2(512, 512)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("1_61qpo")
expand_mode = 2
[node name="PressStart" type="Button" parent="Menu/VBoxContainer2"]
unique_name_in_owner = true
clip_contents = true
layout_mode = 2
size_flags_horizontal = 4
theme_type_variation = &"H1Button"
text = "Start the Demo!"
script = ExtResource("6_qhf78")
metadata/_custom_type_script = "uid://cxton1pffwxk4"
[node name="VBoxContainer" type="VBoxContainer" parent="Menu"]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -392.0
offset_top = -310.0
offset_right = -78.0
offset_bottom = -92.0
grow_horizontal = 0
grow_vertical = 0
[node name="TextureRect2" type="TextureRect" parent="Menu/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("5_b7q2n")
expand_mode = 1
stretch_mode = 4
[node name="Label" type="Label" parent="Menu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Accessibility"
[node name="CNBox" type="CheckBox" parent="Menu/VBoxContainer"]
layout_mode = 2
text = "show Content Notes"
[node name="MotionBox" type="CheckBox" parent="Menu/VBoxContainer"]
layout_mode = 2
text = "reduce motion and flickering"
[node name="A11Y" type="Button" parent="Menu/VBoxContainer"]
layout_mode = 2
text = "More Options"
[node name="Label3" type="Label" parent="Menu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Spoken Text"
[node name="SpeechButton" type="OptionButton" parent="Menu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
selected = 0
item_count = 2
popup/item_0/text = "englisch"
popup/item_0/id = 0
popup/item_1/text = "deutsch"
popup/item_1/id = 1
[node name="Label2" type="Label" parent="Menu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Written Text"
[node name="TextButton" type="OptionButton" parent="Menu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
selected = 0
item_count = 2
popup/item_0/text = "englisch"
popup/item_0/id = 1
popup/item_1/text = "deutsch"
popup/item_1/id = 2
[node name="Button" type="Button" parent="Menu/VBoxContainer"]
layout_mode = 2
text = "Privacy Info"
[node name="Control" type="Control" parent="Menu"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -40.0
offset_right = 40.0
grow_vertical = 0
[node name="ActionPrompt" type="TextureRect" parent="Menu/Control"]
texture_filter = 1
layout_mode = 0
offset_left = 134.0
offset_top = -282.0
offset_right = 234.0
offset_bottom = -182.0
texture = ExtResource("4_8e30h")
stretch_mode = 5
script = ExtResource("5_6w5b4")
action = "player_forwards"
icon = 4
events = Array[InputEvent]([SubResource("InputEventKey_b7q2n"), SubResource("InputEventJoypadMotion_qhf78")])
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
[node name="ActionPrompt2" type="TextureRect" parent="Menu/Control"]
texture_filter = 1
layout_mode = 0
offset_left = 70.0
offset_top = -187.0
offset_right = 170.0
offset_bottom = -87.0
texture = ExtResource("7_g425y")
stretch_mode = 5
script = ExtResource("5_6w5b4")
action = "player_left"
icon = 4
events = Array[InputEvent]([SubResource("InputEventKey_gatj6"), SubResource("InputEventJoypadMotion_ol51q")])
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
[node name="ActionPrompt4" type="TextureRect" parent="Menu/Control"]
texture_filter = 1
layout_mode = 0
offset_left = 247.0
offset_top = -187.0
offset_right = 347.0
offset_bottom = -87.0
texture = ExtResource("8_kj67n")
stretch_mode = 5
script = ExtResource("5_6w5b4")
action = "player_right"
icon = 4
events = Array[InputEvent]([SubResource("InputEventKey_2rqk2"), SubResource("InputEventJoypadMotion_w8m28")])
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
[node name="ActionPrompt3" type="TextureRect" parent="Menu/Control"]
texture_filter = 1
layout_mode = 0
offset_left = 158.0
offset_top = -187.0
offset_right = 258.0
offset_bottom = -87.0
texture = ExtResource("9_xo70c")
stretch_mode = 5
script = ExtResource("5_6w5b4")
action = "player_backwards"
icon = 4
events = Array[InputEvent]([SubResource("InputEventKey_kwpdx"), SubResource("InputEventJoypadMotion_2xua5")])
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
[node name="Label" type="Label" parent="Menu/Control"]
layout_mode = 0
offset_left = 72.0
offset_top = -89.0
offset_right = 374.0
offset_bottom = -40.0
theme_type_variation = &"HeaderMedium"
text = "Move trough the room"
[node name="PrivacyPanel" type="PanelContainer" parent="Menu"]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -701.5
offset_top = -464.5
offset_right = 701.5
offset_bottom = 464.5
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_kt5p7")
[node name="PrivacyAndDataProtection" parent="Menu/PrivacyPanel" instance=ExtResource("10_jirkf")]
layout_mode = 2
[node name="Video Settings" parent="Menu" instance=ExtResource("11_mivr6")]
layout_mode = 1
offset_left = 2330.0
offset_top = 96.0
offset_right = 2330.0
offset_bottom = 96.0
[node name="TextureRect" type="TextureRect" parent="."]
visible = false
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="CardBurner" parent="." instance=ExtResource("10_kj67n")]
visible = false
[node name="PauseContainer" type="CenterContainer" parent="."]
unique_name_in_owner = true
visible = false
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect" type="TextureRect" parent="PauseContainer"]
material = SubResource("ShaderMaterial_ol51q")
layout_mode = 2
texture = SubResource("GradientTexture2D_w8m28")
[node name="PauseMenu" type="PanelContainer" parent="PauseContainer"]
unique_name_in_owner = true
layout_mode = 2
script = ExtResource("10_g425y")
[node name="VBoxContainer" type="VBoxContainer" parent="PauseContainer/PauseMenu"]
layout_mode = 2
[node name="Label" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "Game Paused"
[node name="ResumeButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Resume"
[node name="A11Y2" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
text = "Accessibility"
[node name="BugButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
script = ExtResource("11_kj67n")
metadata/_custom_type_script = "uid://sa15wakvpj2e"
[node name="ToMenuButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Return to Menu"
[node name="ToSettingsButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Open Settings"
[node name="ToDesktopButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Quit to Desktop"
[node name="HSeparator" type="HSeparator" parent="PauseContainer/PauseMenu/VBoxContainer"]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[node name="FindHelplineButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Find Help-Lines"
[node name="Label2" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
text = "opens findahelpline.com"
horizontal_alignment = 1
[node name="SkipStoryButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Skip this Story"
[node name="ending" parent="." instance=ExtResource("13_xo70c")]
visible = false
mouse_filter = 2
[node name="AccessibilityContainer" type="CenterContainer" parent="."]
unique_name_in_owner = true
visible = false
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="AccessibilityPanel" type="PanelContainer" parent="AccessibilityContainer"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_kt5p7")
[node name="Accessibility" parent="AccessibilityContainer/AccessibilityPanel" instance=ExtResource("11_kt5p7")]
unique_name_in_owner = true
layout_mode = 2
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
[node name="AnimationPlayer" type="AnimationPlayer" parent="AudioStreamPlayer"]
libraries = {
&"": SubResource("AnimationLibrary_mivr6")
}
[node name="FPSLabel" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 35.0
script = SubResource("GDScript_kt5p7")
[connection signal="pressed" from="Menu/VBoxContainer2/PressStart" to="." method="_on_start_button_pressed"]
[connection signal="toggled" from="Menu/VBoxContainer/CNBox" to="." method="_on_cn_box_toggled"]
[connection signal="toggled" from="Menu/VBoxContainer/MotionBox" to="." method="_on_motion_box_toggled"]
[connection signal="pressed" from="Menu/VBoxContainer/A11Y" to="." method="show_accessibility_settings"]
[connection signal="item_selected" from="Menu/VBoxContainer/SpeechButton" to="." method="_on_speech_button_item_selected"]
[connection signal="item_selected" from="Menu/VBoxContainer/TextButton" to="." method="_on_text_button_item_selected"]
[connection signal="pressed" from="Menu/VBoxContainer/Button" to="Menu/PrivacyPanel" method="show"]
[connection signal="leave_stage" from="Menu/PrivacyPanel/PrivacyAndDataProtection" to="Menu/PrivacyPanel" method="hide"]
[connection signal="pressed" from="PauseContainer/PauseMenu/VBoxContainer/A11Y2" to="." method="show_accessibility_settings"]

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 40 KiB

View File

@ -1,43 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c6r2y18qlqsvh"
path="res://.godot/imported/demo-warning.svg-5bc85c9c263d3931745057454217e7fa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://demo-warning.svg"
dest_files=["res://.godot/imported/demo-warning.svg-5bc85c9c263d3931745057454217e7fa.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -34,7 +34,7 @@ func _process(delta: float) -> void:
_on_beat() _on_beat()
_last_beat_timing = sync_to.get_playback_position() _last_beat_timing = sync_to.get_playback_position()
else: else:
if not Engine.is_editor_hint(): print(time_left) if not Engine.is_editor_hint(): print_debug(time_left)
func start(time_sec: float = 0, starting_beat: int = 0, starting_bar: int = 0, sync_to_playback:AudioStreamPlayback = null) -> void: func start(time_sec: float = 0, starting_beat: int = 0, starting_bar: int = 0, sync_to_playback:AudioStreamPlayback = null) -> void:
if starting_bar == 0 and starting_beat > 0: starting_bar = starting_beat / beats_per_bar if starting_bar == 0 and starting_beat > 0: starting_bar = starting_beat / beats_per_bar

View File

@ -26,4 +26,4 @@ func create_bug_report():
DisplayServer.clipboard_set(debug_text) DisplayServer.clipboard_set(debug_text)
#print("mailto:support@polynormal.games?subject=Frame%20of%20Mind%20Demo%20-%20Bug%20Report&body=" + debug_text) #print_debug("mailto:support@polynormal.games?subject=Frame%20of%20Mind%20Demo%20-%20Bug%20Report&body=" + debug_text)

View File

@ -18,7 +18,7 @@ fill_from = Vector2(0.499433, 0.470085)
fill_to = Vector2(0.23814, 0.858974) fill_to = Vector2(0.23814, 0.858974)
[sub_resource type="GDScript" id="GDScript_2ph0d"] [sub_resource type="GDScript" id="GDScript_2ph0d"]
script/source = "@tool script/source = "
extends Sprite2D extends Sprite2D
var flame_progression: float = 0 var flame_progression: float = 0

View File

@ -16,7 +16,7 @@ func _process(_delta):
func _input(event: InputEvent) -> void: func _input(event: InputEvent) -> void:
if event is InputEventAction: if event is InputEventAction:
print(event.action) print_debug(event.action)
#func _unhandled_input(event): #func _unhandled_input(event):
# viewport.push_input(event) # viewport.push_input(event)
@ -38,7 +38,7 @@ func _on_input_event(_camera: Camera3D, event: InputEvent, pos: Vector3, _normal
viewport.push_input(e) viewport.push_input(e)
func _on_button_pressed(): func _on_button_pressed():
print("Button pressed") print_debug("Button pressed")
func _on_line_edit_text_submitted(new_text): func _on_line_edit_text_submitted(new_text):
print("Text submitted: ", new_text) print_debug("Text submitted: ", new_text)

View File

@ -118,22 +118,22 @@ static func get_obscure_name(card_name: StringName):
else: else:
return card_name return card_name
func arrange(cards: Array[Card], rect: Rect2, obstacles: Array[Area2D]) -> Array[Card]: func arrange(cards: Array[Card], rect: Rect2, _obstacles: Array[Area2D]) -> Array[Card]:
var total_cards = cards.size() #var total_cards := cards.size()
var x:int = 0 var x:int = 0
var y:int = 0 var y:int = 0
var i:int = 0 var i:int = 0
var max:int = cards.size() var maximum:int = cards.size()
var grid: int = ceil(sqrt(max)) var grid: int = ceil(sqrt(maximum))
var diameter:float = cards[0].diameter var diameter:float = cards[0].diameter
var r_cards: Array[Card] = cards.duplicate() var r_cards: Array[Card] = cards.duplicate()
r_cards.shuffle() r_cards.shuffle()
while i < max: while i < maximum:
while x < grid and i < max: while x < grid and i < maximum:
while y < ceil(sqrt(max)) and i < max: while y < ceil(sqrt(maximum)) and i < maximum:
r_cards[i].position = rect.size / Vector2(y, x) * (1.0 / (rect.size.x * diameter) ) + rect.position + Vector2(randf_range(diameter/2+5, diameter-5), randf_range(diameter/2+5, diameter-5)) r_cards[i].position = rect.size / Vector2(y, x) * (1.0 / (rect.size.x * diameter) ) + rect.position + Vector2(randf_range(diameter/2+5, diameter-5), randf_range(diameter/2+5, diameter-5))
i += 1 i += 1
y += 1 y += 1
@ -204,8 +204,8 @@ static func get_cards_by_name_array(names: Array[StringName]) -> Dictionary:
static func create_from_id(id:StringName) -> Area2D: static func create_from_id(id:StringName) -> Area2D:
var parsed: PackedStringArray = id.rsplit(".") var parsed: PackedStringArray = id.rsplit(".")
var helper = card_id_reference #var helper := card_id_reference
var keys = card_id_reference.keys() #var keys := card_id_reference.keys()
if card_id_reference.values().has(id): if card_id_reference.values().has(id):
return Card.new(parsed[1], id) return Card.new(parsed[1], id)
@ -215,24 +215,24 @@ static func create_from_id(id:StringName) -> Area2D:
push_error("Attempted to create Card or Sticky from non-existent ID!") push_error("Attempted to create Card or Sticky from non-existent ID!")
return null return null
static func create_dev_board(parent: Control, rect: Rect2) -> void: static func create_dev_board(parent: Control, _rect: Rect2) -> void:
var scroll_container = ScrollContainer.new() var scroll_container := ScrollContainer.new()
var panel = Panel.new() var panel := Panel.new()
parent.add_child(scroll_container) parent.add_child(scroll_container)
scroll_container.add_child(panel) scroll_container.add_child(panel)
for x in range(source_dicts.size()): for x in range(source_dicts.size()):
var sub_parent = Panel.new() var sub_parent := Panel.new()
sub_parent.position = Vector2( 128 + 256*x , 0) sub_parent.position = Vector2( 128 + 256*x , 0)
panel.add_child(sub_parent, false, Node.INTERNAL_MODE_BACK) panel.add_child(sub_parent, false, Node.INTERNAL_MODE_BACK)
var y = 1 var y := 1
for card_name in source_dicts[x].keys(): for card_name in source_dicts[x].keys():
var card:Card = create_from_id(card_id_reference[card_name]) var card:Card = create_from_id(card_id_reference[card_name])
sub_parent.add_child(card, false, Node.INTERNAL_MODE_BACK) sub_parent.add_child(card, false, Node.INTERNAL_MODE_BACK)
card.position = Vector2(0, card.diameter * y - card.diameter/2) card.position = Vector2(0, card.diameter * y - card.diameter/2)
var z = 0 var z := 0
for sticky_name in get_child_names_of(card_name): for sticky_name in get_child_names_of(card_name):
var sticky: StickyNote = create_from_id(sticky_id_reference[sticky_name]) var sticky: StickyNote = create_from_id(sticky_id_reference[sticky_name])
card.add_child(sticky, false, Node.INTERNAL_MODE_BACK) card.add_child(sticky, false, Node.INTERNAL_MODE_BACK)

View File

@ -1,4 +1,3 @@
@tool
extends TextureRect extends TextureRect
@export var textures: Dictionary[String, Texture] = {} @export var textures: Dictionary[String, Texture] = {}

View File

@ -56,7 +56,7 @@ func _ready() -> void:
stream = AudioStreamPolyphonic.new() stream = AudioStreamPolyphonic.new()
func play(from_position: float = 0.0): func play(from_position: float = 0.0):
print("got called") print_debug("got called")
super.play(from_position) super.play(from_position)
self._play(from_position) self._play(from_position)

View File

@ -1,7 +1,7 @@
class_name RoomTemplate extends Node3D class_name RoomTemplate extends Node3D
var initialised: bool = false var initialised: bool = false
var id: State.rooms var id: State.rooms = State.rooms.NULL
var has_stage: bool: var has_stage: bool:
set(value): set(value):
@ -10,12 +10,31 @@ var has_stage: bool:
start_room() start_room()
@export var save_game:SaveGame = null var save_game:SaveGame = null
signal proceed(next_scene_path: String)
func _ready() -> void:
State.room = self
State.current_room = id
func load():
# Override this function to load the state of the chapter from State.save_game
pass
func play() -> String:
get_ready()
start_room()
return await proceed
func get_ready():
pass
func start_room(): func start_room():
pass pass
func pull_save_state(save: SaveGame) -> void: func pull_save_state(_save: SaveGame) -> void:
pass pass
func save_room(): func save_room():

View File

@ -1,18 +1,23 @@
@tool
class_name SaveGame extends Resource class_name SaveGame extends Resource
var _is_initialised: bool = false var _is_initialised: bool = false
var current_room_path: String:
get():
return Main.room_paths[current_room]
@export var filepath: String: @export var filepath: String:
set(value): set(value):
print_debug("Savegame: setting filepath: %s" % value)
filepath = value filepath = value
if _is_initialised: if _is_initialised:
read_save_file()
changed.emit() changed.emit()
@export var unique_save_name: String = "frame_of_mind_%s_%s" % [Time.get_date_string_from_system(), Time.get_time_string_from_system().replace(":", "-")]:
@export var unique_save_name: String = "frame_of_mind_%s_%s" % [Time.get_date_string_from_system(), Time.get_time_string_from_system().replace(":", "-")] + "-" + str(randi()):
set(value): set(value):
unique_save_name = value unique_save_name = value
if _is_initialised: changed.emit() if _is_initialised: changed.emit()
@export var current_room: State.rooms = State.rooms.NULL: @export var current_room: State.rooms = State.rooms.NULL:
set(value): set(value):
current_room = value current_room = value
@ -70,26 +75,27 @@ func _init(initial_filepath = "") -> void:
else: else:
filepath = initial_filepath filepath = initial_filepath
unique_save_name = initial_filepath.get_file() unique_save_name = initial_filepath.get_file()
read_save_file() read_save_file()
_is_initialised = true _is_initialised = true
func read_save_file() -> void:
if not DirAccess.dir_exists_absolute(filepath.get_base_dir()): if not DirAccess.dir_exists_absolute(filepath.get_base_dir()):
DirAccess.make_dir_absolute(filepath.get_base_dir()) DirAccess.make_dir_absolute(filepath.get_base_dir())
func read_save_file():
if filepath == "DEBUG": if filepath == "DEBUG":
if OS.has_feature("debug") or OS.has_feature("demo"): if OS.has_feature("debug") or OS.has_feature("demo"):
push_warning("Created DEBUG savegame. Progress will not be stored!") push_warning("Created DEBUG savegame. Progress will not be stored!")
else: else:
print(get_stack()) print_debug(get_stack())
push_error("Created DEBUG savegame outside of demo or debug environment. This is unintentional and will lead to data loss. Please contact support and attatch the stack above.") push_error("Created DEBUG savegame outside of demo or debug environment. This is unintentional and will lead to data loss. Please contact support and attatch the stack above.")
#TODO maybe cause a crash here? #TODO maybe cause a crash here?
return return
if FileAccess.file_exists(filepath): if FileAccess.file_exists(filepath):
print("Opening existing Savegame: %s" % filepath) print_debug("Savegame: Reading from: %s" % filepath)
var file = FileAccess.open(filepath, FileAccess.READ) var file := FileAccess.open(filepath, FileAccess.READ)
var raw_json = FileAccess.get_file_as_string(filepath) var raw_json := FileAccess.get_file_as_string(filepath)
file.close() file.close()
var parsed: Dictionary = JSON.parse_string(raw_json) var parsed: Dictionary = JSON.parse_string(raw_json)
@ -98,7 +104,7 @@ func read_save_file():
if FileAccess.file_exists("%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name]): if FileAccess.file_exists("%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name]):
tmp_img = Image.load_from_file("%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name]) tmp_img = Image.load_from_file("%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name])
var are_types_valid = ( var are_types_valid := (
parsed["unique_save_name"] is String and parsed["unique_save_name"] is String and
parsed["current_room"] is float and parsed["current_room"] is float and
parsed["mementos_complete"] is float and parsed["mementos_complete"] is float and
@ -147,7 +153,7 @@ func read_save_file():
thumbnail = ImageTexture.create_from_image(tmp_img) thumbnail = ImageTexture.create_from_image(tmp_img)
is_empty = false is_empty = false
else: else:
print("Creating empty Savegame: %s" % filepath) print_debug("Savegame: Creating (in memory) for path: %s" % filepath)
is_valid = true is_valid = true
func _get_save_dict() -> Dictionary: func _get_save_dict() -> Dictionary:
@ -163,30 +169,32 @@ func _get_save_dict() -> Dictionary:
"is_demo": is_demo "is_demo": is_demo
} }
func save_to_file(current_screen: Texture): func save_to_file(screen_shot: Texture) -> void:
print_debug("Savegame: Saving to file: %s" % filepath)
if filepath == "DEBUG": if filepath == "DEBUG":
push_warning("Saving DEBUG save skipped. This is intentional.") push_warning("Savegame: Saving DEBUG save skipped. This is intentional.")
return return
if current_room == State.rooms.NULL: if current_room == State.rooms.NULL:
print("Not saving empty savegame.") push_warning("Savegame: Not saving empty savegame.")
return return
last_saved = Time.get_unix_time_from_system() last_saved = int(Time.get_unix_time_from_system())
var thumbnail_image: Image = current_screen.get_image() var thumbnail_image: Image = screen_shot.get_image()
thumbnail_image.convert(Image.Format.FORMAT_RGB8) thumbnail_image.convert(Image.Format.FORMAT_RGB8)
thumbnail_image.linear_to_srgb() thumbnail_image.linear_to_srgb()
thumbnail_image.resize(384, 261, Image.INTERPOLATE_LANCZOS) # nonexistent call in ViewportTexturew thumbnail_image.resize(384, 216, Image.INTERPOLATE_LANCZOS) # nonexistent call in ViewportTexture
thumbnail_image.crop(384, 216)
var thumbnail_path: String = "%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name] var save_dir := DirAccess.open(filepath.get_base_dir())
var save_dir = DirAccess.open(filepath.get_base_dir())
if not save_dir.dir_exists("thumbnails"): if not save_dir.dir_exists("thumbnails"):
save_dir.make_dir("thumbnails") save_dir.make_dir("thumbnails")
thumbnail_image.save_png("%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name]) var thumbnail_path: String = "%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name]
#thumbnail_image.save_png("%s/test.png" % State.user_saves_path) thumbnail_image.save_png(thumbnail_path)
print(filepath.get_base_dir()) print_debug(filepath.get_base_dir())
var file = FileAccess.open(filepath, FileAccess.WRITE) var file := FileAccess.open(filepath, FileAccess.WRITE)
file.store_string(JSON.stringify(_get_save_dict())) file.store_string(JSON.stringify(_get_save_dict()))
file.close() file.close()
@ -213,14 +221,12 @@ func validate_board_state() -> bool:
push_error("Save %s could not be parsed: Corrupted Cards." % unique_save_name) push_error("Save %s could not be parsed: Corrupted Cards." % unique_save_name)
return false return false
for sticky in board_state.stickies.values(): for sticky in board_state.stickies.values():
if not (sticky is int or sticky is Vector2 or board_state.cards.keys().has(sticky)): if not (sticky is int or sticky is Vector2 or sticky is float or board_state.cards.keys().has(sticky)):
push_error("Save %s could not be parsed: Corrupted Sticky Notes.") push_error("Save %s could not be parsed: Corrupted Sticky Notes.")
return false return false
return true return true
return false return false
func parse_vec_from_string(string: String) -> Vector2: func parse_vec_from_string(string: String) -> Vector2:
var string_array = string.replace("(", "").replace(")", "").split(", ") var string_array := string.replace("(", "").replace(")", "").split(", ")
return Vector2(float(string_array[0]), float(string_array[1])) return Vector2(float(string_array[0]), float(string_array[1]))

View File

@ -1,11 +1,18 @@
class_name SettingsPopup extends PanelContainer class_name SettingsPopup extends PanelContainer
func _ready() -> void:
get_parent_control().visible = false
func show_settings(id: int = -1): func show_settings(id: int = -1):
get_parent_control().visible = true
$AnimationPlayer.play("reveal") $AnimationPlayer.play("reveal")
await $AnimationPlayer.animation_finished
if not id == -1: if not id == -1:
$TabContainer.current_tab = id $TabContainer.current_tab = id
State.pass_stage_to($TabContainer) State.pass_stage_to($TabContainer)
func vanish(): func vanish():
$AnimationPlayer.play("vanish")
State.save_settings() State.save_settings()
$AnimationPlayer.play("vanish")
await $AnimationPlayer.animation_finished
get_parent_control().visible = false

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=12 format=3 uid="uid://d0qqluenght6a"] [gd_scene load_steps=12 format=3 uid="uid://d0qqluenght6a"]
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/shaders/stars.gdshader" id="1_8nej7"] [ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro/shaders/stars.gdshader" id="1_8nej7"]
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/textures/sky_textures_2.png" id="2_qoi7m"] [ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro/textures/sky_textures_2.png" id="2_qoi7m"]
[sub_resource type="Gradient" id="Gradient_d5lk6"] [sub_resource type="Gradient" id="Gradient_d5lk6"]
interpolation_mode = 2 interpolation_mode = 2

View File

@ -17,7 +17,7 @@ func _process(delta):
func _on_scene_actors_animation_finished(anim_name): func _on_scene_actors_animation_finished(anim_name):
print(\"yay\") print_debug(\"yay\")
" "
[sub_resource type="Shader" id="Shader_tcvor"] [sub_resource type="Shader" id="Shader_tcvor"]

View File

@ -19,10 +19,10 @@ func _on_pressed() -> void:
script/source = "extends MenuButton script/source = "extends MenuButton
func _ready() -> void: func _ready() -> void:
mouse_entered.connect(func(id): print(\"mouse_entered\")) mouse_entered.connect(func(id): print_debug(\"mouse_entered\"))
get_popup().id_pressed.connect(func(id): print(\"id_pressed\")) get_popup().id_pressed.connect(func(id): print_debug(\"id_pressed\"))
get_popup().index_pressed.connect(func(id): print(\"id_pressed\")) get_popup().index_pressed.connect(func(id): print_debug(\"id_pressed\"))
get_popup().id_focused.connect(func(id): print(\"id_focused\")) get_popup().id_focused.connect(func(id): print_debug(\"id_focused\"))
" "

View File

@ -23,7 +23,7 @@ var focus_stickies:bool = true:
else: else:
current_dropzone_id = current_dropzone_id current_dropzone_id = current_dropzone_id
var has_stage = false: var has_stage := false:
set(focus): set(focus):
if focus: if focus:
has_stage = true has_stage = true
@ -181,23 +181,23 @@ func populate_board(card_names: Array[StringName]):
#currently_active_node = area_dict["dropzone_content"][0] # set first Card as currently selected node by default #currently_active_node = area_dict["dropzone_content"][0] # set first Card as currently selected node by default
currently_active_node = dropzone.get_child(0) currently_active_node = dropzone.get_child(0)
func add_card(card: Card, reparent:bool = true): func add_card(card: Card, re_parent:bool = true):
if reparent: if re_parent:
card.reparent(self) card.reparent(self)
else: else:
add_child(card) add_child(card)
card.position = Vector2(randi_range(dropzone_padding, dropzone_size.x), randi_range(dropzone_padding, dropzone_size.y)) card.position = Vector2(randi_range(dropzone_padding, int(dropzone_size.x)), randi_range(dropzone_padding, int(dropzone_size.y)))
insert_area(dropzone, card) insert_area(dropzone, card)
card.set_owner(self) card.set_owner(self)
card.is_dragable = true card.is_dragable = true
func add_sticky_note(sticky: StickyNote, reparent:bool = true): func add_sticky_note(sticky: StickyNote, re_parent:bool = true):
var new_panel = StickyNotePanel.new() var new_panel := StickyNotePanel.new()
sticky_note_container.add_child(new_panel, true, Node.INTERNAL_MODE_DISABLED) sticky_note_container.add_child(new_panel, true, Node.INTERNAL_MODE_DISABLED)
#WARNING this for some reason would break the tweens #WARNING this for some reason would break the tweens
new_panel.set_owner(self) new_panel.set_owner(self)
sticky.current_handle = self sticky.current_handle = self
new_panel.attatch_sticky_note(sticky, self, false, reparent) new_panel.attatch_sticky_note(sticky, self, false, re_parent)
# Checks if a Node is currently inside the dropzone # Checks if a Node is currently inside the dropzone
func is_in_dropzone(to_check: Node) -> bool: func is_in_dropzone(to_check: Node) -> bool:
@ -454,7 +454,7 @@ func _input(event):
get_viewport().set_input_as_handled() get_viewport().set_input_as_handled()
elif event.is_action_pressed("ui_left"): # right to switch context to the right elif event.is_action_pressed("ui_left"): # right to switch context to the right
print(try_select_nearest_card(selection_position, Vector2.LEFT)) print_debug(try_select_nearest_card(selection_position, Vector2.LEFT))
if focus_stickies: if focus_stickies:
if current_context == NAVIGATE: if current_context == NAVIGATE:
focus_stickies = false focus_stickies = false
@ -663,10 +663,9 @@ func rebuild_from_savedict(board_state:Dictionary):
sticky.picked_random = randoms.has( sticky.sticky_id ) sticky.picked_random = randoms.has( sticky.sticky_id )
func validate_board(): func validate_board():
return
if current_context == NAVIGATE: if current_context == NAVIGATE:
var needs_rebuild = false var needs_rebuild := false
for node in dropzone.get_children(): for node in dropzone.get_children():
if node is Card: if node is Card:
match validate_card(node): match validate_card(node):

View File

@ -1,4 +1,3 @@
@tool
extends Area2D extends Area2D
class_name Card class_name Card
@ -115,7 +114,7 @@ signal has_burned
burn_tween.tween_property(self, "burn_progress", 2.0, 2) burn_tween.tween_property(self, "burn_progress", 2.0, 2)
burn_tween.tween_callback(_torch).set_delay(1.0) burn_tween.tween_callback(_torch).set_delay(1.0)
burned.TORCHED: burned.TORCHED:
print("Card %s has been burned." % HardCards.get_obscure_name(name)) print_debug("Card %s has been burned." % HardCards.get_obscure_name(name))
has_burned.emit() has_burned.emit()
burn_state = burning burn_state = burning
@ -286,7 +285,7 @@ func attach_sticky_note(sticky_note: StickyNote) -> bool:
sticky_note.on_board = false sticky_note.on_board = false
sticky_note.is_dragable = false sticky_note.is_dragable = false
current_sticky_note = sticky_note current_sticky_note = sticky_note
var former_parent = sticky_note.attached_to #var former_parent = sticky_note.attached_to
sticky_note.attached_to = self sticky_note.attached_to = self
if name == "c_hit" and sticky_note.name == "c_effort" and Steamworks.has_initialized: if name == "c_hit" and sticky_note.name == "c_effort" and Steamworks.has_initialized:

View File

@ -1,4 +1,3 @@
@tool
class_name StickyNotePanel class_name StickyNotePanel
extends Panel extends Panel
@ -19,7 +18,7 @@ func _ready():
custom_minimum_size = Vector2(custom_minimum_size.x, 0) custom_minimum_size = Vector2(custom_minimum_size.x, 0)
var is_attatching: bool = false var is_attatching: bool = false
func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool = true, reparent:bool = true): func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool = true, re_parent:bool = true):
is_attatching = true is_attatching = true
attatchment.on_board = false attatchment.on_board = false
attached_sticky_note = attatchment attached_sticky_note = attatchment
@ -28,7 +27,7 @@ func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool
await get_tree().process_frame await get_tree().process_frame
var height_tween: Tween = create_tween() var height_tween: Tween = create_tween()
height_tween.tween_property(self, "custom_minimum_size", minimum_size, 0.1) height_tween.tween_property(self, "custom_minimum_size", minimum_size, 0.1)
var target_post = get_global_transform().origin+ancor_position var target_post := get_global_transform().origin+ancor_position
for panel: StickyNotePanel in get_parent().get_children(): for panel: StickyNotePanel in get_parent().get_children():
if panel.attached_sticky_note == attatchment and panel.get_index() < get_index(): if panel.attached_sticky_note == attatchment and panel.get_index() < get_index():
target_post = get_global_transform().origin+ancor_position - Vector2(0, minimum_size.y) target_post = get_global_transform().origin+ancor_position - Vector2(0, minimum_size.y)
@ -39,7 +38,7 @@ func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool
attatchment.position = ancor_position attatchment.position = ancor_position
else: else:
custom_minimum_size = minimum_size custom_minimum_size = minimum_size
if reparent: if re_parent:
attatchment.reparent(self) attatchment.reparent(self)
else: else:
add_child(attatchment) add_child(attatchment)

View File

@ -1,5 +1,3 @@
@tool
extends Area2D extends Area2D
class_name StickyNote class_name StickyNote
@ -197,7 +195,7 @@ func _on_input_event(_viewport, event, _shape_idx):
func _move_sticky_note(): func _move_sticky_note():
if is_dragged: if is_dragged:
var old_position = position #var old_position = position
position = initial_drag_position + get_viewport().get_mouse_position() - mouse_diff position = initial_drag_position + get_viewport().get_mouse_position() - mouse_diff
if hovering_cards != []: if hovering_cards != []:

View File

@ -0,0 +1,6 @@
extends Node
# General housekeeping to set up a "normal"
# game experience, e.g.
# - ensure settings exist
# - ensure savegames are healthy

View File

@ -0,0 +1 @@
uid://cq25hqgfl2eiu

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://ccdfkvtu6sb36"]
[ext_resource type="Script" uid="uid://cq25hqgfl2eiu" path="res://logic-scenes/boot/boot.gd" id="1_hjvc4"]
[node name="Boot" type="Node"]
script = ExtResource("1_hjvc4")

View File

@ -25,7 +25,7 @@ func _ready():
%SkipButton.pressed.connect(card_burned.emit) %SkipButton.pressed.connect(card_burned.emit)
func burn_cards(_id): func burn_cards(_id):
var random_card_names: Array = State.active_save_game.board_state["randoms"] var random_card_names: Array = State.save_game.board_state["randoms"]
for card_name in random_card_names: for card_name in random_card_names:
if card_name.begins_with("p"): if card_name.begins_with("p"):

View File

@ -27,7 +27,7 @@ var has_stage = false:
var _input_locked = true var _input_locked = true
var selection_state = INI: var selection_state = INI:
set(state): set(state):
print("Setting picker state to %s" % ["INI","CARDS","CARDS_SELECTED","TRANSITION","POSTS","POSTS_SELECTED","DONE"][state]) print_debug("Setting picker state to %s" % ["INI","CARDS","CARDS_SELECTED","TRANSITION","POSTS","POSTS_SELECTED","DONE"][state])
selection_state = state selection_state = state
_input_locked = !(state == CARDS or state == POSTS) _input_locked = !(state == CARDS or state == POSTS)
@ -58,6 +58,8 @@ signal cards_picked(cardnames: Array[String])
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
reset()
return
#FIXME: can I make this less annoying somehow? #FIXME: can I make this less annoying somehow?
if State.onready_room == State.rooms.YOUTH: if State.onready_room == State.rooms.YOUTH:
@ -74,8 +76,7 @@ func _ready():
Scenes.sign_up_for_sequence(pick_cards, Scenes.id.ADULT_THERAPY, 1) Scenes.sign_up_for_sequence(pick_cards, Scenes.id.ADULT_THERAPY, 1)
Scenes.sign_up_for_sequence(pick_cards, Scenes.id.ADULT_BURNOUT, 1) Scenes.sign_up_for_sequence(pick_cards, Scenes.id.ADULT_BURNOUT, 1)
else: else:
return assert(false, "Not Implemented")
assert(false)
if get_tree().root == self.get_parent(): if get_tree().root == self.get_parent():
pick_cards(3, false) pick_cards(3, false)
@ -172,7 +173,7 @@ func _input(event):
func pick(id: int): func pick(id: int):
print("%s picked card %s at id %d" % [name, options[id].text, id]) print_debug("%s picked card %s at id %d" % [name, options[id].text, id])
if id == -1: if id == -1:
curr_selection_id = 0 curr_selection_id = 0
return return
@ -199,11 +200,11 @@ func pick(id: int):
options.erase(option) options.erase(option)
anim_players[i].play("unshuffle") anim_players[i].play("unshuffle")
anim_players.remove_at(i) anim_players.remove_at(i)
print("Removed StickyNote %s from options pool" % HardCards.get_obscure_name(option.name)) print_debug("Removed StickyNote %s from options pool" % HardCards.get_obscure_name(option.name))
i += 1 i += 1
var winning_id var winning_id
print("Randomly selected card %s" % HardCards.get_obscure_name(options[1].name)) print_debug("Randomly selected card %s" % HardCards.get_obscure_name(options[1].name))
if not (current_scene_id == Scenes.id.YOUTH_JUI_JUTSU and selection_state == CARDS_SELECTED): if not (current_scene_id == Scenes.id.YOUTH_JUI_JUTSU and selection_state == CARDS_SELECTED):
randomize() randomize()
# investigate if this fixes error on line 197 # investigate if this fixes error on line 197
@ -268,7 +269,7 @@ func handle_mouse_button(button_event: InputEventMouseButton, new_selection: Nod
var current_scene_id var current_scene_id
func pick_cards(id: int, repeat: bool): func pick_cards(id: int, repeat: bool):
current_scene_id = id current_scene_id = id
print("Reached actor %s in sequence %s. Is%s repeating." % [name, Scenes.id.keys()[id], " not" if repeat else ""]) print_debug("Reached actor %s in sequence %s. Is%s repeating." % [name, Scenes.id.keys()[id], " not" if repeat else ""])
if not repeat: if not repeat:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
fill_card_slots(id) fill_card_slots(id)

View File

@ -1,4 +1,3 @@
@tool
class_name ChatMessage extends Resource class_name ChatMessage extends Resource
@export_multiline var text: String = "" @export_multiline var text: String = ""

View File

@ -1,4 +1,3 @@
@tool
class_name ChatView extends ScrollContainer class_name ChatView extends ScrollContainer
@export var messages: Array[ChatMessage] @export var messages: Array[ChatMessage]

View File

@ -1,8 +1,7 @@
@tool
extends CenterContainer extends CenterContainer
class_name Collectable_Ui class_name Collectable_Ui
@export var scene:Scenes.id = 0 @export var scene:Scenes.id = 0 as Scenes.id
@export var collapsed = true: @export var collapsed = true:
set(collapse): set(collapse):
@ -30,7 +29,7 @@ class_name Collectable_Ui
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "Collect Memento" $Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "Collect Memento"
@export var has_stage: bool = false: @export var has_stage: bool = false:
set(focused): set(focused):
print("set focus of card to ", focused) print_debug("set focus of card to ", focused)
if has_stage == focused: return if has_stage == focused: return
@ -128,7 +127,7 @@ func _yoink_focus():
State.transition_stage_to(self) State.transition_stage_to(self)
func _on_pick_button_pressed(): func _on_pick_button_pressed():
print("card collected!") print_debug("card collected!")
if not is_board: if not is_board:
Scenes.start_sequence(scene) Scenes.start_sequence(scene)
State.leave_stage(self) State.leave_stage(self)
@ -141,7 +140,7 @@ func _on_pick_button_pressed():
func _on_skip_pressed(): func _on_skip_pressed():
print("Scene skipped!") print_debug("Scene skipped!")
if scene != null: if scene != null:
emit_signal("scene_skipped", 1) emit_signal("scene_skipped", 1)
skipped = true skipped = true

View File

@ -5,7 +5,7 @@
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="3_63j61"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="3_63j61"]
[sub_resource type="GDScript" id="GDScript_g0qhf"] [sub_resource type="GDScript" id="GDScript_g0qhf"]
script/source = "@tool script/source = "
extends Button extends Button
func hide(): func hide():

View File

@ -1,4 +1,3 @@
@tool
class_name CollectableUi extends CenterContainer class_name CollectableUi extends CenterContainer
@export var has_stage: bool = false: @export var has_stage: bool = false:
@ -233,7 +232,7 @@ func collect_memento():
is_collected = true is_collected = true
func _on_skip_pressed(): func _on_skip_pressed():
print("Scene skipped!") print_debug("Scene skipped!")
if scene != null: if scene != null:
scene_skipped.emit(1) scene_skipped.emit(1)
was_skipped = true was_skipped = true

View File

@ -9,7 +9,7 @@
[ext_resource type="Script" uid="uid://bayuh2vafablg" path="res://addons/markdownlabel/header_formats/h4_format.gd" id="6_63x3b"] [ext_resource type="Script" uid="uid://bayuh2vafablg" path="res://addons/markdownlabel/header_formats/h4_format.gd" id="6_63x3b"]
[ext_resource type="Script" uid="uid://dfr1w7u3jgni3" path="res://addons/markdownlabel/header_formats/h5_format.gd" id="7_sp2lx"] [ext_resource type="Script" uid="uid://dfr1w7u3jgni3" path="res://addons/markdownlabel/header_formats/h5_format.gd" id="7_sp2lx"]
[ext_resource type="Script" uid="uid://bsi6dexoofpe6" path="res://addons/markdownlabel/header_formats/h6_format.gd" id="8_bd0uj"] [ext_resource type="Script" uid="uid://bsi6dexoofpe6" path="res://addons/markdownlabel/header_formats/h6_format.gd" id="8_bd0uj"]
[ext_resource type="Script" uid="uid://cxton1pffwxk4" path="res://button_themer.gd" id="9_pl7dp"] [ext_resource type="Script" uid="uid://cxton1pffwxk4" path="res://code/button_themer.gd" id="9_pl7dp"]
[sub_resource type="GDScript" id="GDScript_nkjm2"] [sub_resource type="GDScript" id="GDScript_nkjm2"]
script/source = "extends Panel script/source = "extends Panel

View File

@ -1,62 +0,0 @@
class_name MainMenu extends Panel
var has_stage: bool = false:
set(value):
has_stage = value
if is_node_ready():
if save_game_handle.get_most_recent_save().current_room == 0:
continue_button.visible = false
continue_button.disabled = true
new_game_button.theme_type_variation = "H1Button"
else:
continue_button.visible = true
continue_button.disabled = not has_stage
new_game_button.theme_type_variation = ""
load_game_button.disabled = not save_game_handle.has_existing_saves()
for child: Control in $PanelContainer.get_children():
child.focus_mode = FOCUS_ALL if has_stage else FOCUS_NONE
child.modulate = Color.WHITE if has_stage else Color.WEB_GRAY
child.mouse_filter = Control.MOUSE_FILTER_STOP if has_stage else Control.MOUSE_FILTER_IGNORE
if has_stage:
if continue_button.visible:
continue_button.grab_focus()
else:
new_game_button.grab_focus()
signal start_game(savegame: SaveGame)
signal open_settings(new_game: bool)
signal roll_credits
@onready var new_game_button: Button = $PanelContainer/NewGameButton
@onready var continue_button: Button = $PanelContainer/ContinueGameButton
@onready var load_game_button: Button = $PanelContainer/LoadGameButton
@onready var settings_button: Button = $PanelContainer/SettingsButton
@onready var settings_popup: SettingsPopup = %SettingsPopup
@onready var credits_button: Button = $PanelContainer/CreditsButton
@onready var quit_button: Button = $PanelContainer/QuitButton
@onready var save_game_handle: SaveGameHandle = %SaveGameHandle
@export var save_game_exists: bool = false:
set(value):
save_game_exists = value
var await_new_game: bool = false
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
save_game_handle.picked.connect(_on_save_picked)
if save_game_handle.get_most_recent_save().current_room == 0:
continue_button.disabled = true
continue_button.visible = false
new_game_button.theme_type_variation = "H1Button"
continue_button.pressed.connect(func(): start_game.emit(save_game_handle.get_most_recent_save()))
new_game_button.pressed.connect(func(): save_game_handle.pick_save_slot(true))
load_game_button.pressed.connect(func(): save_game_handle.pick_save_slot(false))
load_game_button.disabled = not save_game_handle.has_existing_saves()
settings_button.pressed.connect(settings_popup.show_settings)
quit_button.pressed.connect(get_tree().quit)
credits_button.pressed.connect(roll_credits.emit)
State.take_stage(self)
func _on_save_picked(save: SaveGame):
start_game.emit(save)

View File

@ -2,7 +2,7 @@ class_name Player extends RigidBody3D
var has_stage: bool = false: var has_stage: bool = false:
set(on_stage): set(on_stage):
print("%s player controller take stage" % "True: " if on_stage else "false") print_debug("%s player controller take stage" % "True: " if on_stage else "false")
if has_stage != on_stage: if has_stage != on_stage:
if on_stage: if on_stage:
has_stage = true has_stage = true
@ -26,7 +26,7 @@ var has_stage: bool = false:
else: else:
jitter_strength = 0 jitter_strength = 0
has_stage = false has_stage = false
print("player controller %s take stage" % "did" if has_stage else "didn't") print_debug("player controller %s take stage" % "did" if has_stage else "didn't")
sleeping = has_stage sleeping = has_stage
@export var mouse_sensitivity: Vector2 = Vector2(6, 5) @export var mouse_sensitivity: Vector2 = Vector2(6, 5)
@ -145,7 +145,7 @@ func _on_ray_entered(_area):
else: else:
has_entered = false has_entered = false
else: else:
print("You are standing in front of a wall") print_debug("You are standing in front of a wall")
func _on_ray_exited(area): func _on_ray_exited(area):
if delay_passed and area is InteractiveSprite: if delay_passed and area is InteractiveSprite:
@ -266,9 +266,10 @@ func _input(event:InputEvent):
else: else:
crouch_toggled = true crouch_toggled = true
func play_scene(id: int, _repeat): func play_scene(_id: int, _repeat: bool):
if id == Scenes.id.YOUTH_DRAEVEN: pass
var rotation_tween = create_tween() #if id == Scenes.id.YOUTH_DRAEVEN:
# var rotation_tween := create_tween()
func scene_finished(_id, repeat: bool): func scene_finished(_id, repeat: bool):
if repeat: if repeat:

View File

@ -1,118 +1,18 @@
[gd_scene load_steps=6 format=3 uid="uid://gldtxysavetf"] [gd_scene load_steps=6 format=3 uid="uid://gldtxysavetf"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_8giso"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_8giso"]
[ext_resource type="PackedScene" uid="uid://b3wlecqvelh22" path="res://logic-scenes/main menu/acessability_settings.tscn" id="3_2p4fc"] [ext_resource type="Script" uid="uid://3mtyfiuxbavf" path="res://logic-scenes/startup/startup_menu.gd" id="1_lw8rc"]
[ext_resource type="PackedScene" uid="uid://chal0ioagspx0" path="res://logic-scenes/main menu/content_settings.tscn" id="3_fso6q"] [ext_resource type="PackedScene" uid="uid://b3wlecqvelh22" path="res://ui/menu_main/accessibility_settings.tscn" id="3_2p4fc"]
[ext_resource type="PackedScene" uid="uid://chal0ioagspx0" path="res://ui/menu_main/content_settings.tscn" id="3_fso6q"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_s5ssh"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_s5ssh"]
[sub_resource type="GDScript" id="GDScript_a78qq"]
script/source = "extends Panel
@export var is_in_startup: bool
@onready var show_navigation_buttons = $\"CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/margin/show nav ui\"
func _ready():
theme = State.current_main_theme
State.theme_changed.connect(func change_theme(new_theme): theme = new_theme)
TranslationServer.set_locale(\"de\")
func starting():
pass
#$\"CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/navbuttons/Next\".grab_focus()
func _on_reduce_motion_toggled(toggled_on):
State.reduce_motion = toggled_on
# toggle for disable rendering
func _on_disable_rendering_toggled(toggled_on):
State.disable_rendering = toggled_on
# toggle for simplified controls
func _on_simplified_controls_toggled(toggled_on):
State.simplified_navigation = toggled_on # this is how you reach the global state
show_navigation_buttons.disabled = not toggled_on # if simpl. controls was toggled - disabled = false
# toggle for show nav buttons
func _on_show_nav_ui_toggled(toggled_on):
State.show_navigation_buttons = toggled_on
# toggle streaming notes
func _on_streaming_notes_toggled(toggled_on):
State.streaming_content_notes = toggled_on
# select font
# still needs handling to change the style
func _on_font_style_selected(index):
match index:
1:
State.current_main_theme = preload(\"res://logic-scenes/themes/handwriting.theme\")
print_debug(\"easy handwriting selected\")
#owner.theme.set_font(\"NanumPenScript.ttf\")
return
2:
State.current_main_theme = preload(\"res://logic-scenes/themes/serif.theme\")
#owner.theme.set_font(\"Eczar-VariableFont_wght.ttf\")
return
3:
State.current_main_theme = preload(\"res://logic-scenes/themes/hyperlegible.theme\")
#owner.theme.set_font(\"AtkinsonHyperlegible.ttf\")
return
4:
State.current_main_theme = preload(\"res://logic-scenes/themes/system.theme\")
#owner.theme.set_font(SystemFont.fallbacks[0])
return
func _on_subtitle_option_selected(index):
match index:
0:
State.enable_subtitles = false
State.enable_closed_caption = false
1:
State.enable_subtitles = true
State.enable_closed_caption = false
2:
State.enable_subtitles = true
State.enable_closed_caption = true
print_debug(State.print_settings())
# Volume Settings
# Final Page
func _on_content_notes_toggled(button_pressed):
State.show_content_notes = button_pressed
func _on_provide_summaries_toggled(button_pressed):
State.provide_summaries = button_pressed
func _on_allow_skipping_toggled(button_pressed):
State.allow_skipping = button_pressed
func hide():
get_parent().get_child(0).get_ready()
var child_tween = create_tween()
child_tween.tween_property($CenterContainer, \"modulate\", Color(1, 1, 1, 0), .5)
await child_tween.finished
var self_tween = create_tween()
self_tween.tween_property(self, \"modulate\", Color(1, 1, 1, 0), .5)
await self_tween.finished
self.visible = false
"
[node name="Startup Menu" type="Panel"] [node name="Startup Menu" type="Panel"]
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = SubResource("GDScript_a78qq") script = ExtResource("1_lw8rc")
[node name="Label" type="Label" parent="."] [node name="Label" type="Label" parent="."]
visible = false visible = false

View File

@ -0,0 +1,98 @@
extends Panel
@export var is_in_startup: bool
@onready var show_navigation_buttons = %Accessibility/Container2/margin/ShowNavUI
func _ready():
theme = State.current_main_theme
State.theme_changed.connect(func change_theme(new_theme): theme = new_theme)
TranslationServer.set_locale("de")
func starting():
pass
#$"CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/navbuttons/Next".grab_focus()
func _on_reduce_motion_toggled(toggled_on):
State.reduce_motion = toggled_on
# toggle for disable rendering
func _on_disable_rendering_toggled(toggled_on):
State.disable_rendering = toggled_on
# toggle for simplified controls
func _on_simplified_controls_toggled(toggled_on):
State.simplified_navigation = toggled_on # this is how you reach the global state
show_navigation_buttons.disabled = not toggled_on # if simpl. controls was toggled - disabled = false
# toggle for show nav buttons
func _on_show_nav_ui_toggled(toggled_on):
State.show_navigation_buttons = toggled_on
# toggle streaming notes
func _on_streaming_notes_toggled(toggled_on):
State.streaming_content_notes = toggled_on
# select font
# still needs handling to change the style
func _on_font_style_selected(index):
match index:
1:
State.current_main_theme = preload("res://logic-scenes/themes/handwriting.theme")
print_debug("easy handwriting selected")
#owner.theme.set_font("NanumPenScript.ttf")
return
2:
State.current_main_theme = preload("res://logic-scenes/themes/serif.theme")
#owner.theme.set_font("Eczar-VariableFont_wght.ttf")
return
3:
State.current_main_theme = preload("res://logic-scenes/themes/hyperlegible.theme")
#owner.theme.set_font("AtkinsonHyperlegible.ttf")
return
4:
State.current_main_theme = preload("res://logic-scenes/themes/system.theme")
#owner.theme.set_font(SystemFont.fallbacks[0])
return
func _on_subtitle_option_selected(index):
match index:
0:
State.enable_subtitles = false
State.enable_closed_caption = false
1:
State.enable_subtitles = true
State.enable_closed_caption = false
2:
State.enable_subtitles = true
State.enable_closed_caption = true
print_debug(State.print_settings())
# Volume Settings
# Final Page
func _on_content_notes_toggled(button_pressed):
State.show_content_notes = button_pressed
func _on_provide_summaries_toggled(button_pressed):
State.provide_summaries = button_pressed
func _on_allow_skipping_toggled(button_pressed):
State.allow_skipping = button_pressed
func hide():
get_parent().get_child(0).get_ready()
var child_tween = create_tween()
child_tween.tween_property($CenterContainer, "modulate", Color(1, 1, 1, 0), .5)
await child_tween.finished
var self_tween = create_tween()
self_tween.tween_property(self, "modulate", Color(1, 1, 1, 0), .5)
await self_tween.finished
self.visible = false

View File

@ -0,0 +1 @@
uid://3mtyfiuxbavf

View File

@ -1,185 +0,0 @@
extends Node3D
signal room_loaded
var has_stage: bool = false:
set(stage):
has_stage = stage
if in_game and has_stage:
in_game = false
_return_to_menu()
@export_file(".tscn") var youth_room_path: String
@export_file(".tscn") var transition_room_path: String
@export_file(".tscn") var adulthood_room_path: String
@export_file(".tscn") var ending_path: String
@onready var main_menu:MainMenu = %"Main Menu"
@onready var pause_menu = %PauseMenu
@onready var menu_animation: AnimationTree = %MenuAnimationTree
@onready var state_machine = menu_animation["parameters/playback"]
@onready var focus_forward = %"Main Menu"
var current_room_id: State.rooms
var in_game = false
var current_room: RoomTemplate
var currently_loading_room: String = "":
set(path):
if path != "":
ResourceLoader.load_threaded_request(path, "PackedScene")
menu_animation["parameters/conditions/loading_done"] = false
menu_animation["parameters/conditions/load_save"] = true
else:
menu_animation["parameters/conditions/loading_done"] = true
menu_animation["parameters/conditions/load_save"] = false
currently_loading_room = path
# Called when the node enters the scene tree for the first time.
func _ready():
main_menu.start_game.connect(load_save)
main_menu.roll_credits.connect(func(): state_machine.travel("credits_roll"))
get_tree().tree_process_mode_changed.connect(pause_mode_changed)
await get_tree().process_frame
currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
State.pass_stage_to(main_menu)
Scenes.scene_starting.connect(prepare_transition)
Scenes.scene_finished.connect(transition)
func _process(_delta: float) -> void:
if currently_loading_room != "" and not await_swap:
if ResourceLoader.load_threaded_get_status(currently_loading_room) == 3:
if not current_room == null:
current_room.queue_free()
State.onready_room = get_room_id_from_path(currently_loading_room)
current_room = ResourceLoader.load_threaded_get(currently_loading_room).instantiate()
print("add room")
add_child(current_room)
State.onready_room = State.rooms.NULL
move_child(current_room, 0)
currently_loading_room = ""
room_loaded.emit()
if Input.is_action_just_pressed("reset_demo") and (OS.has_feature("demo") or true):
State.stage_list = [self]
_return_to_menu()
func _unhandled_input(event: InputEvent) -> void:
if event is InputEvent and in_game:
if event.is_action_pressed("ui_menu"):
toggle_pause_menu()
func toggle_pause_menu():
if not get_tree().paused:
get_tree().paused = true
var state_machine = menu_animation["parameters/playback"]
state_machine.travel("reveal_pause_menu")
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
else:
get_tree().paused = false
var state_machine = menu_animation["parameters/playback"]
state_machine.travel("start_game")
if State.stage_list[0] is Player:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
func debug_youth():
get_child(1).hide()
get_child(2).hide()
get_child(3).hide()
get_child(0).get_ready()
get_child(0).start()
func _return_to_menu():
State.active_save_game = null
menu_animation["parameters/conditions/start_game"] = false
State.pass_stage_to(main_menu)
currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
menu_animation["parameters/conditions/return_to_menu"] = true
await(get_tree().create_timer(0.5).timeout)
menu_animation["parameters/conditions/return_to_menu"] = false
_on_ready_to_unload()
func load_save(save: SaveGame):
if currently_loading_room != "":
await(room_loaded)
if save.current_room != current_room.id:
# TODO Prevent race condition from appearing when save is loaded while room is still loading.
currently_loading_room = get_room_path_from_id(save.current_room)
await(room_loaded)
menu_animation["parameters/conditions/start_game"] = true
State.active_save_game = save
in_game = true
current_room.start_room()
func _on_ready_to_unload():
if get_child(0) is Node3D:
get_child(0).free()
func get_room_path_from_id(id: State.rooms) -> String:
match id:
State.rooms.YOUTH, State.rooms.NULL:
return youth_room_path
State.rooms.TRANSITION:
return transition_room_path
State.rooms.ADULTHOOD:
return adulthood_room_path
_:
return ending_path
func get_room_id_from_path(path: String) -> State.rooms:
match path:
youth_room_path:
return State.rooms.YOUTH
transition_room_path:
return State.rooms.TRANSITION
adulthood_room_path:
return State.rooms.ADULTHOOD
_:
return State.rooms.NULL
func start_demo():
#FIXME this causes the room to reload
#load_save(SaveGame.new())
current_room.start_room()
in_game = true
func pause_mode_changed():
print(get_tree().paused)
var await_swap: bool = false
func prepare_transition(scene_id: Scenes.id, _repeat):
if scene_id == Scenes.id.TRANSITION:
await_swap = true
#FIXME: this does not need to be part of the sequence
await(get_tree().process_frame)
current_room.prepare_transition()
if not _repeat:
currently_loading_room = get_room_path_from_id(State.rooms.TRANSITION)
else:
currently_loading_room = get_room_path_from_id(State.rooms.ADULTHOOD)
func transition(scene_id: Scenes.id, _repeat):
if scene_id == Scenes.id.TRANSITION:
State.reset_focus()
await_swap = false
await room_loaded
if not _repeat:
State.queue_for_stage(current_room)
Scenes.end_current_sequence()
else:
State.pass_stage_to(current_room)

View File

@ -11,7 +11,7 @@ config_version=5
[application] [application]
config/name="Frame of Mind" config/name="Frame of Mind"
run/main_scene="uid://befxf8uruwnrl" run/main_scene="uid://ccdfkvtu6sb36"
config/use_custom_user_dir=true config/use_custom_user_dir=true
config/features=PackedStringArray("4.5", "Forward Plus") config/features=PackedStringArray("4.5", "Forward Plus")
boot_splash/bg_color=Color(0.0313726, 0.0117647, 0.129412, 1) boot_splash/bg_color=Color(0.0313726, 0.0117647, 0.129412, 1)
@ -26,6 +26,7 @@ Scenes="*res://singletons/scene_reference.gd"
Steamworks="*res://dev-util/steamworks.gd" Steamworks="*res://dev-util/steamworks.gd"
PromptManager="*res://addons/input_prompts/input_prompt_manager.gd" PromptManager="*res://addons/input_prompts/input_prompt_manager.gd"
Steam="*res://dev-util/steam.gd" Steam="*res://dev-util/steam.gd"
Main="*res://singletons/main/main.tscn"
[debug] [debug]
@ -199,6 +200,10 @@ locale/test="de"
3d_physics/layer_5="UI_reveal" 3d_physics/layer_5="UI_reveal"
3d_physics/layer_6="UI_handle" 3d_physics/layer_6="UI_handle"
[memory]
limits/message_queue/max_size_mb=2048
[rendering] [rendering]
textures/vram_compression/import_etc2_astc=true textures/vram_compression/import_etc2_astc=true

View File

@ -1,4 +1,3 @@
@tool
class_name MenuSetting extends Resource class_name MenuSetting extends Resource
enum Receivers { enum Receivers {

View File

@ -1,9 +1,21 @@
@tool extends Node
extends Node class_name GlobalState
#region configuration #region configuration
signal settings_changed signal settings_changed
var settings_initialised var _settings_initialized
var room: RoomTemplate
var save_game: SaveGame
signal environment_settings_changed
# FIXME find a better way to switch fonts and maybe emit the theme_changed signal!
signal theme_changed
var current_main_theme:Theme = preload("res://logic-scenes/themes/handwriting.theme")
func set_theme(new_theme:Theme):
current_main_theme = new_theme
theme_changed.emit(new_theme)
@export_file var user_settings_path:String = "user://user_settings.json" @export_file var user_settings_path:String = "user://user_settings.json"
@export_file var user_saves_path:String = "user://savegames" @export_file var user_saves_path:String = "user://savegames"
@ -12,45 +24,45 @@ var settings_initialised
@export var reduce_motion: bool = false: @export var reduce_motion: bool = false:
set(value): set(value):
reduce_motion = value reduce_motion = value
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
@export var screen_reader_enabled:bool = false: @export var screen_reader_enabled:bool = false:
set(value): set(value):
screen_reader_enabled = value screen_reader_enabled = value
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
@export var rendering_disabled: bool = false: @export var rendering_disabled: bool = false:
set(value): set(value):
rendering_disabled = value rendering_disabled = value
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
@export var use_simplified_navigation:bool = false: @export var use_simplified_navigation:bool = false:
set(value): set(value):
use_simplified_navigation = value use_simplified_navigation = value
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
@export var enable_hyperacoustic_filter: bool = false: @export var enable_hyperacoustic_filter: bool = false:
set(value): set(value):
enable_hyperacoustic_filter = value enable_hyperacoustic_filter = value
if enable_hyperacoustic_filter: if enable_hyperacoustic_filter:
AudioServer.set_bus_effect_enabled(0, 0, enable_hyperacoustic_filter) AudioServer.set_bus_effect_enabled(0, 0, enable_hyperacoustic_filter)
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
@export var show_navigation_buttons: bool = false: @export var show_navigation_buttons: bool = false:
set(value): set(value):
show_navigation_buttons = value show_navigation_buttons = value
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
@export_enum("handwriting", "serif", "legible", "system") var font_style: int = 0: @export_enum("handwriting", "serif", "legible", "system") var font_style: int = 0:
set(value): set(value):
font_style = value font_style = value
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
@export_enum("disabled", "text", "cc") var subtitles: int = false: @export_enum("disabled", "text", "cc") var subtitles: int = false:
set(value): set(value):
subtitles = value subtitles = value
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
@export var ui_scaling: float = 1: @export var ui_scaling: float = 1:
set(value): set(value):
@ -60,22 +72,19 @@ var settings_initialised
@export var show_content_notes: bool = false: @export var show_content_notes: bool = false:
set(value): set(value):
show_content_notes = value show_content_notes = value
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
@export var provide_summaries: bool = false: @export var provide_summaries: bool = false:
set(value): set(value):
provide_summaries = value provide_summaries = value
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
@export var allow_skipping: bool = false: @export var allow_skipping: bool = false:
set(value): set(value):
allow_skipping = value allow_skipping = value
if settings_initialised: if _settings_initialized:
settings_changed.emit() settings_changed.emit()
# FIXME find a better way to switch fonts and maybe emit the theme_changed signal!
var current_main_theme:Theme = preload("res://logic-scenes/themes/handwriting.theme")
@export_group("AudioSettings") @export_group("AudioSettings")
@export var main_volume:float = 1: @export var main_volume:float = 1:
set(volume): set(volume):
@ -141,23 +150,18 @@ var ssil_enable:bool = false:
set(value): set(value):
ssil_enable = value ssil_enable = value
environment_settings_changed.emit() environment_settings_changed.emit()
var sdfgi_enable:bool = false: var sdfgi_enable:bool = false:
set(value): set(value):
sdfgi_enable = value sdfgi_enable = value
environment_settings_changed.emit() environment_settings_changed.emit()
var active_save_game: SaveGame
signal environment_settings_changed
signal theme_changed
func load_user_settings(): func load_user_settings():
if FileAccess.file_exists(user_settings_path): if FileAccess.file_exists(user_settings_path):
var file = FileAccess.open(user_settings_path, FileAccess.READ) var file := FileAccess.open(user_settings_path, FileAccess.READ)
var raw_json = FileAccess.get_file_as_string(user_settings_path) var raw_json := FileAccess.get_file_as_string(user_settings_path)
file.close() file.close()
var parsed: Dictionary = JSON.parse_string(raw_json) var parsed: Dictionary = JSON.parse_string(raw_json)
@ -173,11 +177,11 @@ func load_user_settings():
if out[0] == "reduce": if out[0] == "reduce":
reduce_motion = true reduce_motion = true
settings_initialised = true _settings_initialized = true
settings_changed.emit() settings_changed.emit()
func save_settings(): func save_settings():
var out_dict = { var out_dict := {
"accessability": { "accessability": {
"reduce_motion:": reduce_motion, "reduce_motion:": reduce_motion,
"screen_reader_enabled": screen_reader_enabled, "screen_reader_enabled": screen_reader_enabled,
@ -215,11 +219,11 @@ func save_settings():
} }
} }
var file = FileAccess.open(user_settings_path, FileAccess.WRITE) var file := FileAccess.open(user_settings_path, FileAccess.WRITE)
file.store_string(JSON.stringify(out_dict)) file.store_string(JSON.stringify(out_dict))
file.close() file.close()
settings_initialised = true _settings_initialized = true
settings_changed.emit() settings_changed.emit()
var last_mode := DisplayServer.WINDOW_MODE_WINDOWED var last_mode := DisplayServer.WINDOW_MODE_WINDOWED
@ -242,10 +246,10 @@ func _ready():
await get_tree().process_frame await get_tree().process_frame
for child in get_tree().root.get_children(): for child in get_tree().root.get_children():
if child is RoomTemplate and active_save_game == null: if child is RoomTemplate and save_game == null:
push_warning("Room initialised without a SaveGame. Creating proxy save.") push_warning("Room initialised without a SaveGame. Creating proxy save.")
#TODO: make this a bit more clean maybe? #TODO: make this a bit more clean maybe?
active_save_game = ResourceLoader.load("res://dev-util/debug_save.tres") save_game = ResourceLoader.load("res://dev-util/debug_save.tres")
if "has_stage" in child: if "has_stage" in child:
pass_stage_to(child) pass_stage_to(child)
break break
@ -287,8 +291,6 @@ func leave_stage(actor:Object) -> bool:
return false return false
func get_current_actor(): return stage_list.front()
# Used to put a new target on top of the Focus Stack. # Used to put a new target on top of the Focus Stack.
func pass_stage_to(target:Object, force = false, lock_focus = false) -> bool: func pass_stage_to(target:Object, force = false, lock_focus = false) -> bool:
if "pass_to_actor" in target: if "pass_to_actor" in target:

232
src/singletons/main/main.gd Normal file
View File

@ -0,0 +1,232 @@
extends Control
@export_file(".tscn") var youth_room_path: String
@export_file(".tscn") var transition_room_path: String
@export_file(".tscn") var adulthood_room_path: String
@export_file(".tscn") var ending_path: String
@onready var main_menu: MainMenu = %MainMenu
@onready var pause_menu: PauseManu = %PauseMenu
@onready var menu_animation: AnimationTree = %MenuAnimationTree
@onready var state_machine: AnimationNodeStateMachinePlayback = menu_animation["parameters/playback"]
@onready var room_paths := {
State.rooms.NULL: youth_room_path, # Maybe Draeven story?
State.rooms.YOUTH: youth_room_path,
State.rooms.TRANSITION: transition_room_path,
State.rooms.ADULTHOOD: adulthood_room_path,
State.rooms.ENDING: ending_path
}
func _ready() -> void:
print_debug("main.gd: ready()")
if State.room == null:
_open()
var path := await main_menu.execute()
_close()
await _load_room(path)
else:
hide()
await _mainloop() # Debug functionality
func _mainloop() -> void:
while true:
var next_scene := await State.room.play()
if (next_scene == null):
break
else:
await _load_room(youth_room_path)
func _load_room(next_path: String) -> void:
if State.room != null:
State.room.unload()
ResourceLoader.load_threaded_request(next_path, "PackedScene", true)
while true:
await get_tree().process_frame
var state := ResourceLoader.load_threaded_get_status(next_path)
match state:
ResourceLoader.THREAD_LOAD_LOADED:
var next_scene := ResourceLoader.load_threaded_get(youth_room_path) as PackedScene
State.room = next_scene.instantiate() as RoomTemplate
get_tree().root.add_child(State.room)
hide()
break
ResourceLoader.THREAD_LOAD_FAILED:
push_error("Failed to load youth room scene.")
return
# TODO: ugh, godot tweens are the wurst
func _open() -> void:
show()
menu_animation["parameters/conditions/loading_done"] = false
menu_animation["parameters/conditions/load_save"] = false
func _close() -> void:
pass
#
#var in_game = false
#
#var current_room: RoomTemplate
#var currently_loading_room: String = "":
# set(path):
# if path != "":
# ResourceLoader.load_threaded_request(path, "PackedScene")
# menu_animation["parameters/conditions/loading_done"] = false
# menu_animation["parameters/conditions/load_save"] = true
# else:
# menu_animation["parameters/conditions/loading_done"] = true
# menu_animation["parameters/conditions/load_save"] = false
#
# currently_loading_room = path
#
## Called when the node enters the scene tree for the first time.
#func _ready():
# main_menu.start_game.connect(load_save)
# main_menu.roll_credits.connect(func(): state_machine.travel("credits_roll"))
# get_tree().tree_process_mode_changed.connect(pause_mode_changed)
# await get_tree().process_frame
# currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
# State.pass_stage_to(main_menu)
#
# Scenes.scene_starting.connect(prepare_transition)
# Scenes.scene_finished.connect(transition)
#
#func _process(_delta: float) -> void:
# if currently_loading_room != "" and not await_swap:
# if ResourceLoader.load_threaded_get_status(currently_loading_room) == 3:
# if not current_room == null:
# current_room.queue_free()
# State.onready_room = get_room_id_from_path(currently_loading_room)
# current_room = ResourceLoader.load_threaded_get(currently_loading_room).instantiate()
# print_debug("add room")
# add_child(current_room)
# State.onready_room = State.rooms.NULL
# move_child(current_room, 0)
# currently_loading_room = ""
# room_loaded.emit()
#
# if Input.is_action_just_pressed("reset_demo") and (OS.has_feature("demo") or true):
# State.stage_list = [self]
# _return_to_menu()
#
func _unhandled_input(event: InputEvent) -> void:
if event is InputEvent:
if event.is_action_pressed("ui_menu"):
toggle_pause_menu()
func toggle_pause_menu():
print_debug("Toggling pause menu")
pass
# if not get_tree().paused:
# get_tree().paused = true
# var state_machine := menu_animation["parameters/playback"]
# state_machine.travel("reveal_pause_menu")
# Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
# else:
# get_tree().paused = false
# var state_machine := menu_animation["parameters/playback"]
# state_machine.travel("start_game")
#
# if State.stage_list[0] is Player:
# Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
#func debug_youth():
# get_child(1).hide()
# get_child(2).hide()
# get_child(3).hide()
# get_child(0).get_ready()
# get_child(0).start()
#
#func _return_to_menu():
# State.active_save_game = null
#
# menu_animation["parameters/conditions/start_game"] = false
#
# State.pass_stage_to(main_menu)
#
# currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
#
# menu_animation["parameters/conditions/return_to_menu"] = true
# await(get_tree().create_timer(0.5).timeout)
# menu_animation["parameters/conditions/return_to_menu"] = false
# _on_ready_to_unload()
#
#func load_save(save: SaveGame):
#
# if currently_loading_room != "":
# await(room_loaded)
#
# if save.current_room != current_room.id:
# # TODO Prevent race condition from appearing when save is loaded while room is still loading.
# currently_loading_room = get_room_path_from_id(save.current_room)
# await(room_loaded)
#
# menu_animation["parameters/conditions/start_game"] = true
#
# State.active_save_game = save
# in_game = true
# current_room.start_room()
#
#func _on_ready_to_unload():
# if get_child(0) is Node3D:
# get_child(0).free()
#
#func get_room_path_from_id(id: State.rooms) -> String:
# match id:
# State.rooms.YOUTH, State.rooms.NULL:
# return youth_room_path
# State.rooms.TRANSITION:
# return transition_room_path
# State.rooms.ADULTHOOD:
# return adulthood_room_path
# _:
# return ending_path
#
#func get_room_id_from_path(path: String) -> State.rooms:
# match path:
# youth_room_path:
# return State.rooms.YOUTH
# transition_room_path:
# return State.rooms.TRANSITION
# adulthood_room_path:
# return State.rooms.ADULTHOOD
# _:
# return State.rooms.NULL
#
#
#func start_demo():
# #FIXME this causes the room to reload
# #load_save(SaveGame.new())
# current_room.start_room()
# in_game = true
#
#func pause_mode_changed():
# print_debug(get_tree().paused)
#
#var await_swap: bool = false
#func prepare_transition(scene_id: Scenes.id, _repeat):
# if scene_id == Scenes.id.TRANSITION:
# await_swap = true
# #FIXME: this does not need to be part of the sequence
# await(get_tree().process_frame)
# current_room.prepare_transition()
# if not _repeat:
# currently_loading_room = get_room_path_from_id(State.rooms.TRANSITION)
# else:
#
# currently_loading_room = get_room_path_from_id(State.rooms.ADULTHOOD)
#
#func transition(scene_id: Scenes.id, _repeat):
# if scene_id == Scenes.id.TRANSITION:
# State.reset_focus()
# await_swap = false
# await room_loaded
# if not _repeat:
# State.queue_for_stage(current_room)
# Scenes.end_current_sequence()
# else:
# State.pass_stage_to(current_room)

View File

@ -1,15 +1,16 @@
[gd_scene load_steps=68 format=3 uid="uid://befxf8uruwnrl"] [gd_scene load_steps=69 format=3 uid="uid://befxf8uruwnrl"]
[ext_resource type="Script" uid="uid://k8yppfbkq0xv" path="res://main.gd" id="1_rqkns"] [ext_resource type="Script" uid="uid://k8yppfbkq0xv" path="res://singletons/main/main.gd" id="1_rqkns"]
[ext_resource type="PackedScene" uid="uid://gldtxysavetf" path="res://logic-scenes/startup/startup.tscn" id="1_v5rpm"] [ext_resource type="PackedScene" uid="uid://gldtxysavetf" path="res://logic-scenes/startup/startup.tscn" id="1_v5rpm"]
[ext_resource type="PackedScene" uid="uid://b51wdql4mby47" path="res://main_menu.tscn" id="3_ik73t"] [ext_resource type="PackedScene" uid="uid://b51wdql4mby47" path="res://ui/menu_main/main_menu.tscn" id="3_ik73t"]
[ext_resource type="Texture2D" uid="uid://d031kxe5m4ihh" path="res://import/interface-elements/loading_rect_clip.png" id="5_sr555"] [ext_resource type="Texture2D" uid="uid://d031kxe5m4ihh" path="res://import/interface-elements/loading_rect_clip.png" id="5_sr555"]
[ext_resource type="Texture2D" uid="uid://bqf82f8dk4yun" path="res://import/interface-elements/loading_rect_frame.png" id="6_aaaxa"] [ext_resource type="Texture2D" uid="uid://bqf82f8dk4yun" path="res://import/interface-elements/loading_rect_frame.png" id="6_aaaxa"]
[ext_resource type="Texture2D" uid="uid://dpftqdvtrkioh" path="res://import/interface-elements/loading_rect_deco.png" id="7_koraw"] [ext_resource type="Texture2D" uid="uid://dpftqdvtrkioh" path="res://import/interface-elements/loading_rect_deco.png" id="7_koraw"]
[ext_resource type="PackedScene" uid="uid://6aaxpvoepqrm" path="res://disclaimer.tscn" id="7_t45fc"] [ext_resource type="PackedScene" uid="uid://6aaxpvoepqrm" path="res://logic-scenes/disclaimer/disclaimer.tscn" id="7_t45fc"]
[ext_resource type="AudioStream" uid="uid://fej7yw25lgqy" path="res://import/menu_music/Ambient 6.ogg" id="8_tptb8"] [ext_resource type="AudioStream" uid="uid://fej7yw25lgqy" path="res://import/menu_music/Ambient 6.ogg" id="8_tptb8"]
[ext_resource type="Script" uid="uid://0h0lrkntx0uh" path="res://logic-scenes/main menu/pause_menu.gd" id="9_ihfph"] [ext_resource type="Script" uid="uid://0h0lrkntx0uh" path="res://ui/menu_main/pause_menu.gd" id="9_ihfph"]
[ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="9_l7v4b"] [ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="9_l7v4b"]
[ext_resource type="Texture2D" uid="uid://d3ewjumh0b0g6" path="res://ui/menu_main/logo.png" id="9_tqjky"]
[ext_resource type="Texture2D" uid="uid://bdyg065h8vcdi" path="res://base-environments/youth_room/shaders/starlight-textures.png" id="10_pipov"] [ext_resource type="Texture2D" uid="uid://bdyg065h8vcdi" path="res://base-environments/youth_room/shaders/starlight-textures.png" id="10_pipov"]
[ext_resource type="Script" uid="uid://dbap0gqox0ty1" path="res://addons/markdownlabel/markdownlabel.gd" id="12_074og"] [ext_resource type="Script" uid="uid://dbap0gqox0ty1" path="res://addons/markdownlabel/markdownlabel.gd" id="12_074og"]
[ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="12_cegan"] [ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="12_cegan"]
@ -107,7 +108,7 @@ tracks/3/keys = {
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("../../Panel:modulate") tracks/4/path = NodePath("../../Background:modulate")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
@ -119,7 +120,7 @@ tracks/4/keys = {
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("../../Main Menu:modulate") tracks/5/path = NodePath("../../MainMenu:modulate")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
@ -131,7 +132,7 @@ tracks/5/keys = {
tracks/6/type = "value" tracks/6/type = "value"
tracks/6/imported = false tracks/6/imported = false
tracks/6/enabled = true tracks/6/enabled = true
tracks/6/path = NodePath("../../Main Menu:visible") tracks/6/path = NodePath("../../MainMenu:visible")
tracks/6/interp = 1 tracks/6/interp = 1
tracks/6/loop_wrap = true tracks/6/loop_wrap = true
tracks/6/keys = { tracks/6/keys = {
@ -143,7 +144,7 @@ tracks/6/keys = {
tracks/7/type = "value" tracks/7/type = "value"
tracks/7/imported = false tracks/7/imported = false
tracks/7/enabled = true tracks/7/enabled = true
tracks/7/path = NodePath("../../Panel:visible") tracks/7/path = NodePath("../../Background:visible")
tracks/7/interp = 1 tracks/7/interp = 1
tracks/7/loop_wrap = true tracks/7/loop_wrap = true
tracks/7/keys = { tracks/7/keys = {
@ -203,7 +204,7 @@ tracks/11/keys = {
tracks/12/type = "value" tracks/12/type = "value"
tracks/12/imported = false tracks/12/imported = false
tracks/12/enabled = true tracks/12/enabled = true
tracks/12/path = NodePath("%Main Menu:visible") tracks/12/path = NodePath("../../MainMenu:visible")
tracks/12/interp = 1 tracks/12/interp = 1
tracks/12/loop_wrap = true tracks/12/loop_wrap = true
tracks/12/keys = { tracks/12/keys = {
@ -215,7 +216,7 @@ tracks/12/keys = {
tracks/13/type = "value" tracks/13/type = "value"
tracks/13/imported = false tracks/13/imported = false
tracks/13/enabled = true tracks/13/enabled = true
tracks/13/path = NodePath("%Main Menu:modulate") tracks/13/path = NodePath("../../MainMenu:modulate")
tracks/13/interp = 1 tracks/13/interp = 1
tracks/13/loop_wrap = true tracks/13/loop_wrap = true
tracks/13/keys = { tracks/13/keys = {
@ -303,7 +304,7 @@ length = 130.003
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
tracks/0/path = NodePath("../../Main Menu:visible") tracks/0/path = NodePath("../../MainMenu:visible")
tracks/0/interp = 0 tracks/0/interp = 0
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
@ -330,7 +331,7 @@ tracks/1/use_blend = true
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("../../Panel:visible") tracks/2/path = NodePath("../../Background:visible")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
@ -342,7 +343,7 @@ tracks/2/keys = {
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("../../Panel:modulate") tracks/3/path = NodePath("../../Background:modulate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
@ -390,7 +391,7 @@ tracks/6/keys = {
tracks/7/type = "value" tracks/7/type = "value"
tracks/7/imported = false tracks/7/imported = false
tracks/7/enabled = true tracks/7/enabled = true
tracks/7/path = NodePath("%Main Menu:modulate") tracks/7/path = NodePath("../../MainMenu:modulate")
tracks/7/interp = 1 tracks/7/interp = 1
tracks/7/loop_wrap = true tracks/7/loop_wrap = true
tracks/7/keys = { tracks/7/keys = {
@ -454,7 +455,7 @@ tracks/3/keys = {
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("%Main Menu:visible") tracks/4/path = NodePath("../../MainMenu:visible")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
@ -470,7 +471,7 @@ length = 0.5
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
tracks/0/path = NodePath("../../Panel:modulate") tracks/0/path = NodePath("../../Background:modulate")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
@ -482,7 +483,7 @@ tracks/0/keys = {
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
tracks/1/enabled = true tracks/1/enabled = true
tracks/1/path = NodePath("../../Panel:visible") tracks/1/path = NodePath("../../Background:visible")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
@ -494,7 +495,7 @@ tracks/1/keys = {
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("%Main Menu:visible") tracks/2/path = NodePath("../../MainMenu:visible")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
@ -506,7 +507,7 @@ tracks/2/keys = {
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("%Main Menu:modulate") tracks/3/path = NodePath("../../MainMenu:modulate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
@ -558,7 +559,7 @@ tracks/2/keys = {
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("../../Panel:modulate") tracks/3/path = NodePath("../../Background:modulate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
@ -570,7 +571,7 @@ tracks/3/keys = {
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("../../Panel:visible") tracks/4/path = NodePath("../../Background:visible")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
@ -671,7 +672,7 @@ tracks/3/keys = {
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("../../Panel:modulate") tracks/4/path = NodePath("../../Background:modulate")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
@ -683,7 +684,7 @@ tracks/4/keys = {
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("../../Main Menu:modulate") tracks/5/path = NodePath("../../MainMenu:modulate")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
@ -695,7 +696,7 @@ tracks/5/keys = {
tracks/6/type = "value" tracks/6/type = "value"
tracks/6/imported = false tracks/6/imported = false
tracks/6/enabled = true tracks/6/enabled = true
tracks/6/path = NodePath("../../Panel:visible") tracks/6/path = NodePath("../../Background:visible")
tracks/6/interp = 1 tracks/6/interp = 1
tracks/6/loop_wrap = true tracks/6/loop_wrap = true
tracks/6/keys = { tracks/6/keys = {
@ -796,7 +797,7 @@ tracks/3/keys = {
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("../../Panel:modulate") tracks/4/path = NodePath("../../Background:modulate")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
@ -808,7 +809,7 @@ tracks/4/keys = {
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("../../Panel:visible") tracks/5/path = NodePath("../../Background:visible")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
@ -907,7 +908,7 @@ tracks/3/keys = {
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("%Main Menu:visible") tracks/4/path = NodePath("../../MainMenu:visible")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
@ -923,7 +924,7 @@ length = 0.5
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
tracks/0/path = NodePath("../../Panel:modulate") tracks/0/path = NodePath("../../Background:modulate")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
@ -935,7 +936,7 @@ tracks/0/keys = {
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
tracks/1/enabled = true tracks/1/enabled = true
tracks/1/path = NodePath("%Main Menu:modulate") tracks/1/path = NodePath("../../MainMenu:modulate")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
@ -947,7 +948,7 @@ tracks/1/keys = {
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("%Main Menu:visible") tracks/2/path = NodePath("../../MainMenu:visible")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
@ -962,7 +963,7 @@ resource_name = "transition_load_game"
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
tracks/0/path = NodePath("../../Panel:modulate") tracks/0/path = NodePath("../../Background:modulate")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
@ -974,7 +975,7 @@ tracks/0/keys = {
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
tracks/1/enabled = true tracks/1/enabled = true
tracks/1/path = NodePath("../../Main Menu:modulate") tracks/1/path = NodePath("../../MainMenu:modulate")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
@ -986,7 +987,7 @@ tracks/1/keys = {
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("../../Main Menu:visible") tracks/2/path = NodePath("../../MainMenu:visible")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
@ -998,7 +999,7 @@ tracks/2/keys = {
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("../../Panel:visible") tracks/3/path = NodePath("../../Background:visible")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
@ -1127,11 +1128,11 @@ advance_mode = 2
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_uwcb5"] [sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_uwcb5"]
states/End/position = Vector2(981, 105) states/End/position = Vector2(981, 105)
states/credits_roll/node = SubResource("AnimationNodeAnimation_2npx0") states/credits_roll/node = SubResource("AnimationNodeAnimation_2npx0")
states/credits_roll/position = Vector2(877.91, 32) states/credits_roll/position = Vector2(876.91, 32)
states/hide_pause_menu/node = SubResource("AnimationNodeAnimation_6p8we") states/hide_pause_menu/node = SubResource("AnimationNodeAnimation_6p8we")
states/hide_pause_menu/position = Vector2(599, -42.7336) states/hide_pause_menu/position = Vector2(599, -42.7336)
states/init/node = SubResource("AnimationNodeAnimation_8b66u") states/init/node = SubResource("AnimationNodeAnimation_8b66u")
states/init/position = Vector2(401, 100) states/init/position = Vector2(401, 104)
states/load_savegame/node = SubResource("AnimationNodeAnimation_ahhta") states/load_savegame/node = SubResource("AnimationNodeAnimation_ahhta")
states/load_savegame/position = Vector2(751.91, 242) states/load_savegame/position = Vector2(751.91, 242)
states/loading/node = SubResource("AnimationNodeAnimation_v66b5") states/loading/node = SubResource("AnimationNodeAnimation_v66b5")
@ -1145,7 +1146,7 @@ states/reveal_pause_menu/position = Vector2(783.91, -112.734)
states/start_game/node = SubResource("AnimationNodeAnimation_5umfs") states/start_game/node = SubResource("AnimationNodeAnimation_5umfs")
states/start_game/position = Vector2(698, 32) states/start_game/position = Vector2(698, 32)
transitions = ["Start", "init", SubResource("AnimationNodeStateMachineTransition_dxdg4"), "init", "loading", SubResource("AnimationNodeStateMachineTransition_0hpxy"), "loading", "loading_done", SubResource("AnimationNodeStateMachineTransition_ipapo"), "loading_done", "start_game", SubResource("AnimationNodeStateMachineTransition_0t1lp"), "start_game", "init", SubResource("AnimationNodeStateMachineTransition_66nmg"), "loading_done", "load_savegame", SubResource("AnimationNodeStateMachineTransition_6b86u"), "load_savegame", "loading_game", SubResource("AnimationNodeStateMachineTransition_y626i"), "loading_game", "start_game", SubResource("AnimationNodeStateMachineTransition_52bss"), "start_game", "credits_roll", SubResource("AnimationNodeStateMachineTransition_x8oth"), "credits_roll", "loading_done", SubResource("AnimationNodeStateMachineTransition_5ge3a"), "loading_done", "credits_roll", SubResource("AnimationNodeStateMachineTransition_44pd3"), "start_game", "reveal_pause_menu", SubResource("AnimationNodeStateMachineTransition_pc6pe"), "reveal_pause_menu", "hide_pause_menu", SubResource("AnimationNodeStateMachineTransition_dx61n"), "hide_pause_menu", "start_game", SubResource("AnimationNodeStateMachineTransition_lp1dx"), "hide_pause_menu", "init", SubResource("AnimationNodeStateMachineTransition_mqlnh")] transitions = ["Start", "init", SubResource("AnimationNodeStateMachineTransition_dxdg4"), "init", "loading", SubResource("AnimationNodeStateMachineTransition_0hpxy"), "loading", "loading_done", SubResource("AnimationNodeStateMachineTransition_ipapo"), "loading_done", "start_game", SubResource("AnimationNodeStateMachineTransition_0t1lp"), "start_game", "init", SubResource("AnimationNodeStateMachineTransition_66nmg"), "loading_done", "load_savegame", SubResource("AnimationNodeStateMachineTransition_6b86u"), "load_savegame", "loading_game", SubResource("AnimationNodeStateMachineTransition_y626i"), "loading_game", "start_game", SubResource("AnimationNodeStateMachineTransition_52bss"), "start_game", "credits_roll", SubResource("AnimationNodeStateMachineTransition_x8oth"), "credits_roll", "loading_done", SubResource("AnimationNodeStateMachineTransition_5ge3a"), "loading_done", "credits_roll", SubResource("AnimationNodeStateMachineTransition_44pd3"), "start_game", "reveal_pause_menu", SubResource("AnimationNodeStateMachineTransition_pc6pe"), "reveal_pause_menu", "hide_pause_menu", SubResource("AnimationNodeStateMachineTransition_dx61n"), "hide_pause_menu", "start_game", SubResource("AnimationNodeStateMachineTransition_lp1dx"), "hide_pause_menu", "init", SubResource("AnimationNodeStateMachineTransition_mqlnh")]
graph_offset = Vector2(-306.25, -187.73401) graph_offset = Vector2(90.75, -158.73401)
[sub_resource type="Shader" id="Shader_cegan"] [sub_resource type="Shader" id="Shader_cegan"]
code = "shader_type canvas_item; code = "shader_type canvas_item;
@ -1235,16 +1236,23 @@ script = ExtResource("18_d13ii")
resource_local_to_scene = true resource_local_to_scene = true
script = ExtResource("19_1u8w0") script = ExtResource("19_1u8w0")
[node name="main" type="Node3D"] [node name="main" type="Control"]
process_mode = 3 process_mode = 3
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_rqkns") script = ExtResource("1_rqkns")
youth_room_path = "res://base-environments/youth_room/youth_room.tscn" youth_room_path = "uid://b3b0gyvklqn50"
transition_room_path = "uid://fgp3s28h7msy" transition_room_path = "uid://fgp3s28h7msy"
adulthood_room_path = "uid://flisupth27th" adulthood_room_path = "uid://flisupth27th"
[node name="Panel" type="Panel" parent="."] [node name="Background" type="Panel" parent="."]
visible = false visible = false
modulate = Color(0, 0, 0, 1) modulate = Color(0, 0, 0, 1)
layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
@ -1252,59 +1260,60 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
mouse_filter = 2 mouse_filter = 2
[node name="Main Menu" parent="." instance=ExtResource("3_ik73t")] [node name="MainMenu" parent="." instance=ExtResource("3_ik73t")]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 1
[node name="FPSLabel" type="Label" parent="."] [node name="FPSLabel" type="Label" parent="."]
visible = false visible = false
layout_mode = 0
offset_right = 40.0 offset_right = 40.0
offset_bottom = 35.0 offset_bottom = 35.0
script = SubResource("GDScript_8sq0u") script = SubResource("GDScript_8sq0u")
[node name="Startup Menu" parent="." instance=ExtResource("1_v5rpm")] [node name="Startup Menu" parent="." instance=ExtResource("1_v5rpm")]
visible = false visible = false
layout_mode = 1
[node name="Disclaimer" parent="." instance=ExtResource("7_t45fc")] [node name="Disclaimer" parent="." instance=ExtResource("7_t45fc")]
visible = false visible = false
layout_mode = 1
[node name="Control" type="Control" parent="."] [node name="Loading" type="Control" parent="."]
layout_mode = 3 layout_mode = 1
anchors_preset = 2 anchors_preset = 2
anchor_top = 1.0 anchor_top = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
offset_top = -40.0
offset_right = 40.0
grow_vertical = 0 grow_vertical = 0
[node name="mask" type="Sprite2D" parent="Control"] [node name="mask" type="Sprite2D" parent="Loading"]
modulate = Color(1, 1, 1, 0) modulate = Color(1, 1, 1, 0)
clip_children = 1 clip_children = 1
position = Vector2(98, -47) position = Vector2(98, -47)
rotation = 1.5708 rotation = 1.5708
texture = ExtResource("5_sr555") texture = ExtResource("5_sr555")
[node name="frame" type="Sprite2D" parent="Control/mask"] [node name="frame" type="Sprite2D" parent="Loading/mask"]
clip_children = 1
texture = ExtResource("6_aaaxa") texture = ExtResource("6_aaaxa")
[node name="deco" type="Sprite2D" parent="Control/mask/frame"] [node name="deco" type="Sprite2D" parent="Loading/mask/frame"]
modulate = Color(1, 1, 1, 0) modulate = Color(1, 1, 1, 0)
rotation = -0.314159 rotation = -0.314159
texture = ExtResource("7_koraw") texture = ExtResource("7_koraw")
[node name="LoadingLabel" type="Label" parent="Control"] [node name="LoadingLabel" type="Label" parent="Loading"]
visible = false visible = false
layout_mode = 0 layout_mode = 0
offset_left = 100.0 offset_left = 100.0
offset_top = -37.0 offset_top = -37.0
offset_right = 239.99973 offset_right = 239.99982
offset_bottom = 9.0 offset_bottom = 9.0
text = "loading" text = "loading"
script = SubResource("GDScript_cegan") script = SubResource("GDScript_cegan")
[node name="MenuAnimationPlayer" type="AnimationPlayer" parent="."] [node name="MenuAnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
root_node = NodePath("../Control/mask") root_node = NodePath("../Loading/mask")
libraries = { libraries = {
&"": SubResource("AnimationLibrary_ogbs1") &"": SubResource("AnimationLibrary_ogbs1")
} }
@ -1312,7 +1321,7 @@ autoplay = "init"
[node name="MenuAnimationTree" type="AnimationTree" parent="MenuAnimationPlayer"] [node name="MenuAnimationTree" type="AnimationTree" parent="MenuAnimationPlayer"]
unique_name_in_owner = true unique_name_in_owner = true
root_node = NodePath("%MenuAnimationPlayer/../Control/mask") root_node = NodePath("%MenuAnimationPlayer/../Loading/mask")
tree_root = SubResource("AnimationNodeStateMachine_uwcb5") tree_root = SubResource("AnimationNodeStateMachine_uwcb5")
anim_player = NodePath("..") anim_player = NodePath("..")
parameters/conditions/load_save = false parameters/conditions/load_save = false
@ -1326,6 +1335,7 @@ bus = &"music"
[node name="PauseContainer" type="CenterContainer" parent="."] [node name="PauseContainer" type="CenterContainer" parent="."]
visible = false visible = false
layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
@ -1398,16 +1408,31 @@ visible = false
layout_mode = 2 layout_mode = 2
text = "Skip this Story" text = "Skip this Story"
[node name="CreditsRoll" type="RichTextLabel" parent="."] [node name="CreditsRoll" type="VBoxContainer" parent="."]
visible = false visible = false
modulate = Color(1, 1, 1, 0) modulate = Color(1, 1, 1, 0)
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 220.0 offset_top = 220.0
offset_right = 1926.0 offset_bottom = 3476.0
offset_bottom = 5260.0 grow_horizontal = 2
grow_vertical = 2
alignment = 2
[node name="Logo" type="TextureRect" parent="CreditsRoll"]
custom_minimum_size = Vector2(512, 512)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("9_tqjky")
expand_mode = 1
[node name="Markdown" type="RichTextLabel" parent="CreditsRoll"]
layout_mode = 2
bbcode_enabled = true bbcode_enabled = true
text = "[center] text = "[center]
[img=512]res://logic-scenes/main menu/logo.png[/img]
[img][/img]
[font_size=34]is[/font_size] [font_size=34]is[/font_size]
[font_size=45]made by betalars[/font_size] [font_size=45]made by betalars[/font_size]
@ -1524,8 +1549,6 @@ Maxi, iFire
fit_content = true fit_content = true
script = ExtResource("12_074og") script = ExtResource("12_074og")
markdown_text = "[center] markdown_text = "[center]
[img=512]res://logic-scenes/main menu/logo.png[/img]
![This is an image]()
## is ## is
#made by betalars #made by betalars

File diff suppressed because it is too large Load Diff

View File

@ -58,7 +58,7 @@ func continue_sequence(former_actor: Object):
current_sequence_index += 1 current_sequence_index += 1
State.stage_list[0] = sequence_actors[current_sequence][current_sequence_index].get_object() State.stage_list[0] = sequence_actors[current_sequence][current_sequence_index].get_object()
print(sequence_actors[current_sequence][current_sequence_index].get_object().name) print_debug(sequence_actors[current_sequence][current_sequence_index].get_object().name)
State.stage_list[0].has_stage = true State.stage_list[0].has_stage = true

View File

@ -1,4 +1,5 @@
extends VBoxContainer extends VBoxContainer
class_name AccessibilitySettings
signal changed signal changed
signal leave_stage signal leave_stage

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=5 format=3 uid="uid://b3wlecqvelh22"] [gd_scene load_steps=5 format=3 uid="uid://b3wlecqvelh22"]
[ext_resource type="Script" uid="uid://cbax2lv4pstqk" path="res://logic-scenes/main menu/acessability_settings.gd" id="1_x3lym"] [ext_resource type="Script" uid="uid://cbax2lv4pstqk" path="res://ui/menu_main/accessibility_settings.gd" id="1_x3lym"]
[ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="2_24dtk"] [ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="2_24dtk"]
[sub_resource type="GDScript" id="GDScript_v567h"] [sub_resource type="GDScript" id="GDScript_v567h"]
@ -19,6 +19,7 @@ func _ready() -> void:
[node name="Accessibility" type="VBoxContainer"] [node name="Accessibility" type="VBoxContainer"]
script = ExtResource("1_x3lym") script = ExtResource("1_x3lym")
is_in_beginning = null
metadata/_tab_index = 0 metadata/_tab_index = 0
[node name="Label" type="Label" parent="."] [node name="Label" type="Label" parent="."]

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=9 format=3 uid="uid://dfhkfocy8axb8"] [gd_scene load_steps=9 format=3 uid="uid://dfhkfocy8axb8"]
[ext_resource type="Script" uid="uid://b2redm7dwpcne" path="res://logic-scenes/main menu/audio_settings.gd" id="1_0lla1"] [ext_resource type="Script" uid="uid://b2redm7dwpcne" path="res://ui/menu_main/audio_settings.gd" id="1_0lla1"]
[ext_resource type="AudioStream" uid="uid://cl74a68tjwinh" path="res://base-environments/youth_room/audio/Youth Loop.wav" id="2_01rsa"] [ext_resource type="AudioStream" uid="uid://cl74a68tjwinh" path="res://base-environments/youth_room/audio/Youth Loop.wav" id="2_01rsa"]
[sub_resource type="Animation" id="Animation_lax27"] [sub_resource type="Animation" id="Animation_lax27"]

Some files were not shown because too many files have changed in this diff Show More