Compare commits

..

No commits in common. "845fc1d84d33f9661c63b7b1f59bcdea7fd79ccc" and "7d299c8ddf6fdeb6709c097625c9749bec284da5" have entirely different histories.

125 changed files with 2512 additions and 2646 deletions

View File

@ -1,6 +0,0 @@
<?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.task_checkbox_clicked.connect(
func(id: int, line: int, checked: bool, text: String) -> void:
print_debug("%s task #%d on line %d: %s" % ["Checked" if checked else "Unchecked", id, line, text])
print("%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:
if not _debug_mode:
return
print_debug(string)
print(string)
func _denotes_fenced_code_block(line: String, character: String) -> bool:
var stripped_line := line.strip_edges()

View File

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

View File

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

View File

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

View File

@ -4,7 +4,7 @@
[ext_resource type="FontFile" uid="uid://bdkb43smt08c0" path="res://import/fonts/Ubuntu-B.ttf" id="2_q6nhe"]
[sub_resource type="GDScript" id="GDScript_80ahk"]
script/source = "
script/source = "@tool
extends Node2D
@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))
func start_room():
save_game = State.save_game
save_game = State.active_save_game
State.pass_stage_to(%PlayerController)
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"]
[sub_resource type="GDScript" id="GDScript_6pwip"]
script/source = "
script/source = "@tool
extends Node3D
@export var door_open: bool:

View File

@ -958,14 +958,23 @@ viewport_path = NodePath("Displays/Train_Display_R")
[sub_resource type="ViewportTexture" id="ViewportTexture_csq32"]
viewport_path = NodePath("Displays/Train_Display_L")
[sub_resource type="Animation" id="Animation_o0t2h"]
resource_name = "dnd_to_uni"
[sub_resource type="Animation" id="Animation_symoa"]
resource_name = "init"
[sub_resource type="Animation" id="Animation_820wi"]
resource_name = "volunteer_exit"
[sub_resource type="Animation" id="Animation_e75no"]
resource_name = "dnd_to_volunteer"
[sub_resource type="Animation" id="Animation_symoa"]
resource_name = "init"
[sub_resource type="Animation" id="Animation_c3uo7"]
resource_name = "volunteer_to_uni"
[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"]
resource_name = "uni_to_burnout"
@ -976,15 +985,6 @@ resource_name = "uni_to_therapy"
[sub_resource type="Animation" id="Animation_dm3ia"]
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"]
_data = {
&"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)
[node name="MeshInstance3D8" type="MeshInstance3D" parent="Train/Visuals/Train"]
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)
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)
visible = false
material_override = SubResource("ShaderMaterial_0vobo")
mesh = SubResource("QuadMesh_ppxbm")
@ -1391,7 +1391,6 @@ unique_name_in_owner = true
[node name="Displays" type="Node3D" parent="."]
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"]
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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="6_h63aa"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]

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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_iufku"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]

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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_w4vem"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]

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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_62vlf"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]

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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_pf7gl"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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="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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_32a0r"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]

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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_05o76"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]

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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_apcmj"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]

View File

@ -7,7 +7,7 @@ signal ini_room
@onready var player: Player = %PlayerController
func start_room():
save_game = State.save_game
save_game = State.active_save_game
save_game.current_room = State.rooms.ADULTHOOD
Scenes.completed_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://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="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/textures/sky_textures_2.png" id="23_my8p4"]
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/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"]
[sub_resource type="BoxMesh" id="BoxMesh_tmbwx"]
size = Vector3(1, 2.778, 1.353)
@ -196,7 +196,7 @@ func scene_finished(id: Scenes.id, _repeat: bool):
queue(\"RESET\")
func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void:
print_debug(\"anim player accessed!\")
print(\"anim player accessed!\")
super.play(anin_name, a, b, c)
func on_autism_done():
@ -816,36 +816,20 @@ libraries = {
script = SubResource("GDScript_sg0pj")
[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")]
story_array = []
paragraph_lengths = [1]
[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")]
story_array = []
paragraph_lengths = [1]
[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")]
story_array = []
paragraph_lengths = [1]
[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")]
story_array = []
paragraph_lengths = [1]
[node name="UI" type="Control" parent="."]
layout_mode = 3

View File

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

View File

@ -5,7 +5,7 @@ func ready():
body_exited.connect(notify_player_exit)
func notify_player_entry(body: RigidBody3D):
print_debug("Player entered Crouch area.")
print("Player entered Crouch area.")
if body is Player:
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"]
[sub_resource type="GDScript" id="GDScript_2caij"]
script/source = "
script/source = "@tool
extends Node3D
@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"]
[sub_resource type="GDScript" id="GDScript_bfd5g"]
script/source = "
script/source = "@tool
extends Node3D
@export var light_energy:float = 0:

View File

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

View File

@ -0,0 +1 @@
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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_q0fee"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]

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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="5_ddnfo"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]

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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="5_0qiyf"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]
@ -821,6 +821,8 @@ offset_right = -424.0
grow_horizontal = 2
grow_vertical = 2
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
[node name="PanelContainer" type="PanelContainer" parent="."]

View File

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

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="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="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="15_n6nrr"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/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://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"]
@ -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="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="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/textures/sky_textures_2.png" id="34_g2brt"]
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/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="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="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="37_3deyi"]

View File

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

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=136 format=4 uid="uid://b3b0gyvklqn50"]
[gd_scene load_steps=137 format=4 uid="uid://b3b0gyvklqn50"]
[ext_resource type="Script" uid="uid://bsop46tqngddc" path="res://base-environments/youth_room/youth_room.gd" id="1_aitp0"]
[ext_resource type="Script" uid="uid://belkrno67sft0" path="res://base-environments/youth_room/room_handle.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="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="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"]
@ -37,9 +38,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://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="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro/shaders/stars.gdshader" id="32_k5rvd"]
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/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="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro/textures/sky_textures_2.png" id="33_mvrs2"]
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/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="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"]
@ -974,7 +975,7 @@ func scene_finished(id: Scenes.id, _repeat: bool):
queue(\"RESET\")
func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void:
print_debug(\"anim player accessed!\")
print(\"anim player accessed!\")
super.play(anin_name, a, b, c)
"
@ -1735,7 +1736,7 @@ func _ready():
camera = get_tree().root.get_viewport().get_camera_3d()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta):
func _process(delta):
self.global_transform = camera.global_transform
"
@ -1757,6 +1758,7 @@ func hide():
[node name="youth room" type="Node3D" groups=["serializable"]]
process_mode = 1
script = ExtResource("1_aitp0")
save_game = ExtResource("2_h6j14")
[node name="logic" type="Node3D" parent="."]
@ -2037,8 +2039,6 @@ volume_db = -80.0
bus = &"music"
[node name="childhood" parent="logic/ScenePlayer" instance=ExtResource("12_viwxf")]
story_array = []
paragraph_lengths = [1]
[node name="VoiceTraining" type="AudioStreamPlayer" parent="logic/ScenePlayer"]
stream = ExtResource("10_wwwdq")
@ -2048,15 +2048,11 @@ bus = &"music"
[node name="JuiJutsu" parent="logic/ScenePlayer" instance=ExtResource("12_x3dlb")]
[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"]
bus = &"music"
[node name="draven" parent="logic/ScenePlayer" instance=ExtResource("19_d3c7p")]
story_array = []
paragraph_lengths = [1]
[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)

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"]
[sub_resource type="GDScript" id="GDScript_w4p0y"]
script/source = "
script/source = "@tool
extends Node3D
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:
if not Engine.is_editor_hint():

View File

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

View File

@ -1 +0,0 @@


View File

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

View File

@ -0,0 +1,731 @@
[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"]

787
src/demo-main.tscn Normal file
View File

@ -0,0 +1,787 @@
[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"]

181
src/demo-warning.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -0,0 +1,43 @@
[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()
_last_beat_timing = sync_to.get_playback_position()
else:
if not Engine.is_editor_hint(): print_debug(time_left)
if not Engine.is_editor_hint(): print(time_left)
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

View File

@ -26,4 +26,4 @@ func create_bug_report():
DisplayServer.clipboard_set(debug_text)
#print_debug("mailto:support@polynormal.games?subject=Frame%20of%20Mind%20Demo%20-%20Bug%20Report&body=" + debug_text)
#print("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)
[sub_resource type="GDScript" id="GDScript_2ph0d"]
script/source = "
script/source = "@tool
extends Sprite2D
var flame_progression: float = 0

View File

@ -16,7 +16,7 @@ func _process(_delta):
func _input(event: InputEvent) -> void:
if event is InputEventAction:
print_debug(event.action)
print(event.action)
#func _unhandled_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)
func _on_button_pressed():
print_debug("Button pressed")
print("Button pressed")
func _on_line_edit_text_submitted(new_text):
print_debug("Text submitted: ", new_text)
print("Text submitted: ", new_text)

View File

@ -118,22 +118,22 @@ static func get_obscure_name(card_name: StringName):
else:
return card_name
func arrange(cards: Array[Card], rect: Rect2, _obstacles: Array[Area2D]) -> Array[Card]:
#var total_cards := cards.size()
func arrange(cards: Array[Card], rect: Rect2, obstacles: Array[Area2D]) -> Array[Card]:
var total_cards = cards.size()
var x:int = 0
var y:int = 0
var i:int = 0
var maximum:int = cards.size()
var grid: int = ceil(sqrt(maximum))
var max:int = cards.size()
var grid: int = ceil(sqrt(max))
var diameter:float = cards[0].diameter
var r_cards: Array[Card] = cards.duplicate()
r_cards.shuffle()
while i < maximum:
while x < grid and i < maximum:
while y < ceil(sqrt(maximum)) and i < maximum:
while i < max:
while x < grid and i < max:
while y < ceil(sqrt(max)) and i < max:
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
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:
var parsed: PackedStringArray = id.rsplit(".")
#var helper := card_id_reference
#var keys := card_id_reference.keys()
var helper = card_id_reference
var keys = card_id_reference.keys()
if card_id_reference.values().has(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!")
return null
static func create_dev_board(parent: Control, _rect: Rect2) -> void:
var scroll_container := ScrollContainer.new()
var panel := Panel.new()
static func create_dev_board(parent: Control, rect: Rect2) -> void:
var scroll_container = ScrollContainer.new()
var panel = Panel.new()
parent.add_child(scroll_container)
scroll_container.add_child(panel)
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)
panel.add_child(sub_parent, false, Node.INTERNAL_MODE_BACK)
var y := 1
var y = 1
for card_name in source_dicts[x].keys():
var card:Card = create_from_id(card_id_reference[card_name])
sub_parent.add_child(card, false, Node.INTERNAL_MODE_BACK)
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):
var sticky: StickyNote = create_from_id(sticky_id_reference[sticky_name])
card.add_child(sticky, false, Node.INTERNAL_MODE_BACK)

View File

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

View File

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

View File

@ -1,7 +1,7 @@
class_name RoomTemplate extends Node3D
var initialised: bool = false
var id: State.rooms = State.rooms.NULL
var id: State.rooms
var has_stage: bool:
set(value):
@ -10,31 +10,12 @@ var has_stage: bool:
start_room()
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
@export var save_game:SaveGame = null
func start_room():
pass
func pull_save_state(_save: SaveGame) -> void:
func pull_save_state(save: SaveGame) -> void:
pass
func save_room():

View File

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

View File

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

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=12 format=3 uid="uid://d0qqluenght6a"]
[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/textures/sky_textures_2.png" id="2_qoi7m"]
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/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"]
[sub_resource type="Gradient" id="Gradient_d5lk6"]
interpolation_mode = 2

View File

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

View File

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

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://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://cxton1pffwxk4" path="res://code/button_themer.gd" id="9_pl7dp"]
[ext_resource type="Script" uid="uid://cxton1pffwxk4" path="res://button_themer.gd" id="9_pl7dp"]
[sub_resource type="GDScript" id="GDScript_nkjm2"]
script/source = "extends Panel

View File

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

View File

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

View File

@ -1,3 +1,4 @@
@tool
class_name StickyNotePanel
extends Panel
@ -18,7 +19,7 @@ func _ready():
custom_minimum_size = Vector2(custom_minimum_size.x, 0)
var is_attatching: bool = false
func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool = true, re_parent:bool = true):
func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool = true, reparent:bool = true):
is_attatching = true
attatchment.on_board = false
attached_sticky_note = attatchment
@ -27,7 +28,7 @@ func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool
await get_tree().process_frame
var height_tween: Tween = create_tween()
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():
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)
@ -38,7 +39,7 @@ func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool
attatchment.position = ancor_position
else:
custom_minimum_size = minimum_size
if re_parent:
if reparent:
attatchment.reparent(self)
else:
add_child(attatchment)

View File

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

View File

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

View File

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

View File

@ -1,6 +0,0 @@
[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)
func burn_cards(_id):
var random_card_names: Array = State.save_game.board_state["randoms"]
var random_card_names: Array = State.active_save_game.board_state["randoms"]
for card_name in random_card_names:
if card_name.begins_with("p"):

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=9 format=3 uid="uid://dfhkfocy8axb8"]
[ext_resource type="Script" uid="uid://b2redm7dwpcne" path="res://ui/menu_main/audio_settings.gd" id="1_0lla1"]
[ext_resource type="Script" uid="uid://b2redm7dwpcne" path="res://logic-scenes/main menu/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"]
[sub_resource type="Animation" id="Animation_lax27"]

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=22 format=3 uid="uid://chal0ioagspx0"]
[ext_resource type="Script" uid="uid://wybb38po3pbo" path="res://ui/menu_main/content_settings.gd" id="1_wnuvg"]
[ext_resource type="Script" uid="uid://wybb38po3pbo" path="res://logic-scenes/main menu/content_settings.gd" id="1_wnuvg"]
[ext_resource type="Script" uid="uid://dbap0gqox0ty1" path="res://addons/markdownlabel/markdownlabel.gd" id="2_b7ja7"]
[ext_resource type="Script" uid="uid://dcx7crs23nf4" path="res://addons/markdownlabel/header_formats/h1_format.gd" id="3_00t14"]
[ext_resource type="Script" uid="uid://d0sin64i4v3op" path="res://addons/markdownlabel/header_formats/h2_format.gd" id="4_336xo"]

View File

@ -32,7 +32,6 @@ func update_ui_from_state():
y_switch_gamepad.button_pressed = State.inverty_y_axis
input_sensitivity_slider.value = State.input_sensitivity
stream_overlay_picker.select(State.stream_overlay_position)
changed.emit()
func _on_exit_button_pressed() -> void:
leave_stage.emit()

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://dxwqkxq6qjk7i"]
[ext_resource type="Script" uid="uid://bsnktd8qk5fl7" path="res://ui/menu_main/gameplay_settings.gd" id="1_aurh1"]
[ext_resource type="Script" uid="uid://bsnktd8qk5fl7" path="res://logic-scenes/main menu/gameplay_settings.gd" id="1_aurh1"]
[sub_resource type="InputEventAction" id="InputEventAction_gy6yb"]
action = &"ui_cancel"

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://d3ewjumh0b0g6"
path="res://.godot/imported/logo.png-60c22783798a3cd4fe9bcc3ba1860498.ctex"
path="res://.godot/imported/logo.png-2a2bb67beae729051be0dd4ef4434919.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ui/menu_main/logo.png"
dest_files=["res://.godot/imported/logo.png-60c22783798a3cd4fe9bcc3ba1860498.ctex"]
source_file="res://logic-scenes/main menu/logo.png"
dest_files=["res://.godot/imported/logo.png-2a2bb67beae729051be0dd4ef4434919.ctex"]
[params]

View File

@ -0,0 +1,62 @@
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

@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://u0bwjr5l6nkh"]
[ext_resource type="Script" uid="uid://vhppt23pmi6w" path="res://ui/menu_main/privacy_settings.gd" id="1_evre2"]
[ext_resource type="Script" uid="uid://vhppt23pmi6w" path="res://logic-scenes/main menu/privacy_settings.gd" id="1_evre2"]
[sub_resource type="InputEventAction" id="InputEventAction_gy6yb"]
action = &"ui_cancel"

View File

@ -1,3 +1,4 @@
@tool
class_name SaveGameDisplay extends Button
var _is_built: bool = false

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