Compare commits
23 Commits
7d299c8ddf
...
845fc1d84d
| Author | SHA1 | Date |
|---|---|---|
|
|
845fc1d84d | |
|
|
454839f20a | |
|
|
38a5a49e67 | |
|
|
8fad1b60df | |
|
|
0072490f8b | |
|
|
fb9c6d034c | |
|
|
16414da77e | |
|
|
30a38c9eb2 | |
|
|
59356c6b9d | |
|
|
aefc236baa | |
|
|
ffe4f4461c | |
|
|
f8293f6974 | |
|
|
5f610241e0 | |
|
|
21bb98db8d | |
|
|
3e030e2b85 | |
|
|
ec38d8edef | |
|
|
59497838fe | |
|
|
b676f4500b | |
|
|
8d911e3911 | |
|
|
6982d32169 | |
|
|
515462b631 | |
|
|
842813ddb4 | |
|
|
796878b0ab |
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="GdProjectSettingsState">
|
||||||
|
<annotators>warn</annotators>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
|
@ -5,5 +5,5 @@ func _ready() -> void:
|
||||||
$MarkdownLabel.display_file("res://addons/markdownlabel/README.md")
|
$MarkdownLabel.display_file("res://addons/markdownlabel/README.md")
|
||||||
$MarkdownLabel.task_checkbox_clicked.connect(
|
$MarkdownLabel.task_checkbox_clicked.connect(
|
||||||
func(id: int, line: int, checked: bool, text: String) -> void:
|
func(id: int, line: int, checked: bool, text: String) -> void:
|
||||||
print("%s task #%d on line %d: %s" % ["Checked" if checked else "Unchecked", id, line, text])
|
print_debug("%s task #%d on line %d: %s" % ["Checked" if checked else "Unchecked", id, line, text])
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -640,7 +640,7 @@ func _reset_escaped_chars(_text: String,code:=false) -> String:
|
||||||
func _debug(string: String) -> void:
|
func _debug(string: String) -> void:
|
||||||
if not _debug_mode:
|
if not _debug_mode:
|
||||||
return
|
return
|
||||||
print(string)
|
print_debug(string)
|
||||||
|
|
||||||
func _denotes_fenced_code_block(line: String, character: String) -> bool:
|
func _denotes_fenced_code_block(line: String, character: String) -> bool:
|
||||||
var stripped_line := line.strip_edges()
|
var stripped_line := line.strip_edges()
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,15 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://cfwa5dq3flk4b"
|
uid="uid://cfwa5dq3flk4b"
|
||||||
path="res://.godot/imported/sky_textures.png-1bc387632f79299cfe768a08f95b36df.ctex"
|
path="res://.godot/imported/sky_textures.png-1ba6043dcaf28986e3e05f5171fee2b4.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://base-environments/intro_scene/textures/sky_textures.png"
|
source_file="res://base-environments/intro/textures/sky_textures.png"
|
||||||
dest_files=["res://.godot/imported/sky_textures.png-1bc387632f79299cfe768a08f95b36df.ctex"]
|
dest_files=["res://.godot/imported/sky_textures.png-1ba6043dcaf28986e3e05f5171fee2b4.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
|
@ -3,15 +3,15 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://dabnlcnuticww"
|
uid="uid://dabnlcnuticww"
|
||||||
path="res://.godot/imported/sky_textures_2.png-a1913291aa98549785b8c12dd6aa67b9.ctex"
|
path="res://.godot/imported/sky_textures_2.png-79f9797d0c2a05f0a7e04941a93a9158.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://base-environments/intro_scene/textures/sky_textures_2.png"
|
source_file="res://base-environments/intro/textures/sky_textures_2.png"
|
||||||
dest_files=["res://.godot/imported/sky_textures_2.png-a1913291aa98549785b8c12dd6aa67b9.ctex"]
|
dest_files=["res://.godot/imported/sky_textures_2.png-79f9797d0c2a05f0a7e04941a93a9158.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
|
@ -3,15 +3,15 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://bblv1y6l4re8y"
|
uid="uid://bblv1y6l4re8y"
|
||||||
path="res://.godot/imported/star.png-8963d4096c36d0531880a451c851e16d.ctex"
|
path="res://.godot/imported/star.png-a94df91fbef396160044c05bed745e1c.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://base-environments/intro_scene/textures/star.png"
|
source_file="res://base-environments/intro/textures/star.png"
|
||||||
dest_files=["res://.godot/imported/star.png-8963d4096c36d0531880a451c851e16d.ctex"]
|
dest_files=["res://.godot/imported/star.png-a94df91fbef396160044c05bed745e1c.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
[ext_resource type="FontFile" uid="uid://bdkb43smt08c0" path="res://import/fonts/Ubuntu-B.ttf" id="2_q6nhe"]
|
[ext_resource type="FontFile" uid="uid://bdkb43smt08c0" path="res://import/fonts/Ubuntu-B.ttf" id="2_q6nhe"]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_80ahk"]
|
[sub_resource type="GDScript" id="GDScript_80ahk"]
|
||||||
script/source = "@tool
|
script/source = "
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
@export var current_station: Scenes.id = Scenes.id.ADULT_DND:
|
@export var current_station: Scenes.id = Scenes.id.ADULT_DND:
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ func _ready() -> void:
|
||||||
get_parent().load_save(save_game))
|
get_parent().load_save(save_game))
|
||||||
|
|
||||||
func start_room():
|
func start_room():
|
||||||
save_game = State.active_save_game
|
save_game = State.save_game
|
||||||
State.pass_stage_to(%PlayerController)
|
State.pass_stage_to(%PlayerController)
|
||||||
on_first_station()
|
on_first_station()
|
||||||
|
|
||||||
|
|
@ -48,7 +48,7 @@ func pull_save_state(save: SaveGame) -> void:
|
||||||
save.sequences_enabled = Scenes.enabled_sequences
|
save.sequences_enabled = Scenes.enabled_sequences
|
||||||
save.current_room = State.rooms.ADULTHOOD
|
save.current_room = State.rooms.ADULTHOOD
|
||||||
save_game = save
|
save_game = save
|
||||||
|
|
||||||
func prepare_transition():
|
func prepare_transition():
|
||||||
for child in %Stations.get_children():
|
for child in %Stations.get_children():
|
||||||
if child is Node3D:
|
if child is Node3D:
|
||||||
|
|
@ -73,7 +73,7 @@ func on_left_train_enter(_body):
|
||||||
%SubwayMap.current_station = Scenes.id.ADULT_CHRISTMAS
|
%SubwayMap.current_station = Scenes.id.ADULT_CHRISTMAS
|
||||||
await get_tree().create_timer(5.0).timeout
|
await get_tree().create_timer(5.0).timeout
|
||||||
%Train2.get_child(0).door_open = true
|
%Train2.get_child(0).door_open = true
|
||||||
|
|
||||||
await get_tree().create_timer(5.0).timeout
|
await get_tree().create_timer(5.0).timeout
|
||||||
if not changeover:
|
if not changeover:
|
||||||
%Train2.get_child(0).door_open = false
|
%Train2.get_child(0).door_open = false
|
||||||
|
|
@ -127,9 +127,9 @@ func on_right_train_enter(_body):
|
||||||
%SubwayMap.current_station = Scenes.id.ADULT_UNI
|
%SubwayMap.current_station = Scenes.id.ADULT_UNI
|
||||||
await get_tree().create_timer(5.0).timeout
|
await get_tree().create_timer(5.0).timeout
|
||||||
%Train.get_child(0).door_open = true
|
%Train.get_child(0).door_open = true
|
||||||
|
|
||||||
await get_tree().create_timer(5.0).timeout
|
await get_tree().create_timer(5.0).timeout
|
||||||
|
|
||||||
if not changeover:
|
if not changeover:
|
||||||
%Train.get_child(0).door_open = false
|
%Train.get_child(0).door_open = false
|
||||||
on_second_transition()
|
on_second_transition()
|
||||||
|
|
@ -164,7 +164,7 @@ func on_left_train_exit(_body):
|
||||||
if on_second_platform and not on_final:
|
if on_second_platform and not on_final:
|
||||||
changeover = true
|
changeover = true
|
||||||
%ShedulePlayer_R.play("train_arriving")
|
%ShedulePlayer_R.play("train_arriving")
|
||||||
|
|
||||||
func on_right_train_exit(_body):
|
func on_right_train_exit(_body):
|
||||||
if on_second_platform and not on_final:
|
if on_second_platform and not on_final:
|
||||||
changeover = true
|
changeover = true
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
[ext_resource type="Texture2D" uid="uid://bewykr0twbplg" path="res://base-environments/transition/import/textures/LateralTren_baseColor_upscayl_2x_realesrgan-x4plus-anime.png" id="5_6pwip"]
|
[ext_resource type="Texture2D" uid="uid://bewykr0twbplg" path="res://base-environments/transition/import/textures/LateralTren_baseColor_upscayl_2x_realesrgan-x4plus-anime.png" id="5_6pwip"]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_6pwip"]
|
[sub_resource type="GDScript" id="GDScript_6pwip"]
|
||||||
script/source = "@tool
|
script/source = "
|
||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
@export var door_open: bool:
|
@export var door_open: bool:
|
||||||
|
|
|
||||||
|
|
@ -958,23 +958,14 @@ viewport_path = NodePath("Displays/Train_Display_R")
|
||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_csq32"]
|
[sub_resource type="ViewportTexture" id="ViewportTexture_csq32"]
|
||||||
viewport_path = NodePath("Displays/Train_Display_L")
|
viewport_path = NodePath("Displays/Train_Display_L")
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_symoa"]
|
[sub_resource type="Animation" id="Animation_o0t2h"]
|
||||||
resource_name = "init"
|
resource_name = "dnd_to_uni"
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_820wi"]
|
|
||||||
resource_name = "volunteer_exit"
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_e75no"]
|
[sub_resource type="Animation" id="Animation_e75no"]
|
||||||
resource_name = "dnd_to_volunteer"
|
resource_name = "dnd_to_volunteer"
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_c3uo7"]
|
[sub_resource type="Animation" id="Animation_symoa"]
|
||||||
resource_name = "volunteer_to_uni"
|
resource_name = "init"
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_r7fs3"]
|
|
||||||
resource_name = "volunteer_to_therapy"
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_o0t2h"]
|
|
||||||
resource_name = "dnd_to_uni"
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_jleua"]
|
[sub_resource type="Animation" id="Animation_jleua"]
|
||||||
resource_name = "uni_to_burnout"
|
resource_name = "uni_to_burnout"
|
||||||
|
|
@ -985,6 +976,15 @@ resource_name = "uni_to_therapy"
|
||||||
[sub_resource type="Animation" id="Animation_dm3ia"]
|
[sub_resource type="Animation" id="Animation_dm3ia"]
|
||||||
resource_name = "uni_to_volunteer"
|
resource_name = "uni_to_volunteer"
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_820wi"]
|
||||||
|
resource_name = "volunteer_exit"
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_r7fs3"]
|
||||||
|
resource_name = "volunteer_to_therapy"
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_c3uo7"]
|
||||||
|
resource_name = "volunteer_to_uni"
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_xcyoy"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_xcyoy"]
|
||||||
_data = {
|
_data = {
|
||||||
&"dnd_to_uni": SubResource("Animation_o0t2h"),
|
&"dnd_to_uni": SubResource("Animation_o0t2h"),
|
||||||
|
|
@ -1058,7 +1058,7 @@ transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 6.24
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7804413, 0, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7804413, 0, 0)
|
||||||
|
|
||||||
[node name="MeshInstance3D8" type="MeshInstance3D" parent="Train/Visuals/Train"]
|
[node name="MeshInstance3D8" type="MeshInstance3D" parent="Train/Visuals/Train"]
|
||||||
transform = Transform3D(-42.01, 4.075623e-07, 4.3401022e-07, -6.330816e-06, -2.8743172, -0.1808367, -5.9450385e-06, 0.1808367, -2.8743172, -3.9468384, 1.286, 2.488358)
|
transform = Transform3D(-42.01, 4.075623e-07, 4.340103e-07, -6.330816e-06, -2.8743172, -0.1808367, -5.9450394e-06, 0.1808367, -2.8743172, -3.9468384, 1.286, 2.488358)
|
||||||
visible = false
|
visible = false
|
||||||
material_override = SubResource("ShaderMaterial_0vobo")
|
material_override = SubResource("ShaderMaterial_0vobo")
|
||||||
mesh = SubResource("QuadMesh_ppxbm")
|
mesh = SubResource("QuadMesh_ppxbm")
|
||||||
|
|
@ -1391,6 +1391,7 @@ unique_name_in_owner = true
|
||||||
|
|
||||||
[node name="Displays" type="Node3D" parent="."]
|
[node name="Displays" type="Node3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.003971815, 9.536743e-07, 0.0078623295)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.003971815, 9.536743e-07, 0.0078623295)
|
||||||
|
visible = false
|
||||||
|
|
||||||
[node name="Train_Display_L" type="SubViewport" parent="Displays"]
|
[node name="Train_Display_L" type="SubViewport" parent="Displays"]
|
||||||
transparent_bg = true
|
transparent_bg = true
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_hmyim"]
|
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_hmyim"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_n54tc"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_n54tc"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="5_xi27m"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="5_xi27m"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="6_h63aa"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="6_h63aa"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="7_71rn2"]
|
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="7_71rn2"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="8_3ljef"]
|
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="8_3ljef"]
|
||||||
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="9_nvo2d"]
|
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="9_nvo2d"]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_280pk"]
|
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_280pk"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_ji3tv"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_ji3tv"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_iwhp8"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_iwhp8"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_iufku"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_iufku"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_4ni3m"]
|
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_4ni3m"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_eqxbt"]
|
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_eqxbt"]
|
||||||
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_pthbi"]
|
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_pthbi"]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_86ec2"]
|
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_86ec2"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_abtq0"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_abtq0"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_pcx8t"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_pcx8t"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_w4vem"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_w4vem"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_0dsyx"]
|
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_0dsyx"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_fiu8d"]
|
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_fiu8d"]
|
||||||
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_sh3ja"]
|
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_sh3ja"]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_8utmq"]
|
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_8utmq"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_gfeis"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_gfeis"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_u0xc1"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_u0xc1"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_62vlf"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_62vlf"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_6h2ud"]
|
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_6h2ud"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_44s4k"]
|
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_44s4k"]
|
||||||
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_rpv31"]
|
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_rpv31"]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_uxp36"]
|
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_uxp36"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_27dlw"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_27dlw"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_6qw45"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_6qw45"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_pf7gl"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_pf7gl"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_ecg2n"]
|
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_ecg2n"]
|
||||||
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_ld7n3"]
|
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_ld7n3"]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_ym0sv"]
|
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_ym0sv"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_00crh"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_00crh"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_3iy8l"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_3iy8l"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_32a0r"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_32a0r"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_bfggg"]
|
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_bfggg"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_hdxjv"]
|
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_hdxjv"]
|
||||||
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_xkdnh"]
|
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_xkdnh"]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_d3khy"]
|
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_d3khy"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_fe2un"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_fe2un"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_uj7tn"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_uj7tn"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_05o76"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_05o76"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_0b3yt"]
|
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_0b3yt"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_4fkwm"]
|
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_4fkwm"]
|
||||||
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_ede0y"]
|
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_ede0y"]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_1pvsj"]
|
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_1pvsj"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_5x2mw"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_5x2mw"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_xe0ue"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_xe0ue"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_apcmj"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_apcmj"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_aytqp"]
|
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_aytqp"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_l131v"]
|
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_l131v"]
|
||||||
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_rd1kp"]
|
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_rd1kp"]
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ signal ini_room
|
||||||
@onready var player: Player = %PlayerController
|
@onready var player: Player = %PlayerController
|
||||||
|
|
||||||
func start_room():
|
func start_room():
|
||||||
save_game = State.active_save_game
|
save_game = State.save_game
|
||||||
save_game.current_room = State.rooms.ADULTHOOD
|
save_game.current_room = State.rooms.ADULTHOOD
|
||||||
Scenes.completed_sequences = save_game.mementos_complete
|
Scenes.completed_sequences = save_game.mementos_complete
|
||||||
Scenes.started_sequences = save_game.mementos_complete
|
Scenes.started_sequences = save_game.mementos_complete
|
||||||
|
|
@ -23,9 +23,9 @@ func start_room():
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
id = State.rooms.ADULTHOOD
|
id = State.rooms.ADULTHOOD
|
||||||
|
|
||||||
Scenes.scene_finished.connect(_on_scene_finished)
|
Scenes.scene_finished.connect(_on_scene_finished)
|
||||||
|
|
||||||
card_picker.cards_picked.connect(card_board.populate_board)
|
card_picker.cards_picked.connect(card_board.populate_board)
|
||||||
|
|
||||||
func pull_save_state(save: SaveGame) -> void:
|
func pull_save_state(save: SaveGame) -> void:
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@
|
||||||
[ext_resource type="PackedScene" uid="uid://brk4hjdf2x81a" path="res://logic-scenes/card_picker/card_picker.tscn" id="18_upyac"]
|
[ext_resource type="PackedScene" uid="uid://brk4hjdf2x81a" path="res://logic-scenes/card_picker/card_picker.tscn" id="18_upyac"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bnskiyx1sksww" path="res://logic-scenes/board/physics-board.tscn" id="19_ci4rn"]
|
[ext_resource type="PackedScene" uid="uid://bnskiyx1sksww" path="res://logic-scenes/board/physics-board.tscn" id="19_ci4rn"]
|
||||||
[ext_resource type="PackedScene" uid="uid://citwb7f4dl3l1" path="res://thank-you.tscn" id="20_e1uao"]
|
[ext_resource type="PackedScene" uid="uid://citwb7f4dl3l1" path="res://thank-you.tscn" id="20_e1uao"]
|
||||||
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/shaders/stars.gdshader" id="22_e1uao"]
|
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro/shaders/stars.gdshader" id="22_e1uao"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/textures/sky_textures_2.png" id="23_my8p4"]
|
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro/textures/sky_textures_2.png" id="23_my8p4"]
|
||||||
|
|
||||||
[sub_resource type="BoxMesh" id="BoxMesh_tmbwx"]
|
[sub_resource type="BoxMesh" id="BoxMesh_tmbwx"]
|
||||||
size = Vector3(1, 2.778, 1.353)
|
size = Vector3(1, 2.778, 1.353)
|
||||||
|
|
@ -196,7 +196,7 @@ func scene_finished(id: Scenes.id, _repeat: bool):
|
||||||
queue(\"RESET\")
|
queue(\"RESET\")
|
||||||
|
|
||||||
func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void:
|
func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void:
|
||||||
print(\"anim player accessed!\")
|
print_debug(\"anim player accessed!\")
|
||||||
super.play(anin_name, a, b, c)
|
super.play(anin_name, a, b, c)
|
||||||
|
|
||||||
func on_autism_done():
|
func on_autism_done():
|
||||||
|
|
@ -816,20 +816,36 @@ libraries = {
|
||||||
script = SubResource("GDScript_sg0pj")
|
script = SubResource("GDScript_sg0pj")
|
||||||
|
|
||||||
[node name="autism" parent="Scenes/ScenePlayer" instance=ExtResource("10_gcdra")]
|
[node name="autism" parent="Scenes/ScenePlayer" instance=ExtResource("10_gcdra")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="burnout" parent="Scenes/ScenePlayer" instance=ExtResource("11_kmoh8")]
|
[node name="burnout" parent="Scenes/ScenePlayer" instance=ExtResource("11_kmoh8")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="university_eating" parent="Scenes/ScenePlayer" instance=ExtResource("12_6rb4d")]
|
[node name="university_eating" parent="Scenes/ScenePlayer" instance=ExtResource("12_6rb4d")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="university_advocacy" parent="Scenes/ScenePlayer" instance=ExtResource("13_5s6pb")]
|
[node name="university_advocacy" parent="Scenes/ScenePlayer" instance=ExtResource("13_5s6pb")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="therapy_uni" parent="Scenes/ScenePlayer" instance=ExtResource("14_upyac")]
|
[node name="therapy_uni" parent="Scenes/ScenePlayer" instance=ExtResource("14_upyac")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="therapy_volunteer" parent="Scenes/ScenePlayer" instance=ExtResource("15_ci4rn")]
|
[node name="therapy_volunteer" parent="Scenes/ScenePlayer" instance=ExtResource("15_ci4rn")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="trans" parent="Scenes/ScenePlayer" instance=ExtResource("16_e1uao")]
|
[node name="trans" parent="Scenes/ScenePlayer" instance=ExtResource("16_e1uao")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="trauma" parent="Scenes/ScenePlayer" instance=ExtResource("17_my8p4")]
|
[node name="trauma" parent="Scenes/ScenePlayer" instance=ExtResource("17_my8p4")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="UI" type="Control" parent="."]
|
[node name="UI" type="Control" parent="."]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ func _on_mouse_exited():
|
||||||
has_mouse = false
|
has_mouse = false
|
||||||
|
|
||||||
func try_reveal(for_player: Player) -> bool:
|
func try_reveal(for_player: Player) -> bool:
|
||||||
print("reveal ui!")
|
print_debug("reveal ui!")
|
||||||
revealed = ui.try_reveal()
|
revealed = ui.try_reveal()
|
||||||
if revealed:
|
if revealed:
|
||||||
call_deferred("wait_for_ui_exit", for_player)
|
call_deferred("wait_for_ui_exit", for_player)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ func ready():
|
||||||
body_exited.connect(notify_player_exit)
|
body_exited.connect(notify_player_exit)
|
||||||
|
|
||||||
func notify_player_entry(body: RigidBody3D):
|
func notify_player_entry(body: RigidBody3D):
|
||||||
print("Player entered Crouch area.")
|
print_debug("Player entered Crouch area.")
|
||||||
if body is Player:
|
if body is Player:
|
||||||
body.inside_crouch_volume.append(self)
|
body.inside_crouch_volume.append(self)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
[ext_resource type="ArrayMesh" uid="uid://f5fr2e5gq313" path="res://base-environments/youth_room/shaders/fairy_light_diode.res" id="4_qh8yy"]
|
[ext_resource type="ArrayMesh" uid="uid://f5fr2e5gq313" path="res://base-environments/youth_room/shaders/fairy_light_diode.res" id="4_qh8yy"]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_2caij"]
|
[sub_resource type="GDScript" id="GDScript_2caij"]
|
||||||
script/source = "@tool
|
script/source = "
|
||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
@export var light_array: Array[Vector3]:
|
@export var light_array: Array[Vector3]:
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="PackedScene" uid="uid://c2uf5vwe2rdbd" path="res://base-environments/youth_room/import/cheeky-city.glb" id="1_yckvd"]
|
[ext_resource type="PackedScene" uid="uid://c2uf5vwe2rdbd" path="res://base-environments/youth_room/import/cheeky-city.glb" id="1_yckvd"]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_bfd5g"]
|
[sub_resource type="GDScript" id="GDScript_bfd5g"]
|
||||||
script/source = "@tool
|
script/source = "
|
||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
@export var light_energy:float = 0:
|
@export var light_energy:float = 0:
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://belkrno67sft0
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_bkq30"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_bkq30"]
|
||||||
[ext_resource type="ArrayMesh" uid="uid://bfc3d4g40n0wy" path="res://logic-scenes/collectable/import/old-mask.res" id="2_jrxfv"]
|
[ext_resource type="ArrayMesh" uid="uid://bfc3d4g40n0wy" path="res://logic-scenes/collectable/import/old-mask.res" id="2_jrxfv"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_o63m7"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_o63m7"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="4_q0fee"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_q0fee"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dfblaqsfgm8le" path="res://base-environments/youth_room/audio/Childhood.wav" id="7_51c6s"]
|
[ext_resource type="AudioStream" uid="uid://dfblaqsfgm8le" path="res://base-environments/youth_room/audio/Childhood.wav" id="7_51c6s"]
|
||||||
[ext_resource type="AudioStream" uid="uid://b5d4c6n2mw02s" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_TheaterAG_Deutsch_newt.wav" id="7_htg3l"]
|
[ext_resource type="AudioStream" uid="uid://b5d4c6n2mw02s" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_TheaterAG_Deutsch_newt.wav" id="7_htg3l"]
|
||||||
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="8_51c6s"]
|
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="8_51c6s"]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_o2rjr"]
|
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_o2rjr"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_xwj2j"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_xwj2j"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_qgfj8"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_qgfj8"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="5_ddnfo"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="5_ddnfo"]
|
||||||
[ext_resource type="AudioStream" uid="uid://cvlqvlrc6lqru" path="res://base-environments/youth_room/audio/draven-de.wav" id="5_f6vs7"]
|
[ext_resource type="AudioStream" uid="uid://cvlqvlrc6lqru" path="res://base-environments/youth_room/audio/draven-de.wav" id="5_f6vs7"]
|
||||||
[ext_resource type="AudioStream" uid="uid://c4clagpd3ril0" path="res://base-environments/youth_room/audio/Ambient 5.ogg" id="6_7f2et"]
|
[ext_resource type="AudioStream" uid="uid://c4clagpd3ril0" path="res://base-environments/youth_room/audio/Ambient 5.ogg" id="6_7f2et"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d1r1tvb1paup4" path="res://base-environments/youth_room/audio/draeven.ogg" id="7_nbb1o"]
|
[ext_resource type="AudioStream" uid="uid://d1r1tvb1paup4" path="res://base-environments/youth_room/audio/draeven.ogg" id="7_nbb1o"]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_aby4n"]
|
[ext_resource type="Script" uid="uid://cb1d5cwtgllvq" path="res://base-environments/youth_room/scnees/scene_player.gd" id="1_aby4n"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_k4i8e"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_k4i8e"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_s5qj7"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_s5qj7"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="5_0qiyf"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="5_0qiyf"]
|
||||||
[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="5_s5qj7"]
|
[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="5_s5qj7"]
|
||||||
[ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="6_0qiyf"]
|
[ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="6_0qiyf"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bwh60165c3saj" path="res://base-environments/youth_room/audio/lisa_youth_voice.ogg" id="7_bvh45"]
|
[ext_resource type="AudioStream" uid="uid://bwh60165c3saj" path="res://base-environments/youth_room/audio/lisa_youth_voice.ogg" id="7_bvh45"]
|
||||||
|
|
@ -821,8 +821,6 @@ offset_right = -424.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("1_aby4n")
|
script = ExtResource("1_aby4n")
|
||||||
story_array = PackedStringArray("Why do i still have this junk lying around? its not like I want to do ju jutsu ever again. I just fucked it.", "I mean I did enjoy it while it lasted. Being able to properly hit people was great.", "It gave me the confidence to intimidate students, that were begging to get folded and - as I only once actually got to do that - it also was a great vent for anger. ", "I mean my tits just about killed me during warmup and the changing room really didn\'t need mirrors - thank you I know my hips are fat and disgusting - but at least there was Lukas.", "He was such a huge nerd. He studied math in his third semester and could talk for hours about his passion.", "Also: my math grades pretty much leaped for my final year in high school thanks to him.", "He also helped me so much with jiu jitsu, as he properly floored me when I slipped up. ", "So Fighting for wins with him was actually rewarding even tho more often than not I ended up having to tap out.", "We also had my first proper kiss. I thought I loved him. But now?", "He was weird that evening. Even more huggy and hyperactive than usual.", "We were under my bed, reading my secret comic stash when I got tired of the floor and told him we should go upstairs.", "We had a play fight on my mattress. I\'ve never seen him fight like this.", "His fingers Curled across my Skin without grabbing me, like he would normally do. And he let me win", "… with this smirk on his face.", "I rolled over exhausted when suddenly he sat on top of me, a pearl of sweat dropped from his nose on my throat.", "He started undoing his shirt.", "Do you have condoms?", "Yes, of course everybody has Why did he ask that?", "I saw my body lying on the bed, getting undressed. I was drifting away, towards the stars.", "My body didn\'t move. It didn\'t say a word when the butterflies tried to escape from its stomach as he kissed it.", "I … observed him from afar. He … didn\'t seem to notice, that I had left.", "That I didn\'t return to kiss him goodbye. That I didn\'t hug him when he went home.", "My hands knocked on my brother’s door. He let me lie on his carpet.", "I slowly returned.", "\"How did it go?, Fabian asked.", "\"It was moist”, I said.", "“That usually helps.”", "He laughed awkwardly. I just wanted to also laugh, but curled into a ball and cried.", "It took him a while to say something. “I … you … it\'s fine Lisa. I know it hurts the first time.”", "He gently stroked the back I was curling towards him.", "That was good. He was a sweet angel. Why must he be so bad at comforting?")
|
|
||||||
paragraph_lengths = PackedInt32Array(3, 6, 8, 9, 10, 12, 15, 16, 17, 18, 20, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 32, 31, 30)
|
|
||||||
progress = 17.0
|
progress = 17.0
|
||||||
|
|
||||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
@tool
|
|
||||||
extends CenterContainer
|
extends CenterContainer
|
||||||
|
|
||||||
signal text_finished
|
signal text_finished
|
||||||
|
|
@ -20,14 +19,14 @@ var max_lines: float = 0
|
||||||
set(value):
|
set(value):
|
||||||
progress = value
|
progress = value
|
||||||
if is_node_ready() and not all_text_revealed:
|
if is_node_ready() and not all_text_revealed:
|
||||||
var start_index = 0
|
var start_index := 0
|
||||||
if progress >= substring_sizes.size() or progress < 0:
|
if progress >= substring_sizes.size() or progress < 0:
|
||||||
label.visible_ratio = 1
|
label.visible_ratio = 1
|
||||||
elif progress > 0:
|
elif progress > 0:
|
||||||
for i in range(min(progress, substring_sizes.size()-1) as int) if progress > 0 else range(substring_sizes.size()-1):
|
for i in range(min(progress, substring_sizes.size()-1) as int) if progress > 0 else range(substring_sizes.size()-1):
|
||||||
start_index += substring_sizes[i]
|
start_index += substring_sizes[i]
|
||||||
|
|
||||||
label.visible_characters = start_index + substring_sizes[min(progress as int, substring_sizes.size()-1)] * fmod(progress, 1)
|
label.visible_characters = start_index + int(substring_sizes[min(progress as int, substring_sizes.size()-1)] * fmod(progress, 1))
|
||||||
else:
|
else:
|
||||||
label.visible_ratio = 0
|
label.visible_ratio = 0
|
||||||
|
|
||||||
|
|
@ -72,7 +71,6 @@ func _ready() -> void:
|
||||||
skip_control.skip.connect(skip_text)
|
skip_control.skip.connect(skip_text)
|
||||||
|
|
||||||
if get_tree().root.get_child(-1) == self:
|
if get_tree().root.get_child(-1) == self:
|
||||||
TranslationServer.set_locale("en")
|
|
||||||
play_scene()
|
play_scene()
|
||||||
story_array = story_array
|
story_array = story_array
|
||||||
progress = progress
|
progress = progress
|
||||||
|
|
@ -96,7 +94,7 @@ func _rebuild():
|
||||||
max_lines = float(label.get_line_count())
|
max_lines = float(label.get_line_count())
|
||||||
|
|
||||||
func try_scroll():
|
func try_scroll():
|
||||||
var forward_target: int
|
var forward_target: float
|
||||||
|
|
||||||
#print( "max lines: " + str(max_lines))
|
#print( "max lines: " + str(max_lines))
|
||||||
#print( "current lines: " + str(label.get_character_line(label.visible_characters)))
|
#print( "current lines: " + str(label.get_character_line(label.visible_characters)))
|
||||||
|
|
@ -111,7 +109,7 @@ func try_scroll():
|
||||||
else:
|
else:
|
||||||
forward_target = label.size.y - scroll_container.size.y
|
forward_target = label.size.y - scroll_container.size.y
|
||||||
if scroll_target != null:
|
if scroll_target != null:
|
||||||
var tween: Tween = get_tree().create_tween()
|
#var tween: Tween = get_tree().create_tween()
|
||||||
##tween.set_trans()
|
##tween.set_trans()
|
||||||
scroll_target = forward_target
|
scroll_target = forward_target
|
||||||
|
|
||||||
|
|
@ -152,18 +150,18 @@ func play_scene():
|
||||||
finished.emit()
|
finished.emit()
|
||||||
|
|
||||||
func _unhandled_input(event: InputEvent) -> void:
|
func _unhandled_input(event: InputEvent) -> void:
|
||||||
var just_revealed_text = false
|
var just_revealed_text := false
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
|
if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
|
||||||
scroll_target += 40
|
scroll_target += 40
|
||||||
if not all_text_revealed: just_revealed_text
|
if not all_text_revealed:
|
||||||
all_text_revealed = true
|
just_revealed_text = true
|
||||||
if event.button_index == MOUSE_BUTTON_WHEEL_UP:
|
if event.button_index == MOUSE_BUTTON_WHEEL_UP:
|
||||||
scroll_target -= 40
|
scroll_target -= 40
|
||||||
if not all_text_revealed: just_revealed_text
|
if not all_text_revealed:
|
||||||
all_text_revealed = true
|
just_revealed_text = true
|
||||||
if just_revealed_text:
|
if just_revealed_text and animation_complete:
|
||||||
if animation_complete: all_text_revealed = true
|
all_text_revealed = true
|
||||||
|
|
||||||
var scroll_target: float = 0:
|
var scroll_target: float = 0:
|
||||||
set(value):
|
set(value):
|
||||||
|
|
@ -172,7 +170,7 @@ func _process(delta: float) -> void:
|
||||||
# FIXME: maybe change this to has stage?
|
# FIXME: maybe change this to has stage?
|
||||||
if visible and not Engine.is_editor_hint():
|
if visible and not Engine.is_editor_hint():
|
||||||
if scroll_container.scroll_vertical != scroll_target:
|
if scroll_container.scroll_vertical != scroll_target:
|
||||||
scroll_container.scroll_vertical += (scroll_target-scroll_container.scroll_vertical)*delta*6
|
scroll_container.scroll_vertical += int((scroll_target-scroll_container.scroll_vertical)*delta*6)
|
||||||
|
|
||||||
var intro_triggered:= false
|
var intro_triggered:= false
|
||||||
func trigger_intro():
|
func trigger_intro():
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
[ext_resource type="ArrayMesh" uid="uid://bhfqffldbvdgq" path="res://base-environments/youth_room/import/youth_special_meshes_comic_book_1.res" id="3_ho85h"]
|
[ext_resource type="ArrayMesh" uid="uid://bhfqffldbvdgq" path="res://base-environments/youth_room/import/youth_special_meshes_comic_book_1.res" id="3_ho85h"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_ayw8a"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="4_ayw8a"]
|
||||||
[ext_resource type="ArrayMesh" uid="uid://byjfgvx7jeal" path="res://base-environments/youth_room/import/youth_special_meshes_comic_book_2.res" id="4_kn83e"]
|
[ext_resource type="ArrayMesh" uid="uid://byjfgvx7jeal" path="res://base-environments/youth_room/import/youth_special_meshes_comic_book_2.res" id="4_kn83e"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="5_b3y80"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="5_b3y80"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="8_ho85h"]
|
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="8_ho85h"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="8_kn83e"]
|
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="8_kn83e"]
|
||||||
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="9_kn83e"]
|
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="9_kn83e"]
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
[ext_resource type="AudioStream" uid="uid://cho5neuxkvpyh" path="res://base-environments/youth_room/audio/Voice Loop.wav" id="12_kmdcg"]
|
[ext_resource type="AudioStream" uid="uid://cho5neuxkvpyh" path="res://base-environments/youth_room/audio/Voice Loop.wav" id="12_kmdcg"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="13_h8ip1"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="13_h8ip1"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="14_t30qm"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="14_t30qm"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://logic-scenes/misc/skip_control.tscn" id="15_n6nrr"]
|
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="15_n6nrr"]
|
||||||
[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="16_t6yr4"]
|
[ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="16_t6yr4"]
|
||||||
[ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="17_ce5x6"]
|
[ext_resource type="Texture2D" uid="uid://kpmk21d8rlso" path="res://logic-scenes/board/particle_textures/star.png" id="17_ce5x6"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="18_xppl3"]
|
[ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="18_xppl3"]
|
||||||
|
|
@ -32,8 +32,8 @@
|
||||||
[ext_resource type="AudioStream" uid="uid://bghjiqkyehs1p" path="res://base-environments/youth_room/import/sounds/rain and thunder.mp3" id="30_ustah"]
|
[ext_resource type="AudioStream" uid="uid://bghjiqkyehs1p" path="res://base-environments/youth_room/import/sounds/rain and thunder.mp3" id="30_ustah"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dwtxjvprjyx8p" path="res://base-environments/youth_room/lava-lamp.tscn" id="31_hv11t"]
|
[ext_resource type="PackedScene" uid="uid://dwtxjvprjyx8p" path="res://base-environments/youth_room/lava-lamp.tscn" id="31_hv11t"]
|
||||||
[ext_resource type="PackedScene" uid="uid://c0i4ydmxtxfho" path="res://base-environments/youth_room/import/youth_room.glb" id="32_xw563"]
|
[ext_resource type="PackedScene" uid="uid://c0i4ydmxtxfho" path="res://base-environments/youth_room/import/youth_room.glb" id="32_xw563"]
|
||||||
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/shaders/stars.gdshader" id="33_v36su"]
|
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro/shaders/stars.gdshader" id="33_v36su"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/textures/sky_textures_2.png" id="34_g2brt"]
|
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro/textures/sky_textures_2.png" id="34_g2brt"]
|
||||||
[ext_resource type="ArrayMesh" uid="uid://jjrvf8px2ut3" path="res://base-environments/youth_room/shaders/winfow_frames.res" id="35_62hgr"]
|
[ext_resource type="ArrayMesh" uid="uid://jjrvf8px2ut3" path="res://base-environments/youth_room/shaders/winfow_frames.res" id="35_62hgr"]
|
||||||
[ext_resource type="Material" uid="uid://bmu72cnsr8c5e" path="res://base-environments/youth_room/shaders/window.material" id="36_3qqid"]
|
[ext_resource type="Material" uid="uid://bmu72cnsr8c5e" path="res://base-environments/youth_room/shaders/window.material" id="36_3qqid"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="37_3deyi"]
|
[ext_resource type="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="37_3deyi"]
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
class_name YouthRoom
|
||||||
extends RoomTemplate
|
extends RoomTemplate
|
||||||
|
|
||||||
signal ini_room
|
signal ini_room
|
||||||
|
|
@ -8,7 +9,7 @@ signal ini_room
|
||||||
@onready var card_picker: CardPicker = %Picker
|
@onready var card_picker: CardPicker = %Picker
|
||||||
|
|
||||||
func start_room():
|
func start_room():
|
||||||
save_game = State.active_save_game
|
save_game = State.save_game
|
||||||
save_game.current_room = State.rooms.YOUTH
|
save_game.current_room = State.rooms.YOUTH
|
||||||
Scenes.completed_sequences = save_game.mementos_complete
|
Scenes.completed_sequences = save_game.mementos_complete
|
||||||
Scenes.started_sequences = save_game.mementos_complete
|
Scenes.started_sequences = save_game.mementos_complete
|
||||||
|
|
@ -25,18 +26,17 @@ func start_room():
|
||||||
State.pass_stage_to(%PlayerController)
|
State.pass_stage_to(%PlayerController)
|
||||||
%LightAnimation.lights_on()
|
%LightAnimation.lights_on()
|
||||||
|
|
||||||
|
|
||||||
func get_ready():
|
func get_ready():
|
||||||
id = State.rooms.YOUTH
|
id = State.rooms.YOUTH
|
||||||
self.show()
|
self.show()
|
||||||
$sfx/distant_rain.play()
|
$sfx/distant_rain.play()
|
||||||
$"sfx/rain on window".play()
|
$"sfx/rain on window".play()
|
||||||
await get_tree().create_timer(0.1).timeout
|
await get_tree().process_frame #TODO: this was 0.1s, not sure if needed at all
|
||||||
%Board.hide()
|
%Board.hide()
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
super._ready()
|
||||||
Scenes.scene_finished.connect(_on_scene_finished)
|
Scenes.scene_finished.connect(_on_scene_finished)
|
||||||
|
|
||||||
card_picker.cards_picked.connect(card_board.populate_board)
|
card_picker.cards_picked.connect(card_board.populate_board)
|
||||||
|
|
||||||
func pull_save_state(save: SaveGame) -> void:
|
func pull_save_state(save: SaveGame) -> void:
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bsop46tqngddc
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
[gd_scene load_steps=137 format=4 uid="uid://b3b0gyvklqn50"]
|
[gd_scene load_steps=136 format=4 uid="uid://b3b0gyvklqn50"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://belkrno67sft0" path="res://base-environments/youth_room/room_handle.gd" id="1_aitp0"]
|
[ext_resource type="Script" uid="uid://bsop46tqngddc" path="res://base-environments/youth_room/youth_room.gd" id="1_aitp0"]
|
||||||
[ext_resource type="AudioStream" uid="uid://1h6k2d8q1kw3" path="res://base-environments/youth_room/import/sounds/rain_on_window.mp3" id="2_3haaq"]
|
[ext_resource type="AudioStream" uid="uid://1h6k2d8q1kw3" path="res://base-environments/youth_room/import/sounds/rain_on_window.mp3" id="2_3haaq"]
|
||||||
[ext_resource type="Resource" uid="uid://bgplfqxa852wo" path="res://dev-util/debug_save.tres" id="2_h6j14"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://mkccbig41bqb" path="res://logic-scenes/player_controller/player_controller.tscn" id="3_foj4y"]
|
[ext_resource type="PackedScene" uid="uid://mkccbig41bqb" path="res://logic-scenes/player_controller/player_controller.tscn" id="3_foj4y"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bbpo1hu35yer8" path="res://base-environments/youth_room/import/sounds/thunder.mp3" id="3_wcypa"]
|
[ext_resource type="AudioStream" uid="uid://bbpo1hu35yer8" path="res://base-environments/youth_room/import/sounds/thunder.mp3" id="3_wcypa"]
|
||||||
[ext_resource type="Script" uid="uid://c281w7earok6w" path="res://base-environments/youth_room/crouch_volume.gd" id="3_x3dlb"]
|
[ext_resource type="Script" uid="uid://c281w7earok6w" path="res://base-environments/youth_room/crouch_volume.gd" id="3_x3dlb"]
|
||||||
|
|
@ -38,9 +37,9 @@
|
||||||
[ext_resource type="PackedScene" uid="uid://bw47g00bi710i" path="res://base-environments/youth_room/youth_room_visuals.tscn" id="30_dqyng"]
|
[ext_resource type="PackedScene" uid="uid://bw47g00bi710i" path="res://base-environments/youth_room/youth_room_visuals.tscn" id="30_dqyng"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="32_2vgep"]
|
[ext_resource type="PackedScene" uid="uid://bwc2wp7tckm7t" path="res://base-environments/youth_room/outside.tscn" id="32_2vgep"]
|
||||||
[ext_resource type="Script" uid="uid://br1w2nt4pj8lt" path="res://vfx/post_processing/post_process_shader_template.gd" id="32_corra"]
|
[ext_resource type="Script" uid="uid://br1w2nt4pj8lt" path="res://vfx/post_processing/post_process_shader_template.gd" id="32_corra"]
|
||||||
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/shaders/stars.gdshader" id="32_k5rvd"]
|
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro/shaders/stars.gdshader" id="32_k5rvd"]
|
||||||
[ext_resource type="ArrayMesh" uid="uid://jjrvf8px2ut3" path="res://base-environments/youth_room/shaders/winfow_frames.res" id="32_w6oa5"]
|
[ext_resource type="ArrayMesh" uid="uid://jjrvf8px2ut3" path="res://base-environments/youth_room/shaders/winfow_frames.res" id="32_w6oa5"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/textures/sky_textures_2.png" id="33_mvrs2"]
|
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro/textures/sky_textures_2.png" id="33_mvrs2"]
|
||||||
[ext_resource type="Shader" uid="uid://dspme86ky8yj0" path="res://base-environments/youth_room/rainy-window.gdshader" id="35_ea6x8"]
|
[ext_resource type="Shader" uid="uid://dspme86ky8yj0" path="res://base-environments/youth_room/rainy-window.gdshader" id="35_ea6x8"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="36_bgk6f"]
|
[ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="36_bgk6f"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cg70r0102t8nl" path="res://base-environments/youth_room/fairylights.tscn" id="39_q6rov"]
|
[ext_resource type="PackedScene" uid="uid://cg70r0102t8nl" path="res://base-environments/youth_room/fairylights.tscn" id="39_q6rov"]
|
||||||
|
|
@ -975,7 +974,7 @@ func scene_finished(id: Scenes.id, _repeat: bool):
|
||||||
queue(\"RESET\")
|
queue(\"RESET\")
|
||||||
|
|
||||||
func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void:
|
func play(anin_name: StringName = \"\", a: float = -1, b: float = 1, c: bool = false) -> void:
|
||||||
print(\"anim player accessed!\")
|
print_debug(\"anim player accessed!\")
|
||||||
super.play(anin_name, a, b, c)
|
super.play(anin_name, a, b, c)
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
@ -1733,11 +1732,11 @@ script/source = "extends Camera3D
|
||||||
var camera: Camera3D
|
var camera: Camera3D
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
camera = get_tree().root.get_viewport().get_camera_3d()
|
camera = get_tree().root.get_viewport().get_camera_3d()
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
func _process(delta):
|
func _process(_delta):
|
||||||
self.global_transform = camera.global_transform
|
self.global_transform = camera.global_transform
|
||||||
"
|
"
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_icgq0"]
|
[sub_resource type="GDScript" id="GDScript_icgq0"]
|
||||||
|
|
@ -1758,7 +1757,6 @@ func hide():
|
||||||
[node name="youth room" type="Node3D" groups=["serializable"]]
|
[node name="youth room" type="Node3D" groups=["serializable"]]
|
||||||
process_mode = 1
|
process_mode = 1
|
||||||
script = ExtResource("1_aitp0")
|
script = ExtResource("1_aitp0")
|
||||||
save_game = ExtResource("2_h6j14")
|
|
||||||
|
|
||||||
[node name="logic" type="Node3D" parent="."]
|
[node name="logic" type="Node3D" parent="."]
|
||||||
|
|
||||||
|
|
@ -2039,6 +2037,8 @@ volume_db = -80.0
|
||||||
bus = &"music"
|
bus = &"music"
|
||||||
|
|
||||||
[node name="childhood" parent="logic/ScenePlayer" instance=ExtResource("12_viwxf")]
|
[node name="childhood" parent="logic/ScenePlayer" instance=ExtResource("12_viwxf")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="VoiceTraining" type="AudioStreamPlayer" parent="logic/ScenePlayer"]
|
[node name="VoiceTraining" type="AudioStreamPlayer" parent="logic/ScenePlayer"]
|
||||||
stream = ExtResource("10_wwwdq")
|
stream = ExtResource("10_wwwdq")
|
||||||
|
|
@ -2048,11 +2048,15 @@ bus = &"music"
|
||||||
[node name="JuiJutsu" parent="logic/ScenePlayer" instance=ExtResource("12_x3dlb")]
|
[node name="JuiJutsu" parent="logic/ScenePlayer" instance=ExtResource("12_x3dlb")]
|
||||||
|
|
||||||
[node name="voice_training" parent="logic/ScenePlayer" instance=ExtResource("13_v3447")]
|
[node name="voice_training" parent="logic/ScenePlayer" instance=ExtResource("13_v3447")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="Jui_Jutsu" type="AudioStreamPlayer" parent="logic/ScenePlayer"]
|
[node name="Jui_Jutsu" type="AudioStreamPlayer" parent="logic/ScenePlayer"]
|
||||||
bus = &"music"
|
bus = &"music"
|
||||||
|
|
||||||
[node name="draven" parent="logic/ScenePlayer" instance=ExtResource("19_d3c7p")]
|
[node name="draven" parent="logic/ScenePlayer" instance=ExtResource("19_d3c7p")]
|
||||||
|
story_array = []
|
||||||
|
paragraph_lengths = [1]
|
||||||
|
|
||||||
[node name="starlight_mesh" type="MeshInstance3D" parent="logic/ScenePlayer"]
|
[node name="starlight_mesh" type="MeshInstance3D" parent="logic/ScenePlayer"]
|
||||||
transform = Transform3D(0.999, 0, 0, 0, 0.999, 0, 0, 0, 0.999, 0, 0, 0)
|
transform = Transform3D(0.999, 0, 0, 0, 0.999, 0, 0, 0, 0.999, 0, 0, 0)
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,12 @@
|
||||||
[ext_resource type="Texture2D" uid="uid://dp1bv446sk2xf" path="res://addons/kenney_particle_pack/flare_01.png" id="2_ipdak"]
|
[ext_resource type="Texture2D" uid="uid://dp1bv446sk2xf" path="res://addons/kenney_particle_pack/flare_01.png" id="2_ipdak"]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_w4p0y"]
|
[sub_resource type="GDScript" id="GDScript_w4p0y"]
|
||||||
script/source = "@tool
|
script/source = "
|
||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
var has_stage
|
var has_stage
|
||||||
|
|
||||||
@export_tool_button(\"Play Chest Animation\") var play_action = play_chest_animation
|
#@export_tool_button(\"Play Chest Animation\") var play_action = play_chest_animation
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
if not Engine.is_editor_hint():
|
if not Engine.is_editor_hint():
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,20 @@
|
||||||
@tool
|
|
||||||
class_name ThemedButton extends Button
|
class_name ThemedButton extends Button
|
||||||
|
|
||||||
@export_tool_button("Rebuild") var rebuild_action = rebuild
|
#@export_tool_button("Rebuild") var rebuild_action := rebuild
|
||||||
@onready var side_decor: CompressedTexture2D = load("res://import/interface-elements/button_active.png")
|
@onready var side_decor := load("res://import/interface-elements/button_active.png")
|
||||||
@onready var top_corner_decor: CompressedTexture2D = load("res://import/interface-elements/top_corner.png")
|
@onready var top_corner_decor := load("res://import/interface-elements/top_corner.png")
|
||||||
@onready var lower_corner_decor: CompressedTexture2D = load("res://import/interface-elements/lower_corner.png")
|
@onready var lower_corner_decor := load("res://import/interface-elements/lower_corner.png")
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
print_debug(owner)
|
||||||
rebuild()
|
rebuild()
|
||||||
theme_changed.connect(rebuild)
|
theme_changed.connect(rebuild)
|
||||||
resized.connect(rebuild)
|
resized.connect(rebuild)
|
||||||
clip_contents = true
|
clip_contents = true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var container: PanelContainer
|
var container: PanelContainer
|
||||||
func rebuild():
|
func rebuild():
|
||||||
|
|
@ -38,7 +38,7 @@ func rebuild():
|
||||||
lower_corner.size = Vector2(size.y * lower_corner_decor.get_width() / lower_corner_decor.get_height(), size.y)
|
lower_corner.size = Vector2(size.y * lower_corner_decor.get_width() / lower_corner_decor.get_height(), size.y)
|
||||||
lower_corner.set_anchors_preset(Control.PRESET_BOTTOM_RIGHT, true)
|
lower_corner.set_anchors_preset(Control.PRESET_BOTTOM_RIGHT, true)
|
||||||
lower_corner.position = size-lower_corner.size
|
lower_corner.position = size-lower_corner.size
|
||||||
|
|
||||||
_:
|
_:
|
||||||
var side_thing:= TextureRect.new()
|
var side_thing:= TextureRect.new()
|
||||||
side_thing.texture = side_decor
|
side_thing.texture = side_decor
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dkn824t1gn0km
|
||||||
|
|
@ -1,731 +0,0 @@
|
||||||
[gd_scene load_steps=37 format=3 uid="uid://dxxiyefijv48j"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://d3ewjumh0b0g6" path="res://logic-scenes/main menu/logo.png" id="1_61qpo"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="1_t34p3"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://sfo05h6uah7b" path="res://import/interface-elements/USK_12.svg" id="2_ncfee"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bdyg065h8vcdi" path="res://base-environments/youth_room/shaders/starlight-textures.png" id="2_s1yf2"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://buo4ntxw1vofu" path="res://addons/input_prompts/icons/keyboard/w.png" id="4_8e30h"]
|
|
||||||
[ext_resource type="Script" uid="uid://bbs1u7ojno7xo" path="res://addons/input_prompts/action_prompt/action_prompt.gd" id="5_6w5b4"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://yakqusko3p3h" path="res://addons/input_prompts/icons/keyboard/a.png" id="7_g425y"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://b0kuadlp4jw6j" path="res://addons/input_prompts/icons/keyboard/d.png" id="8_kj67n"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bwhf0tx67yj7a" path="res://addons/input_prompts/icons/keyboard/s.png" id="9_xo70c"]
|
|
||||||
[ext_resource type="Script" uid="uid://0h0lrkntx0uh" path="res://logic-scenes/main menu/pause_menu.gd" id="10_g425y"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://u0bwjr5l6nkh" path="res://logic-scenes/main menu/privacy_settings.tscn" id="10_jirkf"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://g2a27jwdapai" path="res://logic-scenes/card_burner/card_burner.tscn" id="10_kj67n"]
|
|
||||||
[ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="11_kj67n"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://b3wlecqvelh22" path="res://logic-scenes/main menu/acessability_settings.tscn" id="11_kt5p7"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://citwb7f4dl3l1" path="res://thank-you.tscn" id="13_xo70c"]
|
|
||||||
[ext_resource type="AudioStream" uid="uid://cho5neuxkvpyh" path="res://base-environments/youth_room/audio/Voice Loop.wav" id="14_k41g6"]
|
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_t34p3"]
|
|
||||||
script/source = "extends Node3D
|
|
||||||
|
|
||||||
var has_stage = false
|
|
||||||
|
|
||||||
var room = preload(\"res://base-environments/youth_room/youth_room.tscn\")
|
|
||||||
var loaded_room: RoomTemplate
|
|
||||||
|
|
||||||
func _ready() -> void:
|
|
||||||
State.take_stage(self)
|
|
||||||
load_room()
|
|
||||||
State.settings_initialised = true
|
|
||||||
State.show_content_notes = false
|
|
||||||
State.text_language = 1
|
|
||||||
State.speech_language = 1
|
|
||||||
$Menu/VBoxContainer2/PressStart.grab_focus()
|
|
||||||
Scenes.sign_up_for_sequence(prepare_transition, Scenes.id.TRANSITION, 0)
|
|
||||||
Scenes.sign_up_for_sequence(transition, Scenes.id.TRANSITION, 2)
|
|
||||||
if OS.get_locale_language() == \"de\":
|
|
||||||
$Menu/VBoxContainer/SpeechButton.select(1)
|
|
||||||
|
|
||||||
func prepare_transition(_id):
|
|
||||||
await get_tree().process_frame
|
|
||||||
Scenes.continue_sequence(self)
|
|
||||||
|
|
||||||
await get_tree().create_timer(5.0).timeout
|
|
||||||
loaded_room.prepare_transition()
|
|
||||||
ResourceLoader.load_threaded_request(\"res://base-environments/transition/first_platform.tscn\")
|
|
||||||
|
|
||||||
func transition(_id, _repeat):
|
|
||||||
#$TextureRect.texture = get_tree().root.get_texture()
|
|
||||||
#$TextureRect.visible = true
|
|
||||||
loaded_room.unload()
|
|
||||||
var packed_second_room:PackedScene = ResourceLoader.load_threaded_get(\"res://base-environments/transition/first_platform.tscn\")
|
|
||||||
loaded_room.queue_free()
|
|
||||||
%Room.add_child(packed_second_room.instantiate())
|
|
||||||
await get_tree().create_timer(15.5).timeout
|
|
||||||
$AudioStreamPlayer/AnimationPlayer.play(\"ending\")
|
|
||||||
$ending.show()
|
|
||||||
$ending.mouse_filter = Control.MOUSE_FILTER_STOP
|
|
||||||
%Room.get_child(0).queue_free()
|
|
||||||
|
|
||||||
func load_room():
|
|
||||||
for child in %Room.get_children():
|
|
||||||
child.queue_free()
|
|
||||||
|
|
||||||
loaded_room = room.instantiate()
|
|
||||||
%Room.add_child(loaded_room)
|
|
||||||
|
|
||||||
var in_game: bool
|
|
||||||
func _on_start_button_pressed():
|
|
||||||
in_game = true
|
|
||||||
var new_save = SaveGame.new()
|
|
||||||
if DirAccess.dir_exists_absolute( State.user_saves_path ):
|
|
||||||
var usr_dir = DirAccess.open(State.user_saves_path)
|
|
||||||
for path in usr_dir.get_files():
|
|
||||||
if path.ends_with(\".json\"):
|
|
||||||
var found_save: = SaveGame.new(\"%s/%s\" % [State.user_saves_path, path.get_basename()])
|
|
||||||
if found_save.is_demo:
|
|
||||||
new_save = found_save
|
|
||||||
break
|
|
||||||
|
|
||||||
State.active_save_game = new_save
|
|
||||||
var vis_tween = get_tree().create_tween()
|
|
||||||
vis_tween.tween_property(%Menu, \"modulate\", Color(1,1,1,0), .3)
|
|
||||||
await vis_tween.finished
|
|
||||||
%Menu.visible = false
|
|
||||||
%Menu.mouse_filter = Control.MouseFilter.MOUSE_FILTER_PASS
|
|
||||||
loaded_room.start_room()
|
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
|
||||||
if Input.is_action_just_pressed(\"reset_demo\"):
|
|
||||||
_on_reset()
|
|
||||||
|
|
||||||
func _on_reset():
|
|
||||||
load_room()
|
|
||||||
%Menu.modulate = Color.WHITE
|
|
||||||
%Menu.mouse_filter = Control.MouseFilter.MOUSE_FILTER_STOP
|
|
||||||
%Menu.visible = true
|
|
||||||
|
|
||||||
|
|
||||||
func _on_cn_box_toggled(toggled_on: bool) -> void:
|
|
||||||
State.show_content_notes = toggled_on
|
|
||||||
|
|
||||||
func _on_motion_box_toggled(toggled_on: bool) -> void:
|
|
||||||
State.reduce_motion = toggled_on
|
|
||||||
|
|
||||||
func _on_text_button_item_selected(index: int) -> void:
|
|
||||||
match index:
|
|
||||||
0:
|
|
||||||
State.text_language = 1
|
|
||||||
1:
|
|
||||||
State.text_language = 2
|
|
||||||
|
|
||||||
func _on_speech_button_item_selected(index: int) -> void:
|
|
||||||
State.speech_language = index + 1
|
|
||||||
%TextButton.select(1)
|
|
||||||
|
|
||||||
func _unhandled_input(event: InputEvent) -> void:
|
|
||||||
if event is InputEvent and in_game:
|
|
||||||
if event.is_action_pressed(\"ui_menu\") and not %Accessibility.is_active:
|
|
||||||
toggle_pause_menu()
|
|
||||||
|
|
||||||
func show_accessibility_settings():
|
|
||||||
%AccessibilityContainer.show()
|
|
||||||
%Accessibility.is_active = true
|
|
||||||
await %Accessibility.leave_stage
|
|
||||||
%AccessibilityContainer.hide()
|
|
||||||
|
|
||||||
func toggle_pause_menu():
|
|
||||||
if not get_tree().paused:
|
|
||||||
get_tree().paused = true
|
|
||||||
%PauseContainer.show()
|
|
||||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
|
||||||
else:
|
|
||||||
get_tree().paused = false
|
|
||||||
%PauseContainer.hide()
|
|
||||||
|
|
||||||
if State.stage_list[0] is Player:
|
|
||||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
|
||||||
"
|
|
||||||
|
|
||||||
[sub_resource type="Shader" id="Shader_jirkf"]
|
|
||||||
code = "shader_type canvas_item;
|
|
||||||
render_mode blend_premul_alpha;
|
|
||||||
|
|
||||||
uniform float nebula_brightness = 4;
|
|
||||||
uniform vec2 nebula_scale = vec2(1.5);
|
|
||||||
uniform sampler2D starlight_noise: repeat_enable;
|
|
||||||
uniform sampler2D starlight_textures;
|
|
||||||
uniform float rotation_speed = 0.02;
|
|
||||||
uniform vec2 rotation_pivot = vec2(.8);
|
|
||||||
uniform vec2 drift_compensation = vec2(0.1, -0.2);
|
|
||||||
uniform float noise_strength = 0.2;
|
|
||||||
|
|
||||||
// https://gist.github.com/ayamflow/c06bc0c8a64f985dd431bd0ac5b557cd
|
|
||||||
vec2 rotateUV(vec2 uv, vec2 pivot, float rotation)
|
|
||||||
{
|
|
||||||
return vec2(
|
|
||||||
cos(rotation) * (uv.x - pivot.x) + sin(rotation) * (uv.y - pivot.y) + pivot.x,
|
|
||||||
cos(rotation) * (uv.y - pivot.y) - sin(rotation) * (uv.x - pivot.x) + pivot.y
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//clamp(, .0, 1.0
|
|
||||||
|
|
||||||
void fragment() {
|
|
||||||
COLOR *= vec4(.0,
|
|
||||||
texture(starlight_textures,fract(UV*2.0)).x * 2.0*pow(max(sin(TIME + 10.0 * texture(starlight_textures,UV).y), .0), 5.0),
|
|
||||||
texture(starlight_textures,
|
|
||||||
clamp(
|
|
||||||
UV / nebula_scale + drift_compensation + 1.0 *
|
|
||||||
texture(starlight_noise, rotateUV(
|
|
||||||
UV / nebula_scale + noise_strength * texture(starlight_noise, rotateUV(UV, -rotation_pivot, TIME*rotation_speed)).yz,
|
|
||||||
rotation_pivot, TIME*rotation_speed)
|
|
||||||
).xz,
|
|
||||||
.0, 1.0))
|
|
||||||
.z * nebula_brightness,
|
|
||||||
clamp(pow(COLOR.x * 2.5 - (texture(starlight_noise, UV*2.0+TIME*.02).x + 0.8), 1.5), .0, 1.0)
|
|
||||||
) * COLOR.w;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_k41g6"]
|
|
||||||
shader = SubResource("Shader_jirkf")
|
|
||||||
shader_parameter/nebula_brightness = 2.4
|
|
||||||
shader_parameter/nebula_scale = Vector2(1.3, 1.6)
|
|
||||||
shader_parameter/starlight_noise = ExtResource("1_t34p3")
|
|
||||||
shader_parameter/starlight_textures = ExtResource("2_s1yf2")
|
|
||||||
shader_parameter/rotation_speed = 0.02
|
|
||||||
shader_parameter/rotation_pivot = Vector2(0.8, 0.8)
|
|
||||||
shader_parameter/drift_compensation = Vector2(0.1, -0.2)
|
|
||||||
shader_parameter/noise_strength = 0.2
|
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_kt5p7"]
|
|
||||||
interpolation_color_space = 2
|
|
||||||
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0)
|
|
||||||
|
|
||||||
[sub_resource type="GradientTexture2D" id="GradientTexture2D_jirkf"]
|
|
||||||
gradient = SubResource("Gradient_kt5p7")
|
|
||||||
width = 2048
|
|
||||||
height = 1536
|
|
||||||
fill = 1
|
|
||||||
fill_from = Vector2(0.538462, 0.491453)
|
|
||||||
fill_to = Vector2(1.3, -0.3)
|
|
||||||
|
|
||||||
[sub_resource type="InputEventKey" id="InputEventKey_kt5p7"]
|
|
||||||
device = -1
|
|
||||||
physical_keycode = 87
|
|
||||||
unicode = 119
|
|
||||||
|
|
||||||
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_mivr6"]
|
|
||||||
device = -1
|
|
||||||
axis = 1
|
|
||||||
axis_value = -1.0
|
|
||||||
|
|
||||||
[sub_resource type="InputEventKey" id="InputEventKey_52c3j"]
|
|
||||||
device = -1
|
|
||||||
physical_keycode = 65
|
|
||||||
unicode = 97
|
|
||||||
|
|
||||||
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_b7q2n"]
|
|
||||||
device = -1
|
|
||||||
axis_value = -1.0
|
|
||||||
|
|
||||||
[sub_resource type="InputEventKey" id="InputEventKey_qhf78"]
|
|
||||||
device = -1
|
|
||||||
physical_keycode = 68
|
|
||||||
unicode = 100
|
|
||||||
|
|
||||||
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_gatj6"]
|
|
||||||
device = -1
|
|
||||||
axis_value = 1.0
|
|
||||||
|
|
||||||
[sub_resource type="InputEventKey" id="InputEventKey_ol51q"]
|
|
||||||
device = -1
|
|
||||||
physical_keycode = 83
|
|
||||||
unicode = 115
|
|
||||||
|
|
||||||
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_2rqk2"]
|
|
||||||
device = -1
|
|
||||||
axis = 1
|
|
||||||
axis_value = 1.0
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kt5p7"]
|
|
||||||
bg_color = Color(0.0288289, 0.0448641, 0.121276, 1)
|
|
||||||
border_width_left = 10
|
|
||||||
border_width_top = 10
|
|
||||||
border_width_right = 10
|
|
||||||
border_width_bottom = 10
|
|
||||||
border_color = Color(0.0288289, 0.0448641, 0.121276, 1)
|
|
||||||
corner_radius_top_left = 20
|
|
||||||
corner_radius_top_right = 20
|
|
||||||
corner_radius_bottom_right = 20
|
|
||||||
corner_radius_bottom_left = 20
|
|
||||||
expand_margin_left = 20.0
|
|
||||||
expand_margin_right = 20.0
|
|
||||||
|
|
||||||
[sub_resource type="Shader" id="Shader_gatj6"]
|
|
||||||
code = "shader_type canvas_item;
|
|
||||||
render_mode blend_premul_alpha;
|
|
||||||
|
|
||||||
uniform float nebula_brightness = 4;
|
|
||||||
uniform vec2 nebula_scale = vec2(1.5);
|
|
||||||
uniform sampler2D starlight_noise: repeat_enable;
|
|
||||||
uniform sampler2D starlight_textures;
|
|
||||||
uniform float rotation_speed = 0.02;
|
|
||||||
uniform vec2 rotation_pivot = vec2(.8);
|
|
||||||
uniform vec2 drift_compensation = vec2(0.1, -0.2);
|
|
||||||
uniform float noise_strength = 0.2;
|
|
||||||
|
|
||||||
// https://gist.github.com/ayamflow/c06bc0c8a64f985dd431bd0ac5b557cd
|
|
||||||
vec2 rotateUV(vec2 uv, vec2 pivot, float rotation)
|
|
||||||
{
|
|
||||||
return vec2(
|
|
||||||
cos(rotation) * (uv.x - pivot.x) + sin(rotation) * (uv.y - pivot.y) + pivot.x,
|
|
||||||
cos(rotation) * (uv.y - pivot.y) - sin(rotation) * (uv.x - pivot.x) + pivot.y
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//clamp(, .0, 1.0
|
|
||||||
|
|
||||||
void fragment() {
|
|
||||||
COLOR *= vec4(.0,
|
|
||||||
texture(starlight_textures,fract(UV*2.0)).x * 2.0*pow(max(sin(TIME + 10.0 * texture(starlight_textures,UV).y), .0), 5.0),
|
|
||||||
texture(starlight_textures,
|
|
||||||
clamp(
|
|
||||||
UV / nebula_scale + drift_compensation + 1.0 *
|
|
||||||
texture(starlight_noise, rotateUV(
|
|
||||||
UV / nebula_scale + noise_strength * texture(starlight_noise, rotateUV(UV, -rotation_pivot, TIME*rotation_speed)).yz,
|
|
||||||
rotation_pivot, TIME*rotation_speed)
|
|
||||||
).xz,
|
|
||||||
.0, 1.0))
|
|
||||||
.z * nebula_brightness,
|
|
||||||
clamp(pow(COLOR.x * 2.5 - (texture(starlight_noise, UV*2.0+TIME*.02).x + 0.8), 1.5), .0, 1.0)
|
|
||||||
) * COLOR.w;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ol51q"]
|
|
||||||
shader = SubResource("Shader_gatj6")
|
|
||||||
shader_parameter/nebula_brightness = 2.4
|
|
||||||
shader_parameter/nebula_scale = Vector2(1.3, 1.6)
|
|
||||||
shader_parameter/starlight_noise = ExtResource("1_t34p3")
|
|
||||||
shader_parameter/starlight_textures = ExtResource("2_s1yf2")
|
|
||||||
shader_parameter/rotation_speed = 0.02
|
|
||||||
shader_parameter/rotation_pivot = Vector2(0.8, 0.8)
|
|
||||||
shader_parameter/drift_compensation = Vector2(0.1, -0.2)
|
|
||||||
shader_parameter/noise_strength = 0.2
|
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_2rqk2"]
|
|
||||||
interpolation_color_space = 2
|
|
||||||
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0)
|
|
||||||
|
|
||||||
[sub_resource type="GradientTexture2D" id="GradientTexture2D_w8m28"]
|
|
||||||
gradient = SubResource("Gradient_2rqk2")
|
|
||||||
width = 2048
|
|
||||||
height = 1536
|
|
||||||
fill = 1
|
|
||||||
fill_from = Vector2(0.538462, 0.491453)
|
|
||||||
fill_to = Vector2(1.3, -0.3)
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_kt5p7"]
|
|
||||||
resource_name = "ending"
|
|
||||||
length = 120.0
|
|
||||||
tracks/0/type = "audio"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath(".")
|
|
||||||
tracks/0/interp = 1
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"clips": [{
|
|
||||||
"end_offset": 0.0,
|
|
||||||
"start_offset": 8.34472,
|
|
||||||
"stream": ExtResource("14_k41g6")
|
|
||||||
}],
|
|
||||||
"times": PackedFloat32Array(0.517639)
|
|
||||||
}
|
|
||||||
tracks/0/use_blend = true
|
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_mivr6"]
|
|
||||||
_data = {
|
|
||||||
&"ending": SubResource("Animation_kt5p7")
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="DemoMain" type="Node3D"]
|
|
||||||
process_mode = 3
|
|
||||||
script = SubResource("GDScript_t34p3")
|
|
||||||
|
|
||||||
[node name="Room" type="Node3D" parent="."]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
|
|
||||||
[node name="Menu" type="Control" parent="."]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 3
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="Panel" type="Panel" parent="Menu"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="TextureRect3" type="TextureRect" parent="Menu/Panel"]
|
|
||||||
material = SubResource("ShaderMaterial_k41g6")
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 2073.0
|
|
||||||
offset_top = 1497.0
|
|
||||||
offset_right = 4353.0
|
|
||||||
offset_bottom = 3530.0
|
|
||||||
rotation = -3.14159
|
|
||||||
texture = SubResource("GradientTexture2D_jirkf")
|
|
||||||
|
|
||||||
[node name="TextureRect2" type="TextureRect" parent="Menu/Panel"]
|
|
||||||
visible = false
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 3
|
|
||||||
anchor_left = 1.0
|
|
||||||
anchor_top = 1.0
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
offset_left = -395.0
|
|
||||||
offset_top = -447.0
|
|
||||||
offset_right = 1011.0
|
|
||||||
offset_bottom = 959.0
|
|
||||||
grow_horizontal = 0
|
|
||||||
grow_vertical = 0
|
|
||||||
scale = Vector2(0.2, 0.2)
|
|
||||||
texture = ExtResource("2_ncfee")
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Menu/Panel/TextureRect2"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 7
|
|
||||||
anchor_left = 0.5
|
|
||||||
anchor_top = 1.0
|
|
||||||
anchor_right = 0.5
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
offset_left = -988.0
|
|
||||||
offset_top = 99.0002
|
|
||||||
offset_right = -590.0
|
|
||||||
offset_bottom = 187.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 0
|
|
||||||
scale = Vector2(5, 5)
|
|
||||||
text = "*Als Messe-Demo geprüft. Entspricht angestrebtem finalen Rating."
|
|
||||||
horizontal_alignment = 1
|
|
||||||
autowrap_mode = 2
|
|
||||||
|
|
||||||
[node name="VBoxContainer2" type="VBoxContainer" parent="Menu"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 8
|
|
||||||
anchor_left = 0.5
|
|
||||||
anchor_top = 0.5
|
|
||||||
anchor_right = 0.5
|
|
||||||
anchor_bottom = 0.5
|
|
||||||
offset_left = -256.0
|
|
||||||
offset_top = -281.5
|
|
||||||
offset_right = 256.0
|
|
||||||
offset_bottom = 281.5
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="Menu/VBoxContainer2"]
|
|
||||||
custom_minimum_size = Vector2(512, 512)
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_horizontal = 4
|
|
||||||
size_flags_vertical = 4
|
|
||||||
texture = ExtResource("1_61qpo")
|
|
||||||
expand_mode = 2
|
|
||||||
|
|
||||||
[node name="PressStart" type="Button" parent="Menu/VBoxContainer2"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_override_font_sizes/font_size = 45
|
|
||||||
text = "Start the Demo!"
|
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="Menu"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 3
|
|
||||||
anchor_left = 1.0
|
|
||||||
anchor_top = 1.0
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
offset_left = -392.0
|
|
||||||
offset_top = -310.0
|
|
||||||
offset_right = -78.0
|
|
||||||
offset_bottom = -92.0
|
|
||||||
grow_horizontal = 0
|
|
||||||
grow_vertical = 0
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_type_variation = &"HeaderMedium"
|
|
||||||
text = "Accessibility"
|
|
||||||
|
|
||||||
[node name="CNBox" type="CheckBox" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "show Content Notes"
|
|
||||||
|
|
||||||
[node name="MotionBox" type="CheckBox" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "reduce motion and flickering"
|
|
||||||
|
|
||||||
[node name="A11Y" type="Button" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "More Options"
|
|
||||||
|
|
||||||
[node name="Label3" type="Label" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_type_variation = &"HeaderMedium"
|
|
||||||
text = "Spoken Text"
|
|
||||||
|
|
||||||
[node name="SpeechButton" type="OptionButton" parent="Menu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
selected = 0
|
|
||||||
item_count = 2
|
|
||||||
popup/item_0/text = "englisch"
|
|
||||||
popup/item_0/id = 0
|
|
||||||
popup/item_1/text = "deutsch"
|
|
||||||
popup/item_1/id = 1
|
|
||||||
|
|
||||||
[node name="Label2" type="Label" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_type_variation = &"HeaderMedium"
|
|
||||||
text = "Written Text"
|
|
||||||
|
|
||||||
[node name="TextButton" type="OptionButton" parent="Menu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
selected = 0
|
|
||||||
item_count = 2
|
|
||||||
popup/item_0/text = "englisch"
|
|
||||||
popup/item_0/id = 1
|
|
||||||
popup/item_1/text = "deutsch"
|
|
||||||
popup/item_1/id = 2
|
|
||||||
|
|
||||||
[node name="Button" type="Button" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Privacy Info"
|
|
||||||
|
|
||||||
[node name="Control" type="Control" parent="Menu"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 2
|
|
||||||
anchor_top = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
offset_top = -40.0
|
|
||||||
offset_right = 40.0
|
|
||||||
grow_vertical = 0
|
|
||||||
|
|
||||||
[node name="ActionPrompt" type="TextureRect" parent="Menu/Control"]
|
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 134.0
|
|
||||||
offset_top = -282.0
|
|
||||||
offset_right = 234.0
|
|
||||||
offset_bottom = -182.0
|
|
||||||
texture = ExtResource("4_8e30h")
|
|
||||||
stretch_mode = 5
|
|
||||||
script = ExtResource("5_6w5b4")
|
|
||||||
action = "player_forwards"
|
|
||||||
icon = 4
|
|
||||||
events = Array[InputEvent]([SubResource("InputEventKey_kt5p7"), SubResource("InputEventJoypadMotion_mivr6")])
|
|
||||||
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
|
|
||||||
|
|
||||||
[node name="ActionPrompt2" type="TextureRect" parent="Menu/Control"]
|
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 70.0
|
|
||||||
offset_top = -187.0
|
|
||||||
offset_right = 170.0
|
|
||||||
offset_bottom = -87.0
|
|
||||||
texture = ExtResource("7_g425y")
|
|
||||||
stretch_mode = 5
|
|
||||||
script = ExtResource("5_6w5b4")
|
|
||||||
action = "player_left"
|
|
||||||
icon = 4
|
|
||||||
events = Array[InputEvent]([SubResource("InputEventKey_52c3j"), SubResource("InputEventJoypadMotion_b7q2n")])
|
|
||||||
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
|
|
||||||
|
|
||||||
[node name="ActionPrompt4" type="TextureRect" parent="Menu/Control"]
|
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 247.0
|
|
||||||
offset_top = -187.0
|
|
||||||
offset_right = 347.0
|
|
||||||
offset_bottom = -87.0
|
|
||||||
texture = ExtResource("8_kj67n")
|
|
||||||
stretch_mode = 5
|
|
||||||
script = ExtResource("5_6w5b4")
|
|
||||||
action = "player_right"
|
|
||||||
icon = 4
|
|
||||||
events = Array[InputEvent]([SubResource("InputEventKey_qhf78"), SubResource("InputEventJoypadMotion_gatj6")])
|
|
||||||
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
|
|
||||||
|
|
||||||
[node name="ActionPrompt3" type="TextureRect" parent="Menu/Control"]
|
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 158.0
|
|
||||||
offset_top = -187.0
|
|
||||||
offset_right = 258.0
|
|
||||||
offset_bottom = -87.0
|
|
||||||
texture = ExtResource("9_xo70c")
|
|
||||||
stretch_mode = 5
|
|
||||||
script = ExtResource("5_6w5b4")
|
|
||||||
action = "player_backwards"
|
|
||||||
icon = 4
|
|
||||||
events = Array[InputEvent]([SubResource("InputEventKey_ol51q"), SubResource("InputEventJoypadMotion_2rqk2")])
|
|
||||||
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Menu/Control"]
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 72.0
|
|
||||||
offset_top = -89.0
|
|
||||||
offset_right = 374.0
|
|
||||||
offset_bottom = -40.0
|
|
||||||
theme_type_variation = &"HeaderMedium"
|
|
||||||
text = "Move trough the room"
|
|
||||||
|
|
||||||
[node name="PrivacyPanel" type="PanelContainer" parent="Menu"]
|
|
||||||
visible = false
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 8
|
|
||||||
anchor_left = 0.5
|
|
||||||
anchor_top = 0.5
|
|
||||||
anchor_right = 0.5
|
|
||||||
anchor_bottom = 0.5
|
|
||||||
offset_left = -701.5
|
|
||||||
offset_top = -464.5
|
|
||||||
offset_right = 701.5
|
|
||||||
offset_bottom = 464.5
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_kt5p7")
|
|
||||||
|
|
||||||
[node name="PrivacyAndDataProtection" parent="Menu/PrivacyPanel" instance=ExtResource("10_jirkf")]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="."]
|
|
||||||
visible = false
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
mouse_filter = 2
|
|
||||||
|
|
||||||
[node name="CardBurner" parent="." instance=ExtResource("10_kj67n")]
|
|
||||||
visible = false
|
|
||||||
|
|
||||||
[node name="PauseContainer" type="CenterContainer" parent="."]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="PauseContainer"]
|
|
||||||
material = SubResource("ShaderMaterial_ol51q")
|
|
||||||
layout_mode = 2
|
|
||||||
texture = SubResource("GradientTexture2D_w8m28")
|
|
||||||
|
|
||||||
[node name="PauseMenu" type="PanelContainer" parent="PauseContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
script = ExtResource("10_g425y")
|
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="PauseContainer/PauseMenu"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_type_variation = &"HeaderLarge"
|
|
||||||
text = "Game Paused"
|
|
||||||
|
|
||||||
[node name="ResumeButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Resume"
|
|
||||||
|
|
||||||
[node name="A11Y" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Accessibility"
|
|
||||||
|
|
||||||
[node name="BugButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
script = ExtResource("11_kj67n")
|
|
||||||
metadata/_custom_type_script = "uid://sa15wakvpj2e"
|
|
||||||
|
|
||||||
[node name="ToMenuButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Return to Menu"
|
|
||||||
|
|
||||||
[node name="ToSettingsButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Open Settings"
|
|
||||||
|
|
||||||
[node name="ToDesktopButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Quit to Desktop"
|
|
||||||
|
|
||||||
[node name="HSeparator" type="HSeparator" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
custom_minimum_size = Vector2(0, 20)
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="FindHelplineButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Find Help-Lines"
|
|
||||||
|
|
||||||
[node name="Label2" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "opens findahelpline.com"
|
|
||||||
horizontal_alignment = 1
|
|
||||||
|
|
||||||
[node name="SkipStoryButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Skip this Story"
|
|
||||||
|
|
||||||
[node name="ending" parent="." instance=ExtResource("13_xo70c")]
|
|
||||||
visible = false
|
|
||||||
mouse_filter = 2
|
|
||||||
|
|
||||||
[node name="AccessibilityContainer" type="CenterContainer" parent="."]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="AccessibilityPanel" type="PanelContainer" parent="AccessibilityContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_kt5p7")
|
|
||||||
|
|
||||||
[node name="Accessibility" parent="AccessibilityContainer/AccessibilityPanel" instance=ExtResource("11_kt5p7")]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
|
||||||
|
|
||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="AudioStreamPlayer"]
|
|
||||||
libraries = {
|
|
||||||
&"": SubResource("AnimationLibrary_mivr6")
|
|
||||||
}
|
|
||||||
|
|
||||||
[connection signal="pressed" from="Menu/VBoxContainer2/PressStart" to="." method="_on_start_button_pressed"]
|
|
||||||
[connection signal="toggled" from="Menu/VBoxContainer/CNBox" to="." method="_on_cn_box_toggled"]
|
|
||||||
[connection signal="toggled" from="Menu/VBoxContainer/MotionBox" to="." method="_on_motion_box_toggled"]
|
|
||||||
[connection signal="pressed" from="Menu/VBoxContainer/A11Y" to="." method="show_accessibility_settings"]
|
|
||||||
[connection signal="item_selected" from="Menu/VBoxContainer/SpeechButton" to="." method="_on_speech_button_item_selected"]
|
|
||||||
[connection signal="item_selected" from="Menu/VBoxContainer/TextButton" to="." method="_on_text_button_item_selected"]
|
|
||||||
[connection signal="pressed" from="Menu/VBoxContainer/Button" to="Menu/PrivacyPanel" method="show"]
|
|
||||||
[connection signal="leave_stage" from="Menu/PrivacyPanel/PrivacyAndDataProtection" to="Menu/PrivacyPanel" method="hide"]
|
|
||||||
[connection signal="pressed" from="PauseContainer/PauseMenu/VBoxContainer/A11Y" to="." method="show_accessibility_settings"]
|
|
||||||
|
|
@ -1,787 +0,0 @@
|
||||||
[gd_scene load_steps=41 format=3 uid="uid://cd63barv73rfx"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://d3ewjumh0b0g6" path="res://logic-scenes/main menu/logo.png" id="1_61qpo"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="1_t34p3"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://sfo05h6uah7b" path="res://import/interface-elements/USK_12.svg" id="2_ncfee"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bdyg065h8vcdi" path="res://base-environments/youth_room/shaders/starlight-textures.png" id="2_s1yf2"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://buo4ntxw1vofu" path="res://addons/input_prompts/icons/keyboard/w.png" id="4_8e30h"]
|
|
||||||
[ext_resource type="Script" uid="uid://bbs1u7ojno7xo" path="res://addons/input_prompts/action_prompt/action_prompt.gd" id="5_6w5b4"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://dep3kuio0xnui" path="res://import/interface-elements/lower_corner.png" id="5_b7q2n"]
|
|
||||||
[ext_resource type="Script" uid="uid://cxton1pffwxk4" path="res://button_themer.gd" id="6_qhf78"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://yakqusko3p3h" path="res://addons/input_prompts/icons/keyboard/a.png" id="7_g425y"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://b0kuadlp4jw6j" path="res://addons/input_prompts/icons/keyboard/d.png" id="8_kj67n"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bwhf0tx67yj7a" path="res://addons/input_prompts/icons/keyboard/s.png" id="9_xo70c"]
|
|
||||||
[ext_resource type="Script" uid="uid://0h0lrkntx0uh" path="res://logic-scenes/main menu/pause_menu.gd" id="10_g425y"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://u0bwjr5l6nkh" path="res://logic-scenes/main menu/privacy_settings.tscn" id="10_jirkf"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://g2a27jwdapai" path="res://logic-scenes/card_burner/card_burner.tscn" id="10_kj67n"]
|
|
||||||
[ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="11_kj67n"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://b3wlecqvelh22" path="res://logic-scenes/main menu/acessability_settings.tscn" id="11_kt5p7"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://gmxenhavh1lp" path="res://logic-scenes/main menu/video_settings.tscn" id="11_mivr6"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://citwb7f4dl3l1" path="res://thank-you.tscn" id="13_xo70c"]
|
|
||||||
[ext_resource type="AudioStream" uid="uid://cho5neuxkvpyh" path="res://base-environments/youth_room/audio/Voice Loop.wav" id="14_k41g6"]
|
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_t34p3"]
|
|
||||||
script/source = "extends Node3D
|
|
||||||
|
|
||||||
var has_stage = false:
|
|
||||||
set(stage):
|
|
||||||
if stage:
|
|
||||||
if not is_node_ready():
|
|
||||||
await ready
|
|
||||||
await get_tree().process_frame
|
|
||||||
%PressStart.grab_focus()
|
|
||||||
has_stage = stage
|
|
||||||
|
|
||||||
var room = preload(\"res://base-environments/youth_room/youth_room.tscn\")
|
|
||||||
var loaded_room: RoomTemplate
|
|
||||||
|
|
||||||
func _ready() -> void:
|
|
||||||
State.take_stage(self)
|
|
||||||
load_room()
|
|
||||||
State.settings_initialised = true
|
|
||||||
State.show_content_notes = false
|
|
||||||
State.text_language = 1
|
|
||||||
State.speech_language = 1
|
|
||||||
Scenes.sign_up_for_sequence(prepare_transition, Scenes.id.TRANSITION, 0)
|
|
||||||
Scenes.sign_up_for_sequence(transition, Scenes.id.TRANSITION, 2)
|
|
||||||
if OS.get_locale_language() == \"de\":
|
|
||||||
$Menu/VBoxContainer/SpeechButton.select(1)
|
|
||||||
$Menu/VBoxContainer/SpeechButton.item_selected.emit(1)
|
|
||||||
|
|
||||||
|
|
||||||
func prepare_transition(_id):
|
|
||||||
await get_tree().process_frame
|
|
||||||
Scenes.continue_sequence(self)
|
|
||||||
|
|
||||||
await get_tree().create_timer(5.0).timeout
|
|
||||||
loaded_room.prepare_transition()
|
|
||||||
ResourceLoader.load_threaded_request(\"res://base-environments/transition/first_platform.tscn\")
|
|
||||||
|
|
||||||
func transition(_id, _repeat):
|
|
||||||
#$TextureRect.texture = get_tree().root.get_texture()
|
|
||||||
#$TextureRect.visible = true
|
|
||||||
while ResourceLoader.load_threaded_get_status(\"res://base-environments/transition/first_platform.tscn\") != ResourceLoader.THREAD_LOAD_IN_PROGRESS:
|
|
||||||
await get_tree().process_frame
|
|
||||||
loaded_room.unload()
|
|
||||||
var packed_second_room:PackedScene = ResourceLoader.load_threaded_get(\"res://base-environments/transition/first_platform.tscn\")
|
|
||||||
loaded_room.queue_free()
|
|
||||||
%Room.add_child(packed_second_room.instantiate())
|
|
||||||
await get_tree().create_timer(15.5).timeout
|
|
||||||
$AudioStreamPlayer/AnimationPlayer.play(\"ending\")
|
|
||||||
$ending.show()
|
|
||||||
$ending.mouse_filter = Control.MOUSE_FILTER_STOP
|
|
||||||
%Room.get_child(0).queue_free()
|
|
||||||
|
|
||||||
func load_room():
|
|
||||||
for child in %Room.get_children():
|
|
||||||
child.queue_free()
|
|
||||||
|
|
||||||
loaded_room = room.instantiate()
|
|
||||||
%Room.add_child(loaded_room)
|
|
||||||
|
|
||||||
var in_game: bool
|
|
||||||
func _on_start_button_pressed():
|
|
||||||
in_game = true
|
|
||||||
var new_save = SaveGame.new()
|
|
||||||
if DirAccess.dir_exists_absolute( State.user_saves_path ):
|
|
||||||
var usr_dir = DirAccess.open(State.user_saves_path)
|
|
||||||
for path in usr_dir.get_files():
|
|
||||||
if path.ends_with(\".json\"):
|
|
||||||
var found_save: = SaveGame.new(\"%s/%s\" % [State.user_saves_path, path.get_basename()])
|
|
||||||
if found_save.is_demo:
|
|
||||||
new_save = found_save
|
|
||||||
break
|
|
||||||
|
|
||||||
State.active_save_game = new_save
|
|
||||||
var vis_tween = get_tree().create_tween()
|
|
||||||
vis_tween.tween_property(%Menu, \"modulate\", Color(1,1,1,0), .3)
|
|
||||||
await vis_tween.finished
|
|
||||||
%Menu.visible = false
|
|
||||||
%Menu.mouse_filter = Control.MouseFilter.MOUSE_FILTER_PASS
|
|
||||||
loaded_room.start_room()
|
|
||||||
|
|
||||||
#func _process(_delta: float) -> void:
|
|
||||||
# if Input.is_action_just_pressed(\"reset_demo\"):
|
|
||||||
# _on_reset()
|
|
||||||
|
|
||||||
func _on_reset():
|
|
||||||
load_room()
|
|
||||||
%Menu.modulate = Color.WHITE
|
|
||||||
%Menu.mouse_filter = Control.MouseFilter.MOUSE_FILTER_STOP
|
|
||||||
%Menu.visible = true
|
|
||||||
|
|
||||||
|
|
||||||
func _on_cn_box_toggled(toggled_on: bool) -> void:
|
|
||||||
State.show_content_notes = toggled_on
|
|
||||||
|
|
||||||
func _on_motion_box_toggled(toggled_on: bool) -> void:
|
|
||||||
State.reduce_motion = toggled_on
|
|
||||||
|
|
||||||
func _on_text_button_item_selected(index: int) -> void:
|
|
||||||
match index:
|
|
||||||
0:
|
|
||||||
State.text_language = 1
|
|
||||||
1:
|
|
||||||
State.text_language = 2
|
|
||||||
|
|
||||||
func _on_speech_button_item_selected(index: int) -> void:
|
|
||||||
State.speech_language = index + 1
|
|
||||||
if index == 1:
|
|
||||||
%TextButton.select(1)
|
|
||||||
%TextButton.item_selected.emit(1)
|
|
||||||
|
|
||||||
func _unhandled_input(event: InputEvent) -> void:
|
|
||||||
if event is InputEvent and in_game:
|
|
||||||
if event.is_action_pressed(\"ui_menu\"):
|
|
||||||
toggle_pause_menu()
|
|
||||||
|
|
||||||
func show_accessibility_settings():
|
|
||||||
%AccessibilityContainer.show()
|
|
||||||
%Accessibility.is_active = true
|
|
||||||
await %Accessibility.leave_stage
|
|
||||||
%AccessibilityContainer.hide()
|
|
||||||
if in_game:
|
|
||||||
%ResumeButton.grab_focus()
|
|
||||||
else:
|
|
||||||
%PressStart.grab_focus()
|
|
||||||
|
|
||||||
func toggle_pause_menu():
|
|
||||||
if not get_tree().paused:
|
|
||||||
get_tree().paused = true
|
|
||||||
%PauseContainer.show()
|
|
||||||
%ResumeButton.grab_focus()
|
|
||||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
|
||||||
else:
|
|
||||||
get_tree().paused = false
|
|
||||||
%PauseContainer.hide()
|
|
||||||
%ResumeButton.grab_focus()
|
|
||||||
|
|
||||||
if State.stage_list[0] is Player:
|
|
||||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
|
||||||
"
|
|
||||||
|
|
||||||
[sub_resource type="Shader" id="Shader_jirkf"]
|
|
||||||
code = "shader_type canvas_item;
|
|
||||||
render_mode blend_premul_alpha;
|
|
||||||
|
|
||||||
uniform float nebula_brightness = 4;
|
|
||||||
uniform vec2 nebula_scale = vec2(1.5);
|
|
||||||
uniform sampler2D starlight_noise: repeat_enable;
|
|
||||||
uniform sampler2D starlight_textures;
|
|
||||||
uniform float rotation_speed = 0.02;
|
|
||||||
uniform vec2 rotation_pivot = vec2(.8);
|
|
||||||
uniform vec2 drift_compensation = vec2(0.1, -0.2);
|
|
||||||
uniform float noise_strength = 0.2;
|
|
||||||
|
|
||||||
// https://gist.github.com/ayamflow/c06bc0c8a64f985dd431bd0ac5b557cd
|
|
||||||
vec2 rotateUV(vec2 uv, vec2 pivot, float rotation)
|
|
||||||
{
|
|
||||||
return vec2(
|
|
||||||
cos(rotation) * (uv.x - pivot.x) + sin(rotation) * (uv.y - pivot.y) + pivot.x,
|
|
||||||
cos(rotation) * (uv.y - pivot.y) - sin(rotation) * (uv.x - pivot.x) + pivot.y
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//clamp(, .0, 1.0
|
|
||||||
|
|
||||||
void fragment() {
|
|
||||||
COLOR *= vec4(.0,
|
|
||||||
texture(starlight_textures,fract(UV*2.0)).x * 2.0*pow(max(sin(TIME + 10.0 * texture(starlight_textures,UV).y), .0), 5.0),
|
|
||||||
texture(starlight_textures,
|
|
||||||
clamp(
|
|
||||||
UV / nebula_scale + drift_compensation + 1.0 *
|
|
||||||
texture(starlight_noise, rotateUV(
|
|
||||||
UV / nebula_scale + noise_strength * texture(starlight_noise, rotateUV(UV, -rotation_pivot, TIME*rotation_speed)).yz,
|
|
||||||
rotation_pivot, TIME*rotation_speed)
|
|
||||||
).xz,
|
|
||||||
.0, 1.0))
|
|
||||||
.z * nebula_brightness,
|
|
||||||
clamp(pow(COLOR.x * 2.5 - (texture(starlight_noise, UV*2.0+TIME*.02).x + 0.8), 1.5), .0, 1.0)
|
|
||||||
) * COLOR.w;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_k41g6"]
|
|
||||||
shader = SubResource("Shader_jirkf")
|
|
||||||
shader_parameter/nebula_brightness = 2.4
|
|
||||||
shader_parameter/nebula_scale = Vector2(1.3, 1.6)
|
|
||||||
shader_parameter/starlight_noise = ExtResource("1_t34p3")
|
|
||||||
shader_parameter/starlight_textures = ExtResource("2_s1yf2")
|
|
||||||
shader_parameter/rotation_speed = 0.02
|
|
||||||
shader_parameter/rotation_pivot = Vector2(0.8, 0.8)
|
|
||||||
shader_parameter/drift_compensation = Vector2(0.1, -0.2)
|
|
||||||
shader_parameter/noise_strength = 0.2
|
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_kt5p7"]
|
|
||||||
interpolation_color_space = 2
|
|
||||||
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0)
|
|
||||||
|
|
||||||
[sub_resource type="GradientTexture2D" id="GradientTexture2D_jirkf"]
|
|
||||||
gradient = SubResource("Gradient_kt5p7")
|
|
||||||
width = 2048
|
|
||||||
height = 1536
|
|
||||||
fill = 1
|
|
||||||
fill_from = Vector2(0.538462, 0.491453)
|
|
||||||
fill_to = Vector2(1.3, -0.3)
|
|
||||||
|
|
||||||
[sub_resource type="InputEventKey" id="InputEventKey_b7q2n"]
|
|
||||||
device = -1
|
|
||||||
physical_keycode = 87
|
|
||||||
unicode = 119
|
|
||||||
|
|
||||||
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_qhf78"]
|
|
||||||
device = -1
|
|
||||||
axis = 1
|
|
||||||
axis_value = -1.0
|
|
||||||
|
|
||||||
[sub_resource type="InputEventKey" id="InputEventKey_gatj6"]
|
|
||||||
device = -1
|
|
||||||
physical_keycode = 65
|
|
||||||
unicode = 97
|
|
||||||
|
|
||||||
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_ol51q"]
|
|
||||||
device = -1
|
|
||||||
axis_value = -1.0
|
|
||||||
|
|
||||||
[sub_resource type="InputEventKey" id="InputEventKey_2rqk2"]
|
|
||||||
device = -1
|
|
||||||
physical_keycode = 68
|
|
||||||
unicode = 100
|
|
||||||
|
|
||||||
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_w8m28"]
|
|
||||||
device = -1
|
|
||||||
axis_value = 1.0
|
|
||||||
|
|
||||||
[sub_resource type="InputEventKey" id="InputEventKey_kwpdx"]
|
|
||||||
device = -1
|
|
||||||
physical_keycode = 83
|
|
||||||
unicode = 115
|
|
||||||
|
|
||||||
[sub_resource type="InputEventJoypadMotion" id="InputEventJoypadMotion_2xua5"]
|
|
||||||
device = -1
|
|
||||||
axis = 1
|
|
||||||
axis_value = 1.0
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kt5p7"]
|
|
||||||
bg_color = Color(0.0288289, 0.0448641, 0.121276, 1)
|
|
||||||
border_width_left = 10
|
|
||||||
border_width_top = 10
|
|
||||||
border_width_right = 10
|
|
||||||
border_width_bottom = 10
|
|
||||||
border_color = Color(0.0288289, 0.0448641, 0.121276, 1)
|
|
||||||
corner_radius_top_left = 20
|
|
||||||
corner_radius_top_right = 20
|
|
||||||
corner_radius_bottom_right = 20
|
|
||||||
corner_radius_bottom_left = 20
|
|
||||||
expand_margin_left = 20.0
|
|
||||||
expand_margin_right = 20.0
|
|
||||||
|
|
||||||
[sub_resource type="Shader" id="Shader_gatj6"]
|
|
||||||
code = "shader_type canvas_item;
|
|
||||||
render_mode blend_premul_alpha;
|
|
||||||
|
|
||||||
uniform float nebula_brightness = 4;
|
|
||||||
uniform vec2 nebula_scale = vec2(1.5);
|
|
||||||
uniform sampler2D starlight_noise: repeat_enable;
|
|
||||||
uniform sampler2D starlight_textures;
|
|
||||||
uniform float rotation_speed = 0.02;
|
|
||||||
uniform vec2 rotation_pivot = vec2(.8);
|
|
||||||
uniform vec2 drift_compensation = vec2(0.1, -0.2);
|
|
||||||
uniform float noise_strength = 0.2;
|
|
||||||
|
|
||||||
// https://gist.github.com/ayamflow/c06bc0c8a64f985dd431bd0ac5b557cd
|
|
||||||
vec2 rotateUV(vec2 uv, vec2 pivot, float rotation)
|
|
||||||
{
|
|
||||||
return vec2(
|
|
||||||
cos(rotation) * (uv.x - pivot.x) + sin(rotation) * (uv.y - pivot.y) + pivot.x,
|
|
||||||
cos(rotation) * (uv.y - pivot.y) - sin(rotation) * (uv.x - pivot.x) + pivot.y
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//clamp(, .0, 1.0
|
|
||||||
|
|
||||||
void fragment() {
|
|
||||||
COLOR *= vec4(.0,
|
|
||||||
texture(starlight_textures,fract(UV*2.0)).x * 2.0*pow(max(sin(TIME + 10.0 * texture(starlight_textures,UV).y), .0), 5.0),
|
|
||||||
texture(starlight_textures,
|
|
||||||
clamp(
|
|
||||||
UV / nebula_scale + drift_compensation + 1.0 *
|
|
||||||
texture(starlight_noise, rotateUV(
|
|
||||||
UV / nebula_scale + noise_strength * texture(starlight_noise, rotateUV(UV, -rotation_pivot, TIME*rotation_speed)).yz,
|
|
||||||
rotation_pivot, TIME*rotation_speed)
|
|
||||||
).xz,
|
|
||||||
.0, 1.0))
|
|
||||||
.z * nebula_brightness,
|
|
||||||
clamp(pow(COLOR.x * 2.5 - (texture(starlight_noise, UV*2.0+TIME*.02).x + 0.8), 1.5), .0, 1.0)
|
|
||||||
) * COLOR.w;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ol51q"]
|
|
||||||
shader = SubResource("Shader_gatj6")
|
|
||||||
shader_parameter/nebula_brightness = 2.4
|
|
||||||
shader_parameter/nebula_scale = Vector2(1.3, 1.6)
|
|
||||||
shader_parameter/starlight_noise = ExtResource("1_t34p3")
|
|
||||||
shader_parameter/starlight_textures = ExtResource("2_s1yf2")
|
|
||||||
shader_parameter/rotation_speed = 0.02
|
|
||||||
shader_parameter/rotation_pivot = Vector2(0.8, 0.8)
|
|
||||||
shader_parameter/drift_compensation = Vector2(0.1, -0.2)
|
|
||||||
shader_parameter/noise_strength = 0.2
|
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_2rqk2"]
|
|
||||||
interpolation_color_space = 2
|
|
||||||
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 0)
|
|
||||||
|
|
||||||
[sub_resource type="GradientTexture2D" id="GradientTexture2D_w8m28"]
|
|
||||||
gradient = SubResource("Gradient_2rqk2")
|
|
||||||
width = 2048
|
|
||||||
height = 1536
|
|
||||||
fill = 1
|
|
||||||
fill_from = Vector2(0.538462, 0.491453)
|
|
||||||
fill_to = Vector2(1.3, -0.3)
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_kt5p7"]
|
|
||||||
resource_name = "ending"
|
|
||||||
length = 120.0
|
|
||||||
tracks/0/type = "audio"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath(".")
|
|
||||||
tracks/0/interp = 1
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"clips": [{
|
|
||||||
"end_offset": 0.0,
|
|
||||||
"start_offset": 8.34472,
|
|
||||||
"stream": ExtResource("14_k41g6")
|
|
||||||
}],
|
|
||||||
"times": PackedFloat32Array(0.517639)
|
|
||||||
}
|
|
||||||
tracks/0/use_blend = true
|
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_mivr6"]
|
|
||||||
_data = {
|
|
||||||
&"ending": SubResource("Animation_kt5p7")
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_kt5p7"]
|
|
||||||
script/source = "extends Label
|
|
||||||
|
|
||||||
func _ready() -> void:
|
|
||||||
if not OS.has_feature(\"debug\"):
|
|
||||||
hide()
|
|
||||||
|
|
||||||
func _process(_delta):
|
|
||||||
text = \"%d/%d\" % [Engine.get_frames_per_second(), Engine.max_fps]
|
|
||||||
"
|
|
||||||
|
|
||||||
[node name="DemoMain" type="Node3D"]
|
|
||||||
process_mode = 3
|
|
||||||
script = SubResource("GDScript_t34p3")
|
|
||||||
|
|
||||||
[node name="Room" type="Node3D" parent="."]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
|
|
||||||
[node name="Menu" type="Control" parent="."]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 3
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="Panel" type="Panel" parent="Menu"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="TextureRect3" type="TextureRect" parent="Menu/Panel"]
|
|
||||||
material = SubResource("ShaderMaterial_k41g6")
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 2073.0
|
|
||||||
offset_top = 1497.0
|
|
||||||
offset_right = 4353.0
|
|
||||||
offset_bottom = 3530.0
|
|
||||||
rotation = -3.14159
|
|
||||||
texture = SubResource("GradientTexture2D_jirkf")
|
|
||||||
|
|
||||||
[node name="TextureRect2" type="TextureRect" parent="Menu/Panel"]
|
|
||||||
visible = false
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 3
|
|
||||||
anchor_left = 1.0
|
|
||||||
anchor_top = 1.0
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
offset_left = -395.0
|
|
||||||
offset_top = -447.0
|
|
||||||
offset_right = 1011.0
|
|
||||||
offset_bottom = 959.0
|
|
||||||
grow_horizontal = 0
|
|
||||||
grow_vertical = 0
|
|
||||||
scale = Vector2(0.2, 0.2)
|
|
||||||
texture = ExtResource("2_ncfee")
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Menu/Panel/TextureRect2"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 7
|
|
||||||
anchor_left = 0.5
|
|
||||||
anchor_top = 1.0
|
|
||||||
anchor_right = 0.5
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
offset_left = -988.0
|
|
||||||
offset_top = 99.0002
|
|
||||||
offset_right = -590.0
|
|
||||||
offset_bottom = 187.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 0
|
|
||||||
scale = Vector2(5, 5)
|
|
||||||
text = "*Als Messe-Demo geprüft. Entspricht angestrebtem finalen Rating."
|
|
||||||
horizontal_alignment = 1
|
|
||||||
autowrap_mode = 2
|
|
||||||
|
|
||||||
[node name="VBoxContainer2" type="VBoxContainer" parent="Menu"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 8
|
|
||||||
anchor_left = 0.5
|
|
||||||
anchor_top = 0.5
|
|
||||||
anchor_right = 0.5
|
|
||||||
anchor_bottom = 0.5
|
|
||||||
offset_left = -256.0
|
|
||||||
offset_top = -281.5
|
|
||||||
offset_right = 256.0
|
|
||||||
offset_bottom = 281.5
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="Menu/VBoxContainer2"]
|
|
||||||
custom_minimum_size = Vector2(512, 512)
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_horizontal = 4
|
|
||||||
size_flags_vertical = 4
|
|
||||||
texture = ExtResource("1_61qpo")
|
|
||||||
expand_mode = 2
|
|
||||||
|
|
||||||
[node name="PressStart" type="Button" parent="Menu/VBoxContainer2"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
clip_contents = true
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_horizontal = 4
|
|
||||||
theme_type_variation = &"H1Button"
|
|
||||||
text = "Start the Demo!"
|
|
||||||
script = ExtResource("6_qhf78")
|
|
||||||
metadata/_custom_type_script = "uid://cxton1pffwxk4"
|
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="Menu"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 3
|
|
||||||
anchor_left = 1.0
|
|
||||||
anchor_top = 1.0
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
offset_left = -392.0
|
|
||||||
offset_top = -310.0
|
|
||||||
offset_right = -78.0
|
|
||||||
offset_bottom = -92.0
|
|
||||||
grow_horizontal = 0
|
|
||||||
grow_vertical = 0
|
|
||||||
|
|
||||||
[node name="TextureRect2" type="TextureRect" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_horizontal = 4
|
|
||||||
size_flags_vertical = 4
|
|
||||||
texture = ExtResource("5_b7q2n")
|
|
||||||
expand_mode = 1
|
|
||||||
stretch_mode = 4
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_type_variation = &"HeaderMedium"
|
|
||||||
text = "Accessibility"
|
|
||||||
|
|
||||||
[node name="CNBox" type="CheckBox" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "show Content Notes"
|
|
||||||
|
|
||||||
[node name="MotionBox" type="CheckBox" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "reduce motion and flickering"
|
|
||||||
|
|
||||||
[node name="A11Y" type="Button" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "More Options"
|
|
||||||
|
|
||||||
[node name="Label3" type="Label" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_type_variation = &"HeaderMedium"
|
|
||||||
text = "Spoken Text"
|
|
||||||
|
|
||||||
[node name="SpeechButton" type="OptionButton" parent="Menu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
selected = 0
|
|
||||||
item_count = 2
|
|
||||||
popup/item_0/text = "englisch"
|
|
||||||
popup/item_0/id = 0
|
|
||||||
popup/item_1/text = "deutsch"
|
|
||||||
popup/item_1/id = 1
|
|
||||||
|
|
||||||
[node name="Label2" type="Label" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_type_variation = &"HeaderMedium"
|
|
||||||
text = "Written Text"
|
|
||||||
|
|
||||||
[node name="TextButton" type="OptionButton" parent="Menu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
selected = 0
|
|
||||||
item_count = 2
|
|
||||||
popup/item_0/text = "englisch"
|
|
||||||
popup/item_0/id = 1
|
|
||||||
popup/item_1/text = "deutsch"
|
|
||||||
popup/item_1/id = 2
|
|
||||||
|
|
||||||
[node name="Button" type="Button" parent="Menu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Privacy Info"
|
|
||||||
|
|
||||||
[node name="Control" type="Control" parent="Menu"]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 2
|
|
||||||
anchor_top = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
offset_top = -40.0
|
|
||||||
offset_right = 40.0
|
|
||||||
grow_vertical = 0
|
|
||||||
|
|
||||||
[node name="ActionPrompt" type="TextureRect" parent="Menu/Control"]
|
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 134.0
|
|
||||||
offset_top = -282.0
|
|
||||||
offset_right = 234.0
|
|
||||||
offset_bottom = -182.0
|
|
||||||
texture = ExtResource("4_8e30h")
|
|
||||||
stretch_mode = 5
|
|
||||||
script = ExtResource("5_6w5b4")
|
|
||||||
action = "player_forwards"
|
|
||||||
icon = 4
|
|
||||||
events = Array[InputEvent]([SubResource("InputEventKey_b7q2n"), SubResource("InputEventJoypadMotion_qhf78")])
|
|
||||||
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
|
|
||||||
|
|
||||||
[node name="ActionPrompt2" type="TextureRect" parent="Menu/Control"]
|
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 70.0
|
|
||||||
offset_top = -187.0
|
|
||||||
offset_right = 170.0
|
|
||||||
offset_bottom = -87.0
|
|
||||||
texture = ExtResource("7_g425y")
|
|
||||||
stretch_mode = 5
|
|
||||||
script = ExtResource("5_6w5b4")
|
|
||||||
action = "player_left"
|
|
||||||
icon = 4
|
|
||||||
events = Array[InputEvent]([SubResource("InputEventKey_gatj6"), SubResource("InputEventJoypadMotion_ol51q")])
|
|
||||||
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
|
|
||||||
|
|
||||||
[node name="ActionPrompt4" type="TextureRect" parent="Menu/Control"]
|
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 247.0
|
|
||||||
offset_top = -187.0
|
|
||||||
offset_right = 347.0
|
|
||||||
offset_bottom = -87.0
|
|
||||||
texture = ExtResource("8_kj67n")
|
|
||||||
stretch_mode = 5
|
|
||||||
script = ExtResource("5_6w5b4")
|
|
||||||
action = "player_right"
|
|
||||||
icon = 4
|
|
||||||
events = Array[InputEvent]([SubResource("InputEventKey_2rqk2"), SubResource("InputEventJoypadMotion_w8m28")])
|
|
||||||
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
|
|
||||||
|
|
||||||
[node name="ActionPrompt3" type="TextureRect" parent="Menu/Control"]
|
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 158.0
|
|
||||||
offset_top = -187.0
|
|
||||||
offset_right = 258.0
|
|
||||||
offset_bottom = -87.0
|
|
||||||
texture = ExtResource("9_xo70c")
|
|
||||||
stretch_mode = 5
|
|
||||||
script = ExtResource("5_6w5b4")
|
|
||||||
action = "player_backwards"
|
|
||||||
icon = 4
|
|
||||||
events = Array[InputEvent]([SubResource("InputEventKey_kwpdx"), SubResource("InputEventJoypadMotion_2xua5")])
|
|
||||||
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="Menu/Control"]
|
|
||||||
layout_mode = 0
|
|
||||||
offset_left = 72.0
|
|
||||||
offset_top = -89.0
|
|
||||||
offset_right = 374.0
|
|
||||||
offset_bottom = -40.0
|
|
||||||
theme_type_variation = &"HeaderMedium"
|
|
||||||
text = "Move trough the room"
|
|
||||||
|
|
||||||
[node name="PrivacyPanel" type="PanelContainer" parent="Menu"]
|
|
||||||
visible = false
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 8
|
|
||||||
anchor_left = 0.5
|
|
||||||
anchor_top = 0.5
|
|
||||||
anchor_right = 0.5
|
|
||||||
anchor_bottom = 0.5
|
|
||||||
offset_left = -701.5
|
|
||||||
offset_top = -464.5
|
|
||||||
offset_right = 701.5
|
|
||||||
offset_bottom = 464.5
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_kt5p7")
|
|
||||||
|
|
||||||
[node name="PrivacyAndDataProtection" parent="Menu/PrivacyPanel" instance=ExtResource("10_jirkf")]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="Video Settings" parent="Menu" instance=ExtResource("11_mivr6")]
|
|
||||||
layout_mode = 1
|
|
||||||
offset_left = 2330.0
|
|
||||||
offset_top = 96.0
|
|
||||||
offset_right = 2330.0
|
|
||||||
offset_bottom = 96.0
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="."]
|
|
||||||
visible = false
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
mouse_filter = 2
|
|
||||||
|
|
||||||
[node name="CardBurner" parent="." instance=ExtResource("10_kj67n")]
|
|
||||||
visible = false
|
|
||||||
|
|
||||||
[node name="PauseContainer" type="CenterContainer" parent="."]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="TextureRect" type="TextureRect" parent="PauseContainer"]
|
|
||||||
material = SubResource("ShaderMaterial_ol51q")
|
|
||||||
layout_mode = 2
|
|
||||||
texture = SubResource("GradientTexture2D_w8m28")
|
|
||||||
|
|
||||||
[node name="PauseMenu" type="PanelContainer" parent="PauseContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
script = ExtResource("10_g425y")
|
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="PauseContainer/PauseMenu"]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_type_variation = &"HeaderLarge"
|
|
||||||
text = "Game Paused"
|
|
||||||
|
|
||||||
[node name="ResumeButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Resume"
|
|
||||||
|
|
||||||
[node name="A11Y2" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Accessibility"
|
|
||||||
|
|
||||||
[node name="BugButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
script = ExtResource("11_kj67n")
|
|
||||||
metadata/_custom_type_script = "uid://sa15wakvpj2e"
|
|
||||||
|
|
||||||
[node name="ToMenuButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Return to Menu"
|
|
||||||
|
|
||||||
[node name="ToSettingsButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Open Settings"
|
|
||||||
|
|
||||||
[node name="ToDesktopButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Quit to Desktop"
|
|
||||||
|
|
||||||
[node name="HSeparator" type="HSeparator" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
custom_minimum_size = Vector2(0, 20)
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="FindHelplineButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Find Help-Lines"
|
|
||||||
|
|
||||||
[node name="Label2" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "opens findahelpline.com"
|
|
||||||
horizontal_alignment = 1
|
|
||||||
|
|
||||||
[node name="SkipStoryButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Skip this Story"
|
|
||||||
|
|
||||||
[node name="ending" parent="." instance=ExtResource("13_xo70c")]
|
|
||||||
visible = false
|
|
||||||
mouse_filter = 2
|
|
||||||
|
|
||||||
[node name="AccessibilityContainer" type="CenterContainer" parent="."]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
anchors_preset = 15
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
|
|
||||||
[node name="AccessibilityPanel" type="PanelContainer" parent="AccessibilityContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_kt5p7")
|
|
||||||
|
|
||||||
[node name="Accessibility" parent="AccessibilityContainer/AccessibilityPanel" instance=ExtResource("11_kt5p7")]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
|
||||||
|
|
||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="AudioStreamPlayer"]
|
|
||||||
libraries = {
|
|
||||||
&"": SubResource("AnimationLibrary_mivr6")
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="FPSLabel" type="Label" parent="."]
|
|
||||||
offset_right = 40.0
|
|
||||||
offset_bottom = 35.0
|
|
||||||
script = SubResource("GDScript_kt5p7")
|
|
||||||
|
|
||||||
[connection signal="pressed" from="Menu/VBoxContainer2/PressStart" to="." method="_on_start_button_pressed"]
|
|
||||||
[connection signal="toggled" from="Menu/VBoxContainer/CNBox" to="." method="_on_cn_box_toggled"]
|
|
||||||
[connection signal="toggled" from="Menu/VBoxContainer/MotionBox" to="." method="_on_motion_box_toggled"]
|
|
||||||
[connection signal="pressed" from="Menu/VBoxContainer/A11Y" to="." method="show_accessibility_settings"]
|
|
||||||
[connection signal="item_selected" from="Menu/VBoxContainer/SpeechButton" to="." method="_on_speech_button_item_selected"]
|
|
||||||
[connection signal="item_selected" from="Menu/VBoxContainer/TextButton" to="." method="_on_text_button_item_selected"]
|
|
||||||
[connection signal="pressed" from="Menu/VBoxContainer/Button" to="Menu/PrivacyPanel" method="show"]
|
|
||||||
[connection signal="leave_stage" from="Menu/PrivacyPanel/PrivacyAndDataProtection" to="Menu/PrivacyPanel" method="hide"]
|
|
||||||
[connection signal="pressed" from="PauseContainer/PauseMenu/VBoxContainer/A11Y2" to="." method="show_accessibility_settings"]
|
|
||||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 40 KiB |
|
|
@ -1,43 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://c6r2y18qlqsvh"
|
|
||||||
path="res://.godot/imported/demo-warning.svg-5bc85c9c263d3931745057454217e7fa.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://demo-warning.svg"
|
|
||||||
dest_files=["res://.godot/imported/demo-warning.svg-5bc85c9c263d3931745057454217e7fa.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=false
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
process/fix_alpha_border=true
|
|
||||||
process/premult_alpha=false
|
|
||||||
process/normal_map_invert_y=false
|
|
||||||
process/hdr_as_srgb=false
|
|
||||||
process/hdr_clamp_exposure=false
|
|
||||||
process/size_limit=0
|
|
||||||
detect_3d/compress_to=1
|
|
||||||
svg/scale=1.0
|
|
||||||
editor/scale_with_editor_scale=false
|
|
||||||
editor/convert_colors_with_editor_theme=false
|
|
||||||
|
|
@ -34,7 +34,7 @@ func _process(delta: float) -> void:
|
||||||
_on_beat()
|
_on_beat()
|
||||||
_last_beat_timing = sync_to.get_playback_position()
|
_last_beat_timing = sync_to.get_playback_position()
|
||||||
else:
|
else:
|
||||||
if not Engine.is_editor_hint(): print(time_left)
|
if not Engine.is_editor_hint(): print_debug(time_left)
|
||||||
|
|
||||||
func start(time_sec: float = 0, starting_beat: int = 0, starting_bar: int = 0, sync_to_playback:AudioStreamPlayback = null) -> void:
|
func start(time_sec: float = 0, starting_beat: int = 0, starting_bar: int = 0, sync_to_playback:AudioStreamPlayback = null) -> void:
|
||||||
if starting_bar == 0 and starting_beat > 0: starting_bar = starting_beat / beats_per_bar
|
if starting_bar == 0 and starting_beat > 0: starting_bar = starting_beat / beats_per_bar
|
||||||
|
|
|
||||||
|
|
@ -26,4 +26,4 @@ func create_bug_report():
|
||||||
DisplayServer.clipboard_set(debug_text)
|
DisplayServer.clipboard_set(debug_text)
|
||||||
|
|
||||||
|
|
||||||
#print("mailto:support@polynormal.games?subject=Frame%20of%20Mind%20Demo%20-%20Bug%20Report&body=" + debug_text)
|
#print_debug("mailto:support@polynormal.games?subject=Frame%20of%20Mind%20Demo%20-%20Bug%20Report&body=" + debug_text)
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ fill_from = Vector2(0.499433, 0.470085)
|
||||||
fill_to = Vector2(0.23814, 0.858974)
|
fill_to = Vector2(0.23814, 0.858974)
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_2ph0d"]
|
[sub_resource type="GDScript" id="GDScript_2ph0d"]
|
||||||
script/source = "@tool
|
script/source = "
|
||||||
extends Sprite2D
|
extends Sprite2D
|
||||||
|
|
||||||
var flame_progression: float = 0
|
var flame_progression: float = 0
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ func _process(_delta):
|
||||||
|
|
||||||
func _input(event: InputEvent) -> void:
|
func _input(event: InputEvent) -> void:
|
||||||
if event is InputEventAction:
|
if event is InputEventAction:
|
||||||
print(event.action)
|
print_debug(event.action)
|
||||||
|
|
||||||
#func _unhandled_input(event):
|
#func _unhandled_input(event):
|
||||||
# viewport.push_input(event)
|
# viewport.push_input(event)
|
||||||
|
|
@ -38,7 +38,7 @@ func _on_input_event(_camera: Camera3D, event: InputEvent, pos: Vector3, _normal
|
||||||
viewport.push_input(e)
|
viewport.push_input(e)
|
||||||
|
|
||||||
func _on_button_pressed():
|
func _on_button_pressed():
|
||||||
print("Button pressed")
|
print_debug("Button pressed")
|
||||||
|
|
||||||
func _on_line_edit_text_submitted(new_text):
|
func _on_line_edit_text_submitted(new_text):
|
||||||
print("Text submitted: ", new_text)
|
print_debug("Text submitted: ", new_text)
|
||||||
|
|
|
||||||
|
|
@ -118,22 +118,22 @@ static func get_obscure_name(card_name: StringName):
|
||||||
else:
|
else:
|
||||||
return card_name
|
return card_name
|
||||||
|
|
||||||
func arrange(cards: Array[Card], rect: Rect2, obstacles: Array[Area2D]) -> Array[Card]:
|
func arrange(cards: Array[Card], rect: Rect2, _obstacles: Array[Area2D]) -> Array[Card]:
|
||||||
var total_cards = cards.size()
|
#var total_cards := cards.size()
|
||||||
|
|
||||||
var x:int = 0
|
var x:int = 0
|
||||||
var y:int = 0
|
var y:int = 0
|
||||||
var i:int = 0
|
var i:int = 0
|
||||||
var max:int = cards.size()
|
var maximum:int = cards.size()
|
||||||
var grid: int = ceil(sqrt(max))
|
var grid: int = ceil(sqrt(maximum))
|
||||||
var diameter:float = cards[0].diameter
|
var diameter:float = cards[0].diameter
|
||||||
|
|
||||||
var r_cards: Array[Card] = cards.duplicate()
|
var r_cards: Array[Card] = cards.duplicate()
|
||||||
r_cards.shuffle()
|
r_cards.shuffle()
|
||||||
|
|
||||||
while i < max:
|
while i < maximum:
|
||||||
while x < grid and i < max:
|
while x < grid and i < maximum:
|
||||||
while y < ceil(sqrt(max)) and i < max:
|
while y < ceil(sqrt(maximum)) and i < maximum:
|
||||||
r_cards[i].position = rect.size / Vector2(y, x) * (1.0 / (rect.size.x * diameter) ) + rect.position + Vector2(randf_range(diameter/2+5, diameter-5), randf_range(diameter/2+5, diameter-5))
|
r_cards[i].position = rect.size / Vector2(y, x) * (1.0 / (rect.size.x * diameter) ) + rect.position + Vector2(randf_range(diameter/2+5, diameter-5), randf_range(diameter/2+5, diameter-5))
|
||||||
i += 1
|
i += 1
|
||||||
y += 1
|
y += 1
|
||||||
|
|
@ -204,8 +204,8 @@ static func get_cards_by_name_array(names: Array[StringName]) -> Dictionary:
|
||||||
static func create_from_id(id:StringName) -> Area2D:
|
static func create_from_id(id:StringName) -> Area2D:
|
||||||
var parsed: PackedStringArray = id.rsplit(".")
|
var parsed: PackedStringArray = id.rsplit(".")
|
||||||
|
|
||||||
var helper = card_id_reference
|
#var helper := card_id_reference
|
||||||
var keys = card_id_reference.keys()
|
#var keys := card_id_reference.keys()
|
||||||
|
|
||||||
if card_id_reference.values().has(id):
|
if card_id_reference.values().has(id):
|
||||||
return Card.new(parsed[1], id)
|
return Card.new(parsed[1], id)
|
||||||
|
|
@ -215,24 +215,24 @@ static func create_from_id(id:StringName) -> Area2D:
|
||||||
push_error("Attempted to create Card or Sticky from non-existent ID!")
|
push_error("Attempted to create Card or Sticky from non-existent ID!")
|
||||||
return null
|
return null
|
||||||
|
|
||||||
static func create_dev_board(parent: Control, rect: Rect2) -> void:
|
static func create_dev_board(parent: Control, _rect: Rect2) -> void:
|
||||||
var scroll_container = ScrollContainer.new()
|
var scroll_container := ScrollContainer.new()
|
||||||
var panel = Panel.new()
|
var panel := Panel.new()
|
||||||
|
|
||||||
parent.add_child(scroll_container)
|
parent.add_child(scroll_container)
|
||||||
scroll_container.add_child(panel)
|
scroll_container.add_child(panel)
|
||||||
|
|
||||||
for x in range(source_dicts.size()):
|
for x in range(source_dicts.size()):
|
||||||
var sub_parent = Panel.new()
|
var sub_parent := Panel.new()
|
||||||
sub_parent.position = Vector2( 128 + 256*x , 0)
|
sub_parent.position = Vector2( 128 + 256*x , 0)
|
||||||
panel.add_child(sub_parent, false, Node.INTERNAL_MODE_BACK)
|
panel.add_child(sub_parent, false, Node.INTERNAL_MODE_BACK)
|
||||||
var y = 1
|
var y := 1
|
||||||
for card_name in source_dicts[x].keys():
|
for card_name in source_dicts[x].keys():
|
||||||
var card:Card = create_from_id(card_id_reference[card_name])
|
var card:Card = create_from_id(card_id_reference[card_name])
|
||||||
sub_parent.add_child(card, false, Node.INTERNAL_MODE_BACK)
|
sub_parent.add_child(card, false, Node.INTERNAL_MODE_BACK)
|
||||||
card.position = Vector2(0, card.diameter * y - card.diameter/2)
|
card.position = Vector2(0, card.diameter * y - card.diameter/2)
|
||||||
|
|
||||||
var z = 0
|
var z := 0
|
||||||
for sticky_name in get_child_names_of(card_name):
|
for sticky_name in get_child_names_of(card_name):
|
||||||
var sticky: StickyNote = create_from_id(sticky_id_reference[sticky_name])
|
var sticky: StickyNote = create_from_id(sticky_id_reference[sticky_name])
|
||||||
card.add_child(sticky, false, Node.INTERNAL_MODE_BACK)
|
card.add_child(sticky, false, Node.INTERNAL_MODE_BACK)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
@tool
|
|
||||||
extends TextureRect
|
extends TextureRect
|
||||||
|
|
||||||
@export var textures: Dictionary[String, Texture] = {}
|
@export var textures: Dictionary[String, Texture] = {}
|
||||||
|
|
@ -13,7 +12,7 @@ func _get_configuration_warnings() -> PackedStringArray:
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
State.settings_changed.connect(update_img)
|
State.settings_changed.connect(update_img)
|
||||||
update_img()
|
update_img()
|
||||||
|
|
||||||
func update_img() -> void:
|
func update_img() -> void:
|
||||||
if textures.keys().has(TranslationServer.get_locale()):
|
if textures.keys().has(TranslationServer.get_locale()):
|
||||||
texture = textures[TranslationServer.get_locale()]
|
texture = textures[TranslationServer.get_locale()]
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ func _ready() -> void:
|
||||||
stream = AudioStreamPolyphonic.new()
|
stream = AudioStreamPolyphonic.new()
|
||||||
|
|
||||||
func play(from_position: float = 0.0):
|
func play(from_position: float = 0.0):
|
||||||
print("got called")
|
print_debug("got called")
|
||||||
super.play(from_position)
|
super.play(from_position)
|
||||||
self._play(from_position)
|
self._play(from_position)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
class_name RoomTemplate extends Node3D
|
class_name RoomTemplate extends Node3D
|
||||||
|
|
||||||
var initialised: bool = false
|
var initialised: bool = false
|
||||||
var id: State.rooms
|
var id: State.rooms = State.rooms.NULL
|
||||||
|
|
||||||
var has_stage: bool:
|
var has_stage: bool:
|
||||||
set(value):
|
set(value):
|
||||||
|
|
@ -10,12 +10,31 @@ var has_stage: bool:
|
||||||
start_room()
|
start_room()
|
||||||
|
|
||||||
|
|
||||||
@export var save_game:SaveGame = null
|
var save_game:SaveGame = null
|
||||||
|
|
||||||
|
signal proceed(next_scene_path: String)
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
State.room = self
|
||||||
|
State.current_room = id
|
||||||
|
|
||||||
|
func load():
|
||||||
|
# Override this function to load the state of the chapter from State.save_game
|
||||||
|
pass
|
||||||
|
|
||||||
|
func play() -> String:
|
||||||
|
get_ready()
|
||||||
|
start_room()
|
||||||
|
return await proceed
|
||||||
|
|
||||||
|
|
||||||
|
func get_ready():
|
||||||
|
pass
|
||||||
|
|
||||||
func start_room():
|
func start_room():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func pull_save_state(save: SaveGame) -> void:
|
func pull_save_state(_save: SaveGame) -> void:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func save_room():
|
func save_room():
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,23 @@
|
||||||
@tool
|
|
||||||
class_name SaveGame extends Resource
|
class_name SaveGame extends Resource
|
||||||
|
|
||||||
var _is_initialised: bool = false
|
var _is_initialised: bool = false
|
||||||
|
|
||||||
|
var current_room_path: String:
|
||||||
|
get():
|
||||||
|
return Main.room_paths[current_room]
|
||||||
|
|
||||||
@export var filepath: String:
|
@export var filepath: String:
|
||||||
set(value):
|
set(value):
|
||||||
|
print_debug("Savegame: setting filepath: %s" % value)
|
||||||
filepath = value
|
filepath = value
|
||||||
if _is_initialised:
|
if _is_initialised:
|
||||||
read_save_file()
|
|
||||||
changed.emit()
|
changed.emit()
|
||||||
@export var unique_save_name: String = "frame_of_mind_%s_%s" % [Time.get_date_string_from_system(), Time.get_time_string_from_system().replace(":", "-")]:
|
|
||||||
set(value):
|
@export var unique_save_name: String = "frame_of_mind_%s_%s" % [Time.get_date_string_from_system(), Time.get_time_string_from_system().replace(":", "-")] + "-" + str(randi()):
|
||||||
|
set(value):
|
||||||
unique_save_name = value
|
unique_save_name = value
|
||||||
if _is_initialised: changed.emit()
|
if _is_initialised: changed.emit()
|
||||||
|
|
||||||
@export var current_room: State.rooms = State.rooms.NULL:
|
@export var current_room: State.rooms = State.rooms.NULL:
|
||||||
set(value):
|
set(value):
|
||||||
current_room = value
|
current_room = value
|
||||||
|
|
@ -70,26 +75,27 @@ func _init(initial_filepath = "") -> void:
|
||||||
else:
|
else:
|
||||||
filepath = initial_filepath
|
filepath = initial_filepath
|
||||||
unique_save_name = initial_filepath.get_file()
|
unique_save_name = initial_filepath.get_file()
|
||||||
|
|
||||||
read_save_file()
|
read_save_file()
|
||||||
_is_initialised = true
|
_is_initialised = true
|
||||||
|
|
||||||
|
func read_save_file() -> void:
|
||||||
if not DirAccess.dir_exists_absolute(filepath.get_base_dir()):
|
if not DirAccess.dir_exists_absolute(filepath.get_base_dir()):
|
||||||
DirAccess.make_dir_absolute(filepath.get_base_dir())
|
DirAccess.make_dir_absolute(filepath.get_base_dir())
|
||||||
|
|
||||||
func read_save_file():
|
|
||||||
if filepath == "DEBUG":
|
if filepath == "DEBUG":
|
||||||
if OS.has_feature("debug") or OS.has_feature("demo"):
|
if OS.has_feature("debug") or OS.has_feature("demo"):
|
||||||
push_warning("Created DEBUG savegame. Progress will not be stored!")
|
push_warning("Created DEBUG savegame. Progress will not be stored!")
|
||||||
else:
|
else:
|
||||||
print(get_stack())
|
print_debug(get_stack())
|
||||||
push_error("Created DEBUG savegame outside of demo or debug environment. This is unintentional and will lead to data loss. Please contact support and attatch the stack above.")
|
push_error("Created DEBUG savegame outside of demo or debug environment. This is unintentional and will lead to data loss. Please contact support and attatch the stack above.")
|
||||||
#TODO maybe cause a crash here?
|
#TODO maybe cause a crash here?
|
||||||
return
|
return
|
||||||
|
|
||||||
if FileAccess.file_exists(filepath):
|
if FileAccess.file_exists(filepath):
|
||||||
print("Opening existing Savegame: %s" % filepath)
|
print_debug("Savegame: Reading from: %s" % filepath)
|
||||||
var file = FileAccess.open(filepath, FileAccess.READ)
|
var file := FileAccess.open(filepath, FileAccess.READ)
|
||||||
var raw_json = FileAccess.get_file_as_string(filepath)
|
var raw_json := FileAccess.get_file_as_string(filepath)
|
||||||
file.close()
|
file.close()
|
||||||
var parsed: Dictionary = JSON.parse_string(raw_json)
|
var parsed: Dictionary = JSON.parse_string(raw_json)
|
||||||
|
|
||||||
|
|
@ -98,7 +104,7 @@ func read_save_file():
|
||||||
if FileAccess.file_exists("%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name]):
|
if FileAccess.file_exists("%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name]):
|
||||||
tmp_img = Image.load_from_file("%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name])
|
tmp_img = Image.load_from_file("%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name])
|
||||||
|
|
||||||
var are_types_valid = (
|
var are_types_valid := (
|
||||||
parsed["unique_save_name"] is String and
|
parsed["unique_save_name"] is String and
|
||||||
parsed["current_room"] is float and
|
parsed["current_room"] is float and
|
||||||
parsed["mementos_complete"] is float and
|
parsed["mementos_complete"] is float and
|
||||||
|
|
@ -147,7 +153,7 @@ func read_save_file():
|
||||||
thumbnail = ImageTexture.create_from_image(tmp_img)
|
thumbnail = ImageTexture.create_from_image(tmp_img)
|
||||||
is_empty = false
|
is_empty = false
|
||||||
else:
|
else:
|
||||||
print("Creating empty Savegame: %s" % filepath)
|
print_debug("Savegame: Creating (in memory) for path: %s" % filepath)
|
||||||
is_valid = true
|
is_valid = true
|
||||||
|
|
||||||
func _get_save_dict() -> Dictionary:
|
func _get_save_dict() -> Dictionary:
|
||||||
|
|
@ -163,30 +169,32 @@ func _get_save_dict() -> Dictionary:
|
||||||
"is_demo": is_demo
|
"is_demo": is_demo
|
||||||
}
|
}
|
||||||
|
|
||||||
func save_to_file(current_screen: Texture):
|
func save_to_file(screen_shot: Texture) -> void:
|
||||||
|
print_debug("Savegame: Saving to file: %s" % filepath)
|
||||||
|
|
||||||
if filepath == "DEBUG":
|
if filepath == "DEBUG":
|
||||||
push_warning("Saving DEBUG save skipped. This is intentional.")
|
push_warning("Savegame: Saving DEBUG save skipped. This is intentional.")
|
||||||
return
|
return
|
||||||
|
|
||||||
if current_room == State.rooms.NULL:
|
if current_room == State.rooms.NULL:
|
||||||
print("Not saving empty savegame.")
|
push_warning("Savegame: Not saving empty savegame.")
|
||||||
return
|
return
|
||||||
|
|
||||||
last_saved = Time.get_unix_time_from_system()
|
last_saved = int(Time.get_unix_time_from_system())
|
||||||
var thumbnail_image: Image = current_screen.get_image()
|
var thumbnail_image: Image = screen_shot.get_image()
|
||||||
thumbnail_image.convert(Image.Format.FORMAT_RGB8)
|
thumbnail_image.convert(Image.Format.FORMAT_RGB8)
|
||||||
thumbnail_image.linear_to_srgb()
|
thumbnail_image.linear_to_srgb()
|
||||||
thumbnail_image.resize(384, 261, Image.INTERPOLATE_LANCZOS) # nonexistent call in ViewportTexturew
|
thumbnail_image.resize(384, 216, Image.INTERPOLATE_LANCZOS) # nonexistent call in ViewportTexture
|
||||||
|
thumbnail_image.crop(384, 216)
|
||||||
|
|
||||||
var thumbnail_path: String = "%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name]
|
var save_dir := DirAccess.open(filepath.get_base_dir())
|
||||||
var save_dir = DirAccess.open(filepath.get_base_dir())
|
|
||||||
if not save_dir.dir_exists("thumbnails"):
|
if not save_dir.dir_exists("thumbnails"):
|
||||||
save_dir.make_dir("thumbnails")
|
save_dir.make_dir("thumbnails")
|
||||||
|
|
||||||
thumbnail_image.save_png("%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name])
|
var thumbnail_path: String = "%s/thumbnails/%s.png" % [filepath.get_base_dir(), unique_save_name]
|
||||||
#thumbnail_image.save_png("%s/test.png" % State.user_saves_path)
|
thumbnail_image.save_png(thumbnail_path)
|
||||||
print(filepath.get_base_dir())
|
print_debug(filepath.get_base_dir())
|
||||||
var file = FileAccess.open(filepath, FileAccess.WRITE)
|
var file := FileAccess.open(filepath, FileAccess.WRITE)
|
||||||
file.store_string(JSON.stringify(_get_save_dict()))
|
file.store_string(JSON.stringify(_get_save_dict()))
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
|
|
@ -213,14 +221,12 @@ func validate_board_state() -> bool:
|
||||||
push_error("Save %s could not be parsed: Corrupted Cards." % unique_save_name)
|
push_error("Save %s could not be parsed: Corrupted Cards." % unique_save_name)
|
||||||
return false
|
return false
|
||||||
for sticky in board_state.stickies.values():
|
for sticky in board_state.stickies.values():
|
||||||
if not (sticky is int or sticky is Vector2 or board_state.cards.keys().has(sticky)):
|
if not (sticky is int or sticky is Vector2 or sticky is float or board_state.cards.keys().has(sticky)):
|
||||||
push_error("Save %s could not be parsed: Corrupted Sticky Notes.")
|
push_error("Save %s could not be parsed: Corrupted Sticky Notes.")
|
||||||
return false
|
return false
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
||||||
return false
|
return false
|
||||||
|
|
||||||
func parse_vec_from_string(string: String) -> Vector2:
|
func parse_vec_from_string(string: String) -> Vector2:
|
||||||
var string_array = string.replace("(", "").replace(")", "").split(", ")
|
var string_array := string.replace("(", "").replace(")", "").split(", ")
|
||||||
return Vector2(float(string_array[0]), float(string_array[1]))
|
return Vector2(float(string_array[0]), float(string_array[1]))
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,18 @@
|
||||||
class_name SettingsPopup extends PanelContainer
|
class_name SettingsPopup extends PanelContainer
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
get_parent_control().visible = false
|
||||||
|
|
||||||
func show_settings(id: int = -1):
|
func show_settings(id: int = -1):
|
||||||
|
get_parent_control().visible = true
|
||||||
$AnimationPlayer.play("reveal")
|
$AnimationPlayer.play("reveal")
|
||||||
|
await $AnimationPlayer.animation_finished
|
||||||
if not id == -1:
|
if not id == -1:
|
||||||
$TabContainer.current_tab = id
|
$TabContainer.current_tab = id
|
||||||
State.pass_stage_to($TabContainer)
|
State.pass_stage_to($TabContainer)
|
||||||
|
|
||||||
func vanish():
|
func vanish():
|
||||||
$AnimationPlayer.play("vanish")
|
|
||||||
State.save_settings()
|
State.save_settings()
|
||||||
|
$AnimationPlayer.play("vanish")
|
||||||
|
await $AnimationPlayer.animation_finished
|
||||||
|
get_parent_control().visible = false
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[gd_scene load_steps=12 format=3 uid="uid://d0qqluenght6a"]
|
[gd_scene load_steps=12 format=3 uid="uid://d0qqluenght6a"]
|
||||||
|
|
||||||
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro_scene/shaders/stars.gdshader" id="1_8nej7"]
|
[ext_resource type="Shader" uid="uid://d324neibxpomg" path="res://base-environments/intro/shaders/stars.gdshader" id="1_8nej7"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro_scene/textures/sky_textures_2.png" id="2_qoi7m"]
|
[ext_resource type="Texture2D" uid="uid://dabnlcnuticww" path="res://base-environments/intro/textures/sky_textures_2.png" id="2_qoi7m"]
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_d5lk6"]
|
[sub_resource type="Gradient" id="Gradient_d5lk6"]
|
||||||
interpolation_mode = 2
|
interpolation_mode = 2
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ func _process(delta):
|
||||||
|
|
||||||
|
|
||||||
func _on_scene_actors_animation_finished(anim_name):
|
func _on_scene_actors_animation_finished(anim_name):
|
||||||
print(\"yay\")
|
print_debug(\"yay\")
|
||||||
"
|
"
|
||||||
|
|
||||||
[sub_resource type="Shader" id="Shader_tcvor"]
|
[sub_resource type="Shader" id="Shader_tcvor"]
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,10 @@ func _on_pressed() -> void:
|
||||||
script/source = "extends MenuButton
|
script/source = "extends MenuButton
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
mouse_entered.connect(func(id): print(\"mouse_entered\"))
|
mouse_entered.connect(func(id): print_debug(\"mouse_entered\"))
|
||||||
get_popup().id_pressed.connect(func(id): print(\"id_pressed\"))
|
get_popup().id_pressed.connect(func(id): print_debug(\"id_pressed\"))
|
||||||
get_popup().index_pressed.connect(func(id): print(\"id_pressed\"))
|
get_popup().index_pressed.connect(func(id): print_debug(\"id_pressed\"))
|
||||||
get_popup().id_focused.connect(func(id): print(\"id_focused\"))
|
get_popup().id_focused.connect(func(id): print_debug(\"id_focused\"))
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ var focus_stickies:bool = true:
|
||||||
else:
|
else:
|
||||||
current_dropzone_id = current_dropzone_id
|
current_dropzone_id = current_dropzone_id
|
||||||
|
|
||||||
var has_stage = false:
|
var has_stage := false:
|
||||||
set(focus):
|
set(focus):
|
||||||
if focus:
|
if focus:
|
||||||
has_stage = true
|
has_stage = true
|
||||||
|
|
@ -181,23 +181,23 @@ func populate_board(card_names: Array[StringName]):
|
||||||
#currently_active_node = area_dict["dropzone_content"][0] # set first Card as currently selected node by default
|
#currently_active_node = area_dict["dropzone_content"][0] # set first Card as currently selected node by default
|
||||||
currently_active_node = dropzone.get_child(0)
|
currently_active_node = dropzone.get_child(0)
|
||||||
|
|
||||||
func add_card(card: Card, reparent:bool = true):
|
func add_card(card: Card, re_parent:bool = true):
|
||||||
if reparent:
|
if re_parent:
|
||||||
card.reparent(self)
|
card.reparent(self)
|
||||||
else:
|
else:
|
||||||
add_child(card)
|
add_child(card)
|
||||||
card.position = Vector2(randi_range(dropzone_padding, dropzone_size.x), randi_range(dropzone_padding, dropzone_size.y))
|
card.position = Vector2(randi_range(dropzone_padding, int(dropzone_size.x)), randi_range(dropzone_padding, int(dropzone_size.y)))
|
||||||
insert_area(dropzone, card)
|
insert_area(dropzone, card)
|
||||||
card.set_owner(self)
|
card.set_owner(self)
|
||||||
card.is_dragable = true
|
card.is_dragable = true
|
||||||
|
|
||||||
func add_sticky_note(sticky: StickyNote, reparent:bool = true):
|
func add_sticky_note(sticky: StickyNote, re_parent:bool = true):
|
||||||
var new_panel = StickyNotePanel.new()
|
var new_panel := StickyNotePanel.new()
|
||||||
sticky_note_container.add_child(new_panel, true, Node.INTERNAL_MODE_DISABLED)
|
sticky_note_container.add_child(new_panel, true, Node.INTERNAL_MODE_DISABLED)
|
||||||
#WARNING this for some reason would break the tweens
|
#WARNING this for some reason would break the tweens
|
||||||
new_panel.set_owner(self)
|
new_panel.set_owner(self)
|
||||||
sticky.current_handle = self
|
sticky.current_handle = self
|
||||||
new_panel.attatch_sticky_note(sticky, self, false, reparent)
|
new_panel.attatch_sticky_note(sticky, self, false, re_parent)
|
||||||
|
|
||||||
# Checks if a Node is currently inside the dropzone
|
# Checks if a Node is currently inside the dropzone
|
||||||
func is_in_dropzone(to_check: Node) -> bool:
|
func is_in_dropzone(to_check: Node) -> bool:
|
||||||
|
|
@ -454,7 +454,7 @@ func _input(event):
|
||||||
get_viewport().set_input_as_handled()
|
get_viewport().set_input_as_handled()
|
||||||
|
|
||||||
elif event.is_action_pressed("ui_left"): # right to switch context to the right
|
elif event.is_action_pressed("ui_left"): # right to switch context to the right
|
||||||
print(try_select_nearest_card(selection_position, Vector2.LEFT))
|
print_debug(try_select_nearest_card(selection_position, Vector2.LEFT))
|
||||||
if focus_stickies:
|
if focus_stickies:
|
||||||
if current_context == NAVIGATE:
|
if current_context == NAVIGATE:
|
||||||
focus_stickies = false
|
focus_stickies = false
|
||||||
|
|
@ -663,10 +663,9 @@ func rebuild_from_savedict(board_state:Dictionary):
|
||||||
sticky.picked_random = randoms.has( sticky.sticky_id )
|
sticky.picked_random = randoms.has( sticky.sticky_id )
|
||||||
|
|
||||||
func validate_board():
|
func validate_board():
|
||||||
return
|
|
||||||
if current_context == NAVIGATE:
|
if current_context == NAVIGATE:
|
||||||
|
|
||||||
var needs_rebuild = false
|
var needs_rebuild := false
|
||||||
for node in dropzone.get_children():
|
for node in dropzone.get_children():
|
||||||
if node is Card:
|
if node is Card:
|
||||||
match validate_card(node):
|
match validate_card(node):
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
@tool
|
|
||||||
extends Area2D
|
extends Area2D
|
||||||
class_name Card
|
class_name Card
|
||||||
|
|
||||||
|
|
@ -115,7 +114,7 @@ signal has_burned
|
||||||
burn_tween.tween_property(self, "burn_progress", 2.0, 2)
|
burn_tween.tween_property(self, "burn_progress", 2.0, 2)
|
||||||
burn_tween.tween_callback(_torch).set_delay(1.0)
|
burn_tween.tween_callback(_torch).set_delay(1.0)
|
||||||
burned.TORCHED:
|
burned.TORCHED:
|
||||||
print("Card %s has been burned." % HardCards.get_obscure_name(name))
|
print_debug("Card %s has been burned." % HardCards.get_obscure_name(name))
|
||||||
has_burned.emit()
|
has_burned.emit()
|
||||||
burn_state = burning
|
burn_state = burning
|
||||||
|
|
||||||
|
|
@ -286,7 +285,7 @@ func attach_sticky_note(sticky_note: StickyNote) -> bool:
|
||||||
sticky_note.on_board = false
|
sticky_note.on_board = false
|
||||||
sticky_note.is_dragable = false
|
sticky_note.is_dragable = false
|
||||||
current_sticky_note = sticky_note
|
current_sticky_note = sticky_note
|
||||||
var former_parent = sticky_note.attached_to
|
#var former_parent = sticky_note.attached_to
|
||||||
sticky_note.attached_to = self
|
sticky_note.attached_to = self
|
||||||
|
|
||||||
if name == "c_hit" and sticky_note.name == "c_effort" and Steamworks.has_initialized:
|
if name == "c_hit" and sticky_note.name == "c_effort" and Steamworks.has_initialized:
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
@tool
|
|
||||||
class_name StickyNotePanel
|
class_name StickyNotePanel
|
||||||
extends Panel
|
extends Panel
|
||||||
|
|
||||||
|
|
@ -19,7 +18,7 @@ func _ready():
|
||||||
custom_minimum_size = Vector2(custom_minimum_size.x, 0)
|
custom_minimum_size = Vector2(custom_minimum_size.x, 0)
|
||||||
|
|
||||||
var is_attatching: bool = false
|
var is_attatching: bool = false
|
||||||
func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool = true, reparent:bool = true):
|
func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool = true, re_parent:bool = true):
|
||||||
is_attatching = true
|
is_attatching = true
|
||||||
attatchment.on_board = false
|
attatchment.on_board = false
|
||||||
attached_sticky_note = attatchment
|
attached_sticky_note = attatchment
|
||||||
|
|
@ -28,7 +27,7 @@ func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool
|
||||||
await get_tree().process_frame
|
await get_tree().process_frame
|
||||||
var height_tween: Tween = create_tween()
|
var height_tween: Tween = create_tween()
|
||||||
height_tween.tween_property(self, "custom_minimum_size", minimum_size, 0.1)
|
height_tween.tween_property(self, "custom_minimum_size", minimum_size, 0.1)
|
||||||
var target_post = get_global_transform().origin+ancor_position
|
var target_post := get_global_transform().origin+ancor_position
|
||||||
for panel: StickyNotePanel in get_parent().get_children():
|
for panel: StickyNotePanel in get_parent().get_children():
|
||||||
if panel.attached_sticky_note == attatchment and panel.get_index() < get_index():
|
if panel.attached_sticky_note == attatchment and panel.get_index() < get_index():
|
||||||
target_post = get_global_transform().origin+ancor_position - Vector2(0, minimum_size.y)
|
target_post = get_global_transform().origin+ancor_position - Vector2(0, minimum_size.y)
|
||||||
|
|
@ -39,7 +38,7 @@ func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool
|
||||||
attatchment.position = ancor_position
|
attatchment.position = ancor_position
|
||||||
else:
|
else:
|
||||||
custom_minimum_size = minimum_size
|
custom_minimum_size = minimum_size
|
||||||
if reparent:
|
if re_parent:
|
||||||
attatchment.reparent(self)
|
attatchment.reparent(self)
|
||||||
else:
|
else:
|
||||||
add_child(attatchment)
|
add_child(attatchment)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
@tool
|
|
||||||
|
|
||||||
extends Area2D
|
extends Area2D
|
||||||
class_name StickyNote
|
class_name StickyNote
|
||||||
|
|
||||||
|
|
@ -197,7 +195,7 @@ func _on_input_event(_viewport, event, _shape_idx):
|
||||||
|
|
||||||
func _move_sticky_note():
|
func _move_sticky_note():
|
||||||
if is_dragged:
|
if is_dragged:
|
||||||
var old_position = position
|
#var old_position = position
|
||||||
position = initial_drag_position + get_viewport().get_mouse_position() - mouse_diff
|
position = initial_drag_position + get_viewport().get_mouse_position() - mouse_diff
|
||||||
|
|
||||||
if hovering_cards != []:
|
if hovering_cards != []:
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
# General housekeeping to set up a "normal"
|
||||||
|
# game experience, e.g.
|
||||||
|
# - ensure settings exist
|
||||||
|
# - ensure savegames are healthy
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cq25hqgfl2eiu
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://ccdfkvtu6sb36"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cq25hqgfl2eiu" path="res://logic-scenes/boot/boot.gd" id="1_hjvc4"]
|
||||||
|
|
||||||
|
[node name="Boot" type="Node"]
|
||||||
|
script = ExtResource("1_hjvc4")
|
||||||
|
|
@ -25,7 +25,7 @@ func _ready():
|
||||||
%SkipButton.pressed.connect(card_burned.emit)
|
%SkipButton.pressed.connect(card_burned.emit)
|
||||||
|
|
||||||
func burn_cards(_id):
|
func burn_cards(_id):
|
||||||
var random_card_names: Array = State.active_save_game.board_state["randoms"]
|
var random_card_names: Array = State.save_game.board_state["randoms"]
|
||||||
|
|
||||||
for card_name in random_card_names:
|
for card_name in random_card_names:
|
||||||
if card_name.begins_with("p"):
|
if card_name.begins_with("p"):
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ var has_stage = false:
|
||||||
var _input_locked = true
|
var _input_locked = true
|
||||||
var selection_state = INI:
|
var selection_state = INI:
|
||||||
set(state):
|
set(state):
|
||||||
print("Setting picker state to %s" % ["INI","CARDS","CARDS_SELECTED","TRANSITION","POSTS","POSTS_SELECTED","DONE"][state])
|
print_debug("Setting picker state to %s" % ["INI","CARDS","CARDS_SELECTED","TRANSITION","POSTS","POSTS_SELECTED","DONE"][state])
|
||||||
selection_state = state
|
selection_state = state
|
||||||
_input_locked = !(state == CARDS or state == POSTS)
|
_input_locked = !(state == CARDS or state == POSTS)
|
||||||
|
|
||||||
|
|
@ -58,6 +58,8 @@ signal cards_picked(cardnames: Array[String])
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
|
reset()
|
||||||
|
return
|
||||||
|
|
||||||
#FIXME: can I make this less annoying somehow?
|
#FIXME: can I make this less annoying somehow?
|
||||||
if State.onready_room == State.rooms.YOUTH:
|
if State.onready_room == State.rooms.YOUTH:
|
||||||
|
|
@ -74,8 +76,7 @@ func _ready():
|
||||||
Scenes.sign_up_for_sequence(pick_cards, Scenes.id.ADULT_THERAPY, 1)
|
Scenes.sign_up_for_sequence(pick_cards, Scenes.id.ADULT_THERAPY, 1)
|
||||||
Scenes.sign_up_for_sequence(pick_cards, Scenes.id.ADULT_BURNOUT, 1)
|
Scenes.sign_up_for_sequence(pick_cards, Scenes.id.ADULT_BURNOUT, 1)
|
||||||
else:
|
else:
|
||||||
return
|
assert(false, "Not Implemented")
|
||||||
assert(false)
|
|
||||||
|
|
||||||
if get_tree().root == self.get_parent():
|
if get_tree().root == self.get_parent():
|
||||||
pick_cards(3, false)
|
pick_cards(3, false)
|
||||||
|
|
@ -172,7 +173,7 @@ func _input(event):
|
||||||
|
|
||||||
|
|
||||||
func pick(id: int):
|
func pick(id: int):
|
||||||
print("%s picked card %s at id %d" % [name, options[id].text, id])
|
print_debug("%s picked card %s at id %d" % [name, options[id].text, id])
|
||||||
if id == -1:
|
if id == -1:
|
||||||
curr_selection_id = 0
|
curr_selection_id = 0
|
||||||
return
|
return
|
||||||
|
|
@ -199,11 +200,11 @@ func pick(id: int):
|
||||||
options.erase(option)
|
options.erase(option)
|
||||||
anim_players[i].play("unshuffle")
|
anim_players[i].play("unshuffle")
|
||||||
anim_players.remove_at(i)
|
anim_players.remove_at(i)
|
||||||
print("Removed StickyNote %s from options pool" % HardCards.get_obscure_name(option.name))
|
print_debug("Removed StickyNote %s from options pool" % HardCards.get_obscure_name(option.name))
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
var winning_id
|
var winning_id
|
||||||
print("Randomly selected card %s" % HardCards.get_obscure_name(options[1].name))
|
print_debug("Randomly selected card %s" % HardCards.get_obscure_name(options[1].name))
|
||||||
if not (current_scene_id == Scenes.id.YOUTH_JUI_JUTSU and selection_state == CARDS_SELECTED):
|
if not (current_scene_id == Scenes.id.YOUTH_JUI_JUTSU and selection_state == CARDS_SELECTED):
|
||||||
randomize()
|
randomize()
|
||||||
# investigate if this fixes error on line 197
|
# investigate if this fixes error on line 197
|
||||||
|
|
@ -268,7 +269,7 @@ func handle_mouse_button(button_event: InputEventMouseButton, new_selection: Nod
|
||||||
var current_scene_id
|
var current_scene_id
|
||||||
func pick_cards(id: int, repeat: bool):
|
func pick_cards(id: int, repeat: bool):
|
||||||
current_scene_id = id
|
current_scene_id = id
|
||||||
print("Reached actor %s in sequence %s. Is%s repeating." % [name, Scenes.id.keys()[id], " not" if repeat else ""])
|
print_debug("Reached actor %s in sequence %s. Is%s repeating." % [name, Scenes.id.keys()[id], " not" if repeat else ""])
|
||||||
if not repeat:
|
if not repeat:
|
||||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||||
fill_card_slots(id)
|
fill_card_slots(id)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
@tool
|
|
||||||
class_name ChatMessage extends Resource
|
class_name ChatMessage extends Resource
|
||||||
|
|
||||||
@export_multiline var text: String = ""
|
@export_multiline var text: String = ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
@tool
|
|
||||||
class_name ChatView extends ScrollContainer
|
class_name ChatView extends ScrollContainer
|
||||||
|
|
||||||
@export var messages: Array[ChatMessage]
|
@export var messages: Array[ChatMessage]
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
@tool
|
|
||||||
extends CenterContainer
|
extends CenterContainer
|
||||||
class_name Collectable_Ui
|
class_name Collectable_Ui
|
||||||
|
|
||||||
@export var scene:Scenes.id = 0
|
@export var scene:Scenes.id = 0 as Scenes.id
|
||||||
|
|
||||||
@export var collapsed = true:
|
@export var collapsed = true:
|
||||||
set(collapse):
|
set(collapse):
|
||||||
|
|
@ -18,9 +17,9 @@ class_name Collectable_Ui
|
||||||
if is_inside_tree():
|
if is_inside_tree():
|
||||||
_show_buttons()
|
_show_buttons()
|
||||||
collapsed = collapse
|
collapsed = collapse
|
||||||
|
|
||||||
if collapse and has_stage: State.leave_stage(self)
|
if collapse and has_stage: State.leave_stage(self)
|
||||||
|
|
||||||
@export var is_board: bool = false:
|
@export var is_board: bool = false:
|
||||||
set(board):
|
set(board):
|
||||||
is_board = board
|
is_board = board
|
||||||
|
|
@ -30,10 +29,10 @@ class_name Collectable_Ui
|
||||||
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "Collect Memento"
|
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "Collect Memento"
|
||||||
@export var has_stage: bool = false:
|
@export var has_stage: bool = false:
|
||||||
set(focused):
|
set(focused):
|
||||||
print("set focus of card to ", focused)
|
print_debug("set focus of card to ", focused)
|
||||||
|
|
||||||
if has_stage == focused: return
|
if has_stage == focused: return
|
||||||
|
|
||||||
if focused:
|
if focused:
|
||||||
has_stage = true
|
has_stage = true
|
||||||
collapsed = false
|
collapsed = false
|
||||||
|
|
@ -42,7 +41,7 @@ class_name Collectable_Ui
|
||||||
elif has_stage:
|
elif has_stage:
|
||||||
has_stage = false
|
has_stage = false
|
||||||
get_viewport().gui_release_focus()
|
get_viewport().gui_release_focus()
|
||||||
|
|
||||||
# FIXME needs to be outsourced to scene reference state
|
# FIXME needs to be outsourced to scene reference state
|
||||||
@export var collected: bool = false:
|
@export var collected: bool = false:
|
||||||
set(set_collected):
|
set(set_collected):
|
||||||
|
|
@ -57,9 +56,9 @@ class_name Collectable_Ui
|
||||||
else:
|
else:
|
||||||
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.disabled = true
|
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.disabled = true
|
||||||
$Panel/Content/Buttons/VBoxContainer/put_back.show()
|
$Panel/Content/Buttons/VBoxContainer/put_back.show()
|
||||||
else:
|
else:
|
||||||
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.disabled = false
|
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.disabled = false
|
||||||
|
|
||||||
@export var skipped: bool = false
|
@export var skipped: bool = false
|
||||||
|
|
||||||
@export var item_name: String = "":
|
@export var item_name: String = "":
|
||||||
|
|
@ -84,7 +83,7 @@ func _ready():
|
||||||
#$Panel/Content/Buttons/VBoxContainer/Summary.visible = State.provide_summaries
|
#$Panel/Content/Buttons/VBoxContainer/Summary.visible = State.provide_summaries
|
||||||
#$Panel/Content/Buttons/VBoxContainer/skip.visible = State.allow_skipping
|
#$Panel/Content/Buttons/VBoxContainer/skip.visible = State.allow_skipping
|
||||||
if visible and not collapsed: _show_buttons()
|
if visible and not collapsed: _show_buttons()
|
||||||
|
|
||||||
content_notes = content_notes
|
content_notes = content_notes
|
||||||
is_board = is_board
|
is_board = is_board
|
||||||
item_name = item_name
|
item_name = item_name
|
||||||
|
|
@ -93,7 +92,7 @@ func _hide_buttons():
|
||||||
if is_inside_tree():
|
if is_inside_tree():
|
||||||
if not State.reduce_motion:
|
if not State.reduce_motion:
|
||||||
$AnimationPlayer.play_backwards("show_buttons")
|
$AnimationPlayer.play_backwards("show_buttons")
|
||||||
|
|
||||||
func _show_buttons():
|
func _show_buttons():
|
||||||
if is_inside_tree():
|
if is_inside_tree():
|
||||||
if not State.reduce_motion:
|
if not State.reduce_motion:
|
||||||
|
|
@ -102,7 +101,7 @@ func _show_buttons():
|
||||||
$AnimationPlayer.play("RESET")
|
$AnimationPlayer.play("RESET")
|
||||||
else:
|
else:
|
||||||
$AnimationPlayer.play("RESET")
|
$AnimationPlayer.play("RESET")
|
||||||
|
|
||||||
func vanish():
|
func vanish():
|
||||||
if visible:
|
if visible:
|
||||||
var tween = create_tween()
|
var tween = create_tween()
|
||||||
|
|
@ -126,9 +125,9 @@ func reveal():
|
||||||
func _yoink_focus():
|
func _yoink_focus():
|
||||||
if not has_stage:
|
if not has_stage:
|
||||||
State.transition_stage_to(self)
|
State.transition_stage_to(self)
|
||||||
|
|
||||||
func _on_pick_button_pressed():
|
func _on_pick_button_pressed():
|
||||||
print("card collected!")
|
print_debug("card collected!")
|
||||||
if not is_board:
|
if not is_board:
|
||||||
Scenes.start_sequence(scene)
|
Scenes.start_sequence(scene)
|
||||||
State.leave_stage(self)
|
State.leave_stage(self)
|
||||||
|
|
@ -141,10 +140,10 @@ func _on_pick_button_pressed():
|
||||||
|
|
||||||
|
|
||||||
func _on_skip_pressed():
|
func _on_skip_pressed():
|
||||||
print("Scene skipped!")
|
print_debug("Scene skipped!")
|
||||||
if scene != null:
|
if scene != null:
|
||||||
emit_signal("scene_skipped", 1)
|
emit_signal("scene_skipped", 1)
|
||||||
skipped = true
|
skipped = true
|
||||||
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "collect (un-skip)"
|
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "collect (un-skip)"
|
||||||
|
|
||||||
State.leave_stage(self)
|
State.leave_stage(self)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="3_63j61"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="3_63j61"]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_g0qhf"]
|
[sub_resource type="GDScript" id="GDScript_g0qhf"]
|
||||||
script/source = "@tool
|
script/source = "
|
||||||
extends Button
|
extends Button
|
||||||
|
|
||||||
func hide():
|
func hide():
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
@tool
|
|
||||||
class_name CollectableUi extends CenterContainer
|
class_name CollectableUi extends CenterContainer
|
||||||
|
|
||||||
@export var has_stage: bool = false:
|
@export var has_stage: bool = false:
|
||||||
set(focused):
|
set(focused):
|
||||||
if has_stage == focused: return
|
if has_stage == focused: return
|
||||||
|
|
||||||
if focused:
|
if focused:
|
||||||
has_stage = true
|
has_stage = true
|
||||||
is_collapsed = false
|
is_collapsed = false
|
||||||
|
|
@ -28,7 +27,7 @@ class_name CollectableUi extends CenterContainer
|
||||||
# if is_inside_tree():
|
# if is_inside_tree():
|
||||||
# _show_buttons()
|
# _show_buttons()
|
||||||
# collapsed = collapse
|
# collapsed = collapse
|
||||||
#
|
#
|
||||||
# if collapse and has_stage: State.leave_stage(self)
|
# if collapse and has_stage: State.leave_stage(self)
|
||||||
|
|
||||||
@export var scene: Scenes.id = Scenes.id.YOUTH_DRAEVEN:
|
@export var scene: Scenes.id = Scenes.id.YOUTH_DRAEVEN:
|
||||||
|
|
@ -73,7 +72,7 @@ class_name CollectableUi extends CenterContainer
|
||||||
Scenes.id.ADULT_BURNOUT:
|
Scenes.id.ADULT_BURNOUT:
|
||||||
if title_override == "": title_label.text = TranslationServer.translate("Paperwork")
|
if title_override == "": title_label.text = TranslationServer.translate("Paperwork")
|
||||||
if subtitle_override == "": cn_label.text = ""
|
if subtitle_override == "": cn_label.text = ""
|
||||||
|
|
||||||
if not Engine.is_editor_hint():
|
if not Engine.is_editor_hint():
|
||||||
is_collected = Scenes.is_sequence_repeating(scene)
|
is_collected = Scenes.is_sequence_repeating(scene)
|
||||||
@export var is_collected: bool = false:
|
@export var is_collected: bool = false:
|
||||||
|
|
@ -161,7 +160,7 @@ func _ready() -> void:
|
||||||
State.settings_changed.connect(_on_context_updated)
|
State.settings_changed.connect(_on_context_updated)
|
||||||
%CollectButton.pressed.connect(collect_memento)
|
%CollectButton.pressed.connect(collect_memento)
|
||||||
##TODO: add functions for remaining buttons
|
##TODO: add functions for remaining buttons
|
||||||
|
|
||||||
update_state()
|
update_state()
|
||||||
|
|
||||||
func _on_context_updated():
|
func _on_context_updated():
|
||||||
|
|
@ -189,7 +188,7 @@ func try_reveal() -> bool:
|
||||||
animation_player.play("reveal")
|
animation_player.play("reveal")
|
||||||
return true
|
return true
|
||||||
return false
|
return false
|
||||||
|
|
||||||
#func _process(_delta: float) -> void:
|
#func _process(_delta: float) -> void:
|
||||||
# if not visible or Engine.is_editor_hint(): return
|
# if not visible or Engine.is_editor_hint(): return
|
||||||
# if Input.is_action_just_pressed("collect_memento_ui"):
|
# if Input.is_action_just_pressed("collect_memento_ui"):
|
||||||
|
|
@ -218,7 +217,7 @@ func _input(event: InputEvent) -> void:
|
||||||
|
|
||||||
func vanish():
|
func vanish():
|
||||||
if not visible: return
|
if not visible: return
|
||||||
|
|
||||||
if is_expanded:
|
if is_expanded:
|
||||||
animation_player.play("vanish_all")
|
animation_player.play("vanish_all")
|
||||||
else:
|
else:
|
||||||
|
|
@ -233,10 +232,10 @@ func collect_memento():
|
||||||
is_collected = true
|
is_collected = true
|
||||||
|
|
||||||
func _on_skip_pressed():
|
func _on_skip_pressed():
|
||||||
print("Scene skipped!")
|
print_debug("Scene skipped!")
|
||||||
if scene != null:
|
if scene != null:
|
||||||
scene_skipped.emit(1)
|
scene_skipped.emit(1)
|
||||||
was_skipped = true
|
was_skipped = true
|
||||||
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "collect (un-skip)"
|
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "collect (un-skip)"
|
||||||
|
|
||||||
State.leave_stage(self)
|
State.leave_stage(self)
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
[ext_resource type="Script" uid="uid://bayuh2vafablg" path="res://addons/markdownlabel/header_formats/h4_format.gd" id="6_63x3b"]
|
[ext_resource type="Script" uid="uid://bayuh2vafablg" path="res://addons/markdownlabel/header_formats/h4_format.gd" id="6_63x3b"]
|
||||||
[ext_resource type="Script" uid="uid://dfr1w7u3jgni3" path="res://addons/markdownlabel/header_formats/h5_format.gd" id="7_sp2lx"]
|
[ext_resource type="Script" uid="uid://dfr1w7u3jgni3" path="res://addons/markdownlabel/header_formats/h5_format.gd" id="7_sp2lx"]
|
||||||
[ext_resource type="Script" uid="uid://bsi6dexoofpe6" path="res://addons/markdownlabel/header_formats/h6_format.gd" id="8_bd0uj"]
|
[ext_resource type="Script" uid="uid://bsi6dexoofpe6" path="res://addons/markdownlabel/header_formats/h6_format.gd" id="8_bd0uj"]
|
||||||
[ext_resource type="Script" uid="uid://cxton1pffwxk4" path="res://button_themer.gd" id="9_pl7dp"]
|
[ext_resource type="Script" uid="uid://cxton1pffwxk4" path="res://code/button_themer.gd" id="9_pl7dp"]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_nkjm2"]
|
[sub_resource type="GDScript" id="GDScript_nkjm2"]
|
||||||
script/source = "extends Panel
|
script/source = "extends Panel
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
class_name MainMenu extends Panel
|
|
||||||
|
|
||||||
var has_stage: bool = false:
|
|
||||||
set(value):
|
|
||||||
has_stage = value
|
|
||||||
if is_node_ready():
|
|
||||||
if save_game_handle.get_most_recent_save().current_room == 0:
|
|
||||||
continue_button.visible = false
|
|
||||||
continue_button.disabled = true
|
|
||||||
new_game_button.theme_type_variation = "H1Button"
|
|
||||||
else:
|
|
||||||
continue_button.visible = true
|
|
||||||
continue_button.disabled = not has_stage
|
|
||||||
new_game_button.theme_type_variation = ""
|
|
||||||
load_game_button.disabled = not save_game_handle.has_existing_saves()
|
|
||||||
for child: Control in $PanelContainer.get_children():
|
|
||||||
child.focus_mode = FOCUS_ALL if has_stage else FOCUS_NONE
|
|
||||||
child.modulate = Color.WHITE if has_stage else Color.WEB_GRAY
|
|
||||||
child.mouse_filter = Control.MOUSE_FILTER_STOP if has_stage else Control.MOUSE_FILTER_IGNORE
|
|
||||||
if has_stage:
|
|
||||||
if continue_button.visible:
|
|
||||||
continue_button.grab_focus()
|
|
||||||
else:
|
|
||||||
new_game_button.grab_focus()
|
|
||||||
|
|
||||||
signal start_game(savegame: SaveGame)
|
|
||||||
signal open_settings(new_game: bool)
|
|
||||||
signal roll_credits
|
|
||||||
|
|
||||||
@onready var new_game_button: Button = $PanelContainer/NewGameButton
|
|
||||||
@onready var continue_button: Button = $PanelContainer/ContinueGameButton
|
|
||||||
@onready var load_game_button: Button = $PanelContainer/LoadGameButton
|
|
||||||
@onready var settings_button: Button = $PanelContainer/SettingsButton
|
|
||||||
@onready var settings_popup: SettingsPopup = %SettingsPopup
|
|
||||||
@onready var credits_button: Button = $PanelContainer/CreditsButton
|
|
||||||
@onready var quit_button: Button = $PanelContainer/QuitButton
|
|
||||||
@onready var save_game_handle: SaveGameHandle = %SaveGameHandle
|
|
||||||
@export var save_game_exists: bool = false:
|
|
||||||
set(value):
|
|
||||||
save_game_exists = value
|
|
||||||
|
|
||||||
var await_new_game: bool = false
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
func _ready() -> void:
|
|
||||||
save_game_handle.picked.connect(_on_save_picked)
|
|
||||||
if save_game_handle.get_most_recent_save().current_room == 0:
|
|
||||||
continue_button.disabled = true
|
|
||||||
continue_button.visible = false
|
|
||||||
new_game_button.theme_type_variation = "H1Button"
|
|
||||||
continue_button.pressed.connect(func(): start_game.emit(save_game_handle.get_most_recent_save()))
|
|
||||||
new_game_button.pressed.connect(func(): save_game_handle.pick_save_slot(true))
|
|
||||||
load_game_button.pressed.connect(func(): save_game_handle.pick_save_slot(false))
|
|
||||||
load_game_button.disabled = not save_game_handle.has_existing_saves()
|
|
||||||
settings_button.pressed.connect(settings_popup.show_settings)
|
|
||||||
quit_button.pressed.connect(get_tree().quit)
|
|
||||||
credits_button.pressed.connect(roll_credits.emit)
|
|
||||||
|
|
||||||
State.take_stage(self)
|
|
||||||
|
|
||||||
func _on_save_picked(save: SaveGame):
|
|
||||||
start_game.emit(save)
|
|
||||||
|
|
@ -2,7 +2,7 @@ class_name Player extends RigidBody3D
|
||||||
|
|
||||||
var has_stage: bool = false:
|
var has_stage: bool = false:
|
||||||
set(on_stage):
|
set(on_stage):
|
||||||
print("%s player controller take stage" % "True: " if on_stage else "false")
|
print_debug("%s player controller take stage" % "True: " if on_stage else "false")
|
||||||
if has_stage != on_stage:
|
if has_stage != on_stage:
|
||||||
if on_stage:
|
if on_stage:
|
||||||
has_stage = true
|
has_stage = true
|
||||||
|
|
@ -26,7 +26,7 @@ var has_stage: bool = false:
|
||||||
else:
|
else:
|
||||||
jitter_strength = 0
|
jitter_strength = 0
|
||||||
has_stage = false
|
has_stage = false
|
||||||
print("player controller %s take stage" % "did" if has_stage else "didn't")
|
print_debug("player controller %s take stage" % "did" if has_stage else "didn't")
|
||||||
sleeping = has_stage
|
sleeping = has_stage
|
||||||
|
|
||||||
@export var mouse_sensitivity: Vector2 = Vector2(6, 5)
|
@export var mouse_sensitivity: Vector2 = Vector2(6, 5)
|
||||||
|
|
@ -145,7 +145,7 @@ func _on_ray_entered(_area):
|
||||||
else:
|
else:
|
||||||
has_entered = false
|
has_entered = false
|
||||||
else:
|
else:
|
||||||
print("You are standing in front of a wall")
|
print_debug("You are standing in front of a wall")
|
||||||
|
|
||||||
func _on_ray_exited(area):
|
func _on_ray_exited(area):
|
||||||
if delay_passed and area is InteractiveSprite:
|
if delay_passed and area is InteractiveSprite:
|
||||||
|
|
@ -266,9 +266,10 @@ func _input(event:InputEvent):
|
||||||
else:
|
else:
|
||||||
crouch_toggled = true
|
crouch_toggled = true
|
||||||
|
|
||||||
func play_scene(id: int, _repeat):
|
func play_scene(_id: int, _repeat: bool):
|
||||||
if id == Scenes.id.YOUTH_DRAEVEN:
|
pass
|
||||||
var rotation_tween = create_tween()
|
#if id == Scenes.id.YOUTH_DRAEVEN:
|
||||||
|
# var rotation_tween := create_tween()
|
||||||
|
|
||||||
func scene_finished(_id, repeat: bool):
|
func scene_finished(_id, repeat: bool):
|
||||||
if repeat:
|
if repeat:
|
||||||
|
|
|
||||||
|
|
@ -1,118 +1,18 @@
|
||||||
[gd_scene load_steps=6 format=3 uid="uid://gldtxysavetf"]
|
[gd_scene load_steps=6 format=3 uid="uid://gldtxysavetf"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_8giso"]
|
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_8giso"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b3wlecqvelh22" path="res://logic-scenes/main menu/acessability_settings.tscn" id="3_2p4fc"]
|
[ext_resource type="Script" uid="uid://3mtyfiuxbavf" path="res://logic-scenes/startup/startup_menu.gd" id="1_lw8rc"]
|
||||||
[ext_resource type="PackedScene" uid="uid://chal0ioagspx0" path="res://logic-scenes/main menu/content_settings.tscn" id="3_fso6q"]
|
[ext_resource type="PackedScene" uid="uid://b3wlecqvelh22" path="res://ui/menu_main/accessibility_settings.tscn" id="3_2p4fc"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://chal0ioagspx0" path="res://ui/menu_main/content_settings.tscn" id="3_fso6q"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_s5ssh"]
|
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_s5ssh"]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_a78qq"]
|
|
||||||
script/source = "extends Panel
|
|
||||||
|
|
||||||
@export var is_in_startup: bool
|
|
||||||
|
|
||||||
@onready var show_navigation_buttons = $\"CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/Container2/margin/show nav ui\"
|
|
||||||
|
|
||||||
func _ready():
|
|
||||||
theme = State.current_main_theme
|
|
||||||
State.theme_changed.connect(func change_theme(new_theme): theme = new_theme)
|
|
||||||
TranslationServer.set_locale(\"de\")
|
|
||||||
|
|
||||||
func starting():
|
|
||||||
pass
|
|
||||||
#$\"CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/navbuttons/Next\".grab_focus()
|
|
||||||
|
|
||||||
func _on_reduce_motion_toggled(toggled_on):
|
|
||||||
State.reduce_motion = toggled_on
|
|
||||||
|
|
||||||
# toggle for disable rendering
|
|
||||||
func _on_disable_rendering_toggled(toggled_on):
|
|
||||||
State.disable_rendering = toggled_on
|
|
||||||
|
|
||||||
# toggle for simplified controls
|
|
||||||
func _on_simplified_controls_toggled(toggled_on):
|
|
||||||
State.simplified_navigation = toggled_on # this is how you reach the global state
|
|
||||||
show_navigation_buttons.disabled = not toggled_on # if simpl. controls was toggled - disabled = false
|
|
||||||
|
|
||||||
# toggle for show nav buttons
|
|
||||||
func _on_show_nav_ui_toggled(toggled_on):
|
|
||||||
State.show_navigation_buttons = toggled_on
|
|
||||||
|
|
||||||
# toggle streaming notes
|
|
||||||
func _on_streaming_notes_toggled(toggled_on):
|
|
||||||
State.streaming_content_notes = toggled_on
|
|
||||||
|
|
||||||
|
|
||||||
# select font
|
|
||||||
# still needs handling to change the style
|
|
||||||
func _on_font_style_selected(index):
|
|
||||||
match index:
|
|
||||||
1:
|
|
||||||
State.current_main_theme = preload(\"res://logic-scenes/themes/handwriting.theme\")
|
|
||||||
print_debug(\"easy handwriting selected\")
|
|
||||||
#owner.theme.set_font(\"NanumPenScript.ttf\")
|
|
||||||
return
|
|
||||||
2:
|
|
||||||
State.current_main_theme = preload(\"res://logic-scenes/themes/serif.theme\")
|
|
||||||
#owner.theme.set_font(\"Eczar-VariableFont_wght.ttf\")
|
|
||||||
return
|
|
||||||
3:
|
|
||||||
State.current_main_theme = preload(\"res://logic-scenes/themes/hyperlegible.theme\")
|
|
||||||
#owner.theme.set_font(\"AtkinsonHyperlegible.ttf\")
|
|
||||||
return
|
|
||||||
4:
|
|
||||||
State.current_main_theme = preload(\"res://logic-scenes/themes/system.theme\")
|
|
||||||
#owner.theme.set_font(SystemFont.fallbacks[0])
|
|
||||||
return
|
|
||||||
|
|
||||||
func _on_subtitle_option_selected(index):
|
|
||||||
match index:
|
|
||||||
0:
|
|
||||||
State.enable_subtitles = false
|
|
||||||
State.enable_closed_caption = false
|
|
||||||
1:
|
|
||||||
State.enable_subtitles = true
|
|
||||||
State.enable_closed_caption = false
|
|
||||||
2:
|
|
||||||
State.enable_subtitles = true
|
|
||||||
State.enable_closed_caption = true
|
|
||||||
|
|
||||||
print_debug(State.print_settings())
|
|
||||||
|
|
||||||
|
|
||||||
# Volume Settings
|
|
||||||
|
|
||||||
|
|
||||||
# Final Page
|
|
||||||
|
|
||||||
func _on_content_notes_toggled(button_pressed):
|
|
||||||
State.show_content_notes = button_pressed
|
|
||||||
|
|
||||||
|
|
||||||
func _on_provide_summaries_toggled(button_pressed):
|
|
||||||
State.provide_summaries = button_pressed
|
|
||||||
|
|
||||||
|
|
||||||
func _on_allow_skipping_toggled(button_pressed):
|
|
||||||
State.allow_skipping = button_pressed
|
|
||||||
|
|
||||||
func hide():
|
|
||||||
get_parent().get_child(0).get_ready()
|
|
||||||
var child_tween = create_tween()
|
|
||||||
child_tween.tween_property($CenterContainer, \"modulate\", Color(1, 1, 1, 0), .5)
|
|
||||||
await child_tween.finished
|
|
||||||
var self_tween = create_tween()
|
|
||||||
self_tween.tween_property(self, \"modulate\", Color(1, 1, 1, 0), .5)
|
|
||||||
await self_tween.finished
|
|
||||||
self.visible = false
|
|
||||||
"
|
|
||||||
|
|
||||||
[node name="Startup Menu" type="Panel"]
|
[node name="Startup Menu" type="Panel"]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = SubResource("GDScript_a78qq")
|
script = ExtResource("1_lw8rc")
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="."]
|
[node name="Label" type="Label" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
extends Panel
|
||||||
|
|
||||||
|
@export var is_in_startup: bool
|
||||||
|
|
||||||
|
@onready var show_navigation_buttons = %Accessibility/Container2/margin/ShowNavUI
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
theme = State.current_main_theme
|
||||||
|
State.theme_changed.connect(func change_theme(new_theme): theme = new_theme)
|
||||||
|
TranslationServer.set_locale("de")
|
||||||
|
|
||||||
|
func starting():
|
||||||
|
pass
|
||||||
|
#$"CenterContainer/PanelContainer/VBoxContainer/TabContainer/physical Accessibility/navbuttons/Next".grab_focus()
|
||||||
|
|
||||||
|
func _on_reduce_motion_toggled(toggled_on):
|
||||||
|
State.reduce_motion = toggled_on
|
||||||
|
|
||||||
|
# toggle for disable rendering
|
||||||
|
func _on_disable_rendering_toggled(toggled_on):
|
||||||
|
State.disable_rendering = toggled_on
|
||||||
|
|
||||||
|
# toggle for simplified controls
|
||||||
|
func _on_simplified_controls_toggled(toggled_on):
|
||||||
|
State.simplified_navigation = toggled_on # this is how you reach the global state
|
||||||
|
show_navigation_buttons.disabled = not toggled_on # if simpl. controls was toggled - disabled = false
|
||||||
|
|
||||||
|
# toggle for show nav buttons
|
||||||
|
func _on_show_nav_ui_toggled(toggled_on):
|
||||||
|
State.show_navigation_buttons = toggled_on
|
||||||
|
|
||||||
|
# toggle streaming notes
|
||||||
|
func _on_streaming_notes_toggled(toggled_on):
|
||||||
|
State.streaming_content_notes = toggled_on
|
||||||
|
|
||||||
|
|
||||||
|
# select font
|
||||||
|
# still needs handling to change the style
|
||||||
|
func _on_font_style_selected(index):
|
||||||
|
match index:
|
||||||
|
1:
|
||||||
|
State.current_main_theme = preload("res://logic-scenes/themes/handwriting.theme")
|
||||||
|
print_debug("easy handwriting selected")
|
||||||
|
#owner.theme.set_font("NanumPenScript.ttf")
|
||||||
|
return
|
||||||
|
2:
|
||||||
|
State.current_main_theme = preload("res://logic-scenes/themes/serif.theme")
|
||||||
|
#owner.theme.set_font("Eczar-VariableFont_wght.ttf")
|
||||||
|
return
|
||||||
|
3:
|
||||||
|
State.current_main_theme = preload("res://logic-scenes/themes/hyperlegible.theme")
|
||||||
|
#owner.theme.set_font("AtkinsonHyperlegible.ttf")
|
||||||
|
return
|
||||||
|
4:
|
||||||
|
State.current_main_theme = preload("res://logic-scenes/themes/system.theme")
|
||||||
|
#owner.theme.set_font(SystemFont.fallbacks[0])
|
||||||
|
return
|
||||||
|
|
||||||
|
func _on_subtitle_option_selected(index):
|
||||||
|
match index:
|
||||||
|
0:
|
||||||
|
State.enable_subtitles = false
|
||||||
|
State.enable_closed_caption = false
|
||||||
|
1:
|
||||||
|
State.enable_subtitles = true
|
||||||
|
State.enable_closed_caption = false
|
||||||
|
2:
|
||||||
|
State.enable_subtitles = true
|
||||||
|
State.enable_closed_caption = true
|
||||||
|
|
||||||
|
print_debug(State.print_settings())
|
||||||
|
|
||||||
|
|
||||||
|
# Volume Settings
|
||||||
|
|
||||||
|
|
||||||
|
# Final Page
|
||||||
|
|
||||||
|
func _on_content_notes_toggled(button_pressed):
|
||||||
|
State.show_content_notes = button_pressed
|
||||||
|
|
||||||
|
|
||||||
|
func _on_provide_summaries_toggled(button_pressed):
|
||||||
|
State.provide_summaries = button_pressed
|
||||||
|
|
||||||
|
|
||||||
|
func _on_allow_skipping_toggled(button_pressed):
|
||||||
|
State.allow_skipping = button_pressed
|
||||||
|
|
||||||
|
func hide():
|
||||||
|
get_parent().get_child(0).get_ready()
|
||||||
|
var child_tween = create_tween()
|
||||||
|
child_tween.tween_property($CenterContainer, "modulate", Color(1, 1, 1, 0), .5)
|
||||||
|
await child_tween.finished
|
||||||
|
var self_tween = create_tween()
|
||||||
|
self_tween.tween_property(self, "modulate", Color(1, 1, 1, 0), .5)
|
||||||
|
await self_tween.finished
|
||||||
|
self.visible = false
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://3mtyfiuxbavf
|
||||||
Binary file not shown.
185
src/main.gd
185
src/main.gd
|
|
@ -1,185 +0,0 @@
|
||||||
extends Node3D
|
|
||||||
|
|
||||||
signal room_loaded
|
|
||||||
|
|
||||||
var has_stage: bool = false:
|
|
||||||
set(stage):
|
|
||||||
has_stage = stage
|
|
||||||
if in_game and has_stage:
|
|
||||||
in_game = false
|
|
||||||
_return_to_menu()
|
|
||||||
|
|
||||||
@export_file(".tscn") var youth_room_path: String
|
|
||||||
@export_file(".tscn") var transition_room_path: String
|
|
||||||
@export_file(".tscn") var adulthood_room_path: String
|
|
||||||
@export_file(".tscn") var ending_path: String
|
|
||||||
|
|
||||||
@onready var main_menu:MainMenu = %"Main Menu"
|
|
||||||
@onready var pause_menu = %PauseMenu
|
|
||||||
@onready var menu_animation: AnimationTree = %MenuAnimationTree
|
|
||||||
@onready var state_machine = menu_animation["parameters/playback"]
|
|
||||||
@onready var focus_forward = %"Main Menu"
|
|
||||||
|
|
||||||
var current_room_id: State.rooms
|
|
||||||
|
|
||||||
var in_game = false
|
|
||||||
|
|
||||||
var current_room: RoomTemplate
|
|
||||||
var currently_loading_room: String = "":
|
|
||||||
set(path):
|
|
||||||
if path != "":
|
|
||||||
ResourceLoader.load_threaded_request(path, "PackedScene")
|
|
||||||
menu_animation["parameters/conditions/loading_done"] = false
|
|
||||||
menu_animation["parameters/conditions/load_save"] = true
|
|
||||||
else:
|
|
||||||
menu_animation["parameters/conditions/loading_done"] = true
|
|
||||||
menu_animation["parameters/conditions/load_save"] = false
|
|
||||||
|
|
||||||
currently_loading_room = path
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
func _ready():
|
|
||||||
main_menu.start_game.connect(load_save)
|
|
||||||
main_menu.roll_credits.connect(func(): state_machine.travel("credits_roll"))
|
|
||||||
get_tree().tree_process_mode_changed.connect(pause_mode_changed)
|
|
||||||
await get_tree().process_frame
|
|
||||||
currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
|
|
||||||
State.pass_stage_to(main_menu)
|
|
||||||
|
|
||||||
Scenes.scene_starting.connect(prepare_transition)
|
|
||||||
Scenes.scene_finished.connect(transition)
|
|
||||||
|
|
||||||
func _process(_delta: float) -> void:
|
|
||||||
if currently_loading_room != "" and not await_swap:
|
|
||||||
if ResourceLoader.load_threaded_get_status(currently_loading_room) == 3:
|
|
||||||
if not current_room == null:
|
|
||||||
current_room.queue_free()
|
|
||||||
State.onready_room = get_room_id_from_path(currently_loading_room)
|
|
||||||
current_room = ResourceLoader.load_threaded_get(currently_loading_room).instantiate()
|
|
||||||
print("add room")
|
|
||||||
add_child(current_room)
|
|
||||||
State.onready_room = State.rooms.NULL
|
|
||||||
move_child(current_room, 0)
|
|
||||||
currently_loading_room = ""
|
|
||||||
room_loaded.emit()
|
|
||||||
|
|
||||||
if Input.is_action_just_pressed("reset_demo") and (OS.has_feature("demo") or true):
|
|
||||||
State.stage_list = [self]
|
|
||||||
_return_to_menu()
|
|
||||||
|
|
||||||
func _unhandled_input(event: InputEvent) -> void:
|
|
||||||
if event is InputEvent and in_game:
|
|
||||||
if event.is_action_pressed("ui_menu"):
|
|
||||||
toggle_pause_menu()
|
|
||||||
|
|
||||||
func toggle_pause_menu():
|
|
||||||
if not get_tree().paused:
|
|
||||||
get_tree().paused = true
|
|
||||||
var state_machine = menu_animation["parameters/playback"]
|
|
||||||
state_machine.travel("reveal_pause_menu")
|
|
||||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
|
||||||
else:
|
|
||||||
get_tree().paused = false
|
|
||||||
var state_machine = menu_animation["parameters/playback"]
|
|
||||||
state_machine.travel("start_game")
|
|
||||||
|
|
||||||
if State.stage_list[0] is Player:
|
|
||||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
|
||||||
|
|
||||||
func debug_youth():
|
|
||||||
get_child(1).hide()
|
|
||||||
get_child(2).hide()
|
|
||||||
get_child(3).hide()
|
|
||||||
get_child(0).get_ready()
|
|
||||||
get_child(0).start()
|
|
||||||
|
|
||||||
func _return_to_menu():
|
|
||||||
State.active_save_game = null
|
|
||||||
|
|
||||||
menu_animation["parameters/conditions/start_game"] = false
|
|
||||||
|
|
||||||
State.pass_stage_to(main_menu)
|
|
||||||
|
|
||||||
currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
|
|
||||||
|
|
||||||
menu_animation["parameters/conditions/return_to_menu"] = true
|
|
||||||
await(get_tree().create_timer(0.5).timeout)
|
|
||||||
menu_animation["parameters/conditions/return_to_menu"] = false
|
|
||||||
_on_ready_to_unload()
|
|
||||||
|
|
||||||
func load_save(save: SaveGame):
|
|
||||||
|
|
||||||
if currently_loading_room != "":
|
|
||||||
await(room_loaded)
|
|
||||||
|
|
||||||
if save.current_room != current_room.id:
|
|
||||||
# TODO Prevent race condition from appearing when save is loaded while room is still loading.
|
|
||||||
currently_loading_room = get_room_path_from_id(save.current_room)
|
|
||||||
await(room_loaded)
|
|
||||||
|
|
||||||
menu_animation["parameters/conditions/start_game"] = true
|
|
||||||
|
|
||||||
State.active_save_game = save
|
|
||||||
in_game = true
|
|
||||||
current_room.start_room()
|
|
||||||
|
|
||||||
func _on_ready_to_unload():
|
|
||||||
if get_child(0) is Node3D:
|
|
||||||
get_child(0).free()
|
|
||||||
|
|
||||||
func get_room_path_from_id(id: State.rooms) -> String:
|
|
||||||
match id:
|
|
||||||
State.rooms.YOUTH, State.rooms.NULL:
|
|
||||||
return youth_room_path
|
|
||||||
State.rooms.TRANSITION:
|
|
||||||
return transition_room_path
|
|
||||||
State.rooms.ADULTHOOD:
|
|
||||||
return adulthood_room_path
|
|
||||||
_:
|
|
||||||
return ending_path
|
|
||||||
|
|
||||||
func get_room_id_from_path(path: String) -> State.rooms:
|
|
||||||
match path:
|
|
||||||
youth_room_path:
|
|
||||||
return State.rooms.YOUTH
|
|
||||||
transition_room_path:
|
|
||||||
return State.rooms.TRANSITION
|
|
||||||
adulthood_room_path:
|
|
||||||
return State.rooms.ADULTHOOD
|
|
||||||
_:
|
|
||||||
return State.rooms.NULL
|
|
||||||
|
|
||||||
|
|
||||||
func start_demo():
|
|
||||||
#FIXME this causes the room to reload
|
|
||||||
#load_save(SaveGame.new())
|
|
||||||
current_room.start_room()
|
|
||||||
in_game = true
|
|
||||||
|
|
||||||
func pause_mode_changed():
|
|
||||||
print(get_tree().paused)
|
|
||||||
|
|
||||||
var await_swap: bool = false
|
|
||||||
func prepare_transition(scene_id: Scenes.id, _repeat):
|
|
||||||
if scene_id == Scenes.id.TRANSITION:
|
|
||||||
await_swap = true
|
|
||||||
#FIXME: this does not need to be part of the sequence
|
|
||||||
await(get_tree().process_frame)
|
|
||||||
current_room.prepare_transition()
|
|
||||||
if not _repeat:
|
|
||||||
currently_loading_room = get_room_path_from_id(State.rooms.TRANSITION)
|
|
||||||
else:
|
|
||||||
|
|
||||||
currently_loading_room = get_room_path_from_id(State.rooms.ADULTHOOD)
|
|
||||||
|
|
||||||
func transition(scene_id: Scenes.id, _repeat):
|
|
||||||
if scene_id == Scenes.id.TRANSITION:
|
|
||||||
State.reset_focus()
|
|
||||||
await_swap = false
|
|
||||||
await room_loaded
|
|
||||||
if not _repeat:
|
|
||||||
State.queue_for_stage(current_room)
|
|
||||||
Scenes.end_current_sequence()
|
|
||||||
else:
|
|
||||||
State.pass_stage_to(current_room)
|
|
||||||
|
|
||||||
|
|
@ -11,7 +11,7 @@ config_version=5
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Frame of Mind"
|
config/name="Frame of Mind"
|
||||||
run/main_scene="uid://befxf8uruwnrl"
|
run/main_scene="uid://ccdfkvtu6sb36"
|
||||||
config/use_custom_user_dir=true
|
config/use_custom_user_dir=true
|
||||||
config/features=PackedStringArray("4.5", "Forward Plus")
|
config/features=PackedStringArray("4.5", "Forward Plus")
|
||||||
boot_splash/bg_color=Color(0.0313726, 0.0117647, 0.129412, 1)
|
boot_splash/bg_color=Color(0.0313726, 0.0117647, 0.129412, 1)
|
||||||
|
|
@ -26,6 +26,7 @@ Scenes="*res://singletons/scene_reference.gd"
|
||||||
Steamworks="*res://dev-util/steamworks.gd"
|
Steamworks="*res://dev-util/steamworks.gd"
|
||||||
PromptManager="*res://addons/input_prompts/input_prompt_manager.gd"
|
PromptManager="*res://addons/input_prompts/input_prompt_manager.gd"
|
||||||
Steam="*res://dev-util/steam.gd"
|
Steam="*res://dev-util/steam.gd"
|
||||||
|
Main="*res://singletons/main/main.tscn"
|
||||||
|
|
||||||
[debug]
|
[debug]
|
||||||
|
|
||||||
|
|
@ -199,6 +200,10 @@ locale/test="de"
|
||||||
3d_physics/layer_5="UI_reveal"
|
3d_physics/layer_5="UI_reveal"
|
||||||
3d_physics/layer_6="UI_handle"
|
3d_physics/layer_6="UI_handle"
|
||||||
|
|
||||||
|
[memory]
|
||||||
|
|
||||||
|
limits/message_queue/max_size_mb=2048
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
textures/vram_compression/import_etc2_astc=true
|
textures/vram_compression/import_etc2_astc=true
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
@tool
|
|
||||||
class_name MenuSetting extends Resource
|
class_name MenuSetting extends Resource
|
||||||
|
|
||||||
enum Receivers {
|
enum Receivers {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,21 @@
|
||||||
@tool
|
extends Node
|
||||||
extends Node
|
class_name GlobalState
|
||||||
|
|
||||||
#region configuration
|
#region configuration
|
||||||
signal settings_changed
|
signal settings_changed
|
||||||
var settings_initialised
|
var _settings_initialized
|
||||||
|
|
||||||
|
var room: RoomTemplate
|
||||||
|
var save_game: SaveGame
|
||||||
|
signal environment_settings_changed
|
||||||
|
|
||||||
|
# FIXME find a better way to switch fonts and maybe emit the theme_changed signal!
|
||||||
|
signal theme_changed
|
||||||
|
var current_main_theme:Theme = preload("res://logic-scenes/themes/handwriting.theme")
|
||||||
|
|
||||||
|
func set_theme(new_theme:Theme):
|
||||||
|
current_main_theme = new_theme
|
||||||
|
theme_changed.emit(new_theme)
|
||||||
|
|
||||||
@export_file var user_settings_path:String = "user://user_settings.json"
|
@export_file var user_settings_path:String = "user://user_settings.json"
|
||||||
@export_file var user_saves_path:String = "user://savegames"
|
@export_file var user_saves_path:String = "user://savegames"
|
||||||
|
|
@ -12,45 +24,45 @@ var settings_initialised
|
||||||
@export var reduce_motion: bool = false:
|
@export var reduce_motion: bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
reduce_motion = value
|
reduce_motion = value
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
@export var screen_reader_enabled:bool = false:
|
@export var screen_reader_enabled:bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
screen_reader_enabled = value
|
screen_reader_enabled = value
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
|
|
||||||
@export var rendering_disabled: bool = false:
|
@export var rendering_disabled: bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
rendering_disabled = value
|
rendering_disabled = value
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
@export var use_simplified_navigation:bool = false:
|
@export var use_simplified_navigation:bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
use_simplified_navigation = value
|
use_simplified_navigation = value
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
@export var enable_hyperacoustic_filter: bool = false:
|
@export var enable_hyperacoustic_filter: bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
enable_hyperacoustic_filter = value
|
enable_hyperacoustic_filter = value
|
||||||
if enable_hyperacoustic_filter:
|
if enable_hyperacoustic_filter:
|
||||||
AudioServer.set_bus_effect_enabled(0, 0, enable_hyperacoustic_filter)
|
AudioServer.set_bus_effect_enabled(0, 0, enable_hyperacoustic_filter)
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
@export var show_navigation_buttons: bool = false:
|
@export var show_navigation_buttons: bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
show_navigation_buttons = value
|
show_navigation_buttons = value
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
@export_enum("handwriting", "serif", "legible", "system") var font_style: int = 0:
|
@export_enum("handwriting", "serif", "legible", "system") var font_style: int = 0:
|
||||||
set(value):
|
set(value):
|
||||||
font_style = value
|
font_style = value
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
@export_enum("disabled", "text", "cc") var subtitles: int = false:
|
@export_enum("disabled", "text", "cc") var subtitles: int = false:
|
||||||
set(value):
|
set(value):
|
||||||
subtitles = value
|
subtitles = value
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
@export var ui_scaling: float = 1:
|
@export var ui_scaling: float = 1:
|
||||||
set(value):
|
set(value):
|
||||||
|
|
@ -60,22 +72,19 @@ var settings_initialised
|
||||||
@export var show_content_notes: bool = false:
|
@export var show_content_notes: bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
show_content_notes = value
|
show_content_notes = value
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
@export var provide_summaries: bool = false:
|
@export var provide_summaries: bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
provide_summaries = value
|
provide_summaries = value
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
@export var allow_skipping: bool = false:
|
@export var allow_skipping: bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
allow_skipping = value
|
allow_skipping = value
|
||||||
if settings_initialised:
|
if _settings_initialized:
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
|
|
||||||
# FIXME find a better way to switch fonts and maybe emit the theme_changed signal!
|
|
||||||
var current_main_theme:Theme = preload("res://logic-scenes/themes/handwriting.theme")
|
|
||||||
|
|
||||||
@export_group("AudioSettings")
|
@export_group("AudioSettings")
|
||||||
@export var main_volume:float = 1:
|
@export var main_volume:float = 1:
|
||||||
set(volume):
|
set(volume):
|
||||||
|
|
@ -141,23 +150,18 @@ var ssil_enable:bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
ssil_enable = value
|
ssil_enable = value
|
||||||
environment_settings_changed.emit()
|
environment_settings_changed.emit()
|
||||||
|
|
||||||
var sdfgi_enable:bool = false:
|
var sdfgi_enable:bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
sdfgi_enable = value
|
sdfgi_enable = value
|
||||||
environment_settings_changed.emit()
|
environment_settings_changed.emit()
|
||||||
|
|
||||||
var active_save_game: SaveGame
|
|
||||||
|
|
||||||
signal environment_settings_changed
|
|
||||||
signal theme_changed
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func load_user_settings():
|
func load_user_settings():
|
||||||
|
|
||||||
if FileAccess.file_exists(user_settings_path):
|
if FileAccess.file_exists(user_settings_path):
|
||||||
var file = FileAccess.open(user_settings_path, FileAccess.READ)
|
var file := FileAccess.open(user_settings_path, FileAccess.READ)
|
||||||
var raw_json = FileAccess.get_file_as_string(user_settings_path)
|
var raw_json := FileAccess.get_file_as_string(user_settings_path)
|
||||||
file.close()
|
file.close()
|
||||||
var parsed: Dictionary = JSON.parse_string(raw_json)
|
var parsed: Dictionary = JSON.parse_string(raw_json)
|
||||||
|
|
||||||
|
|
@ -173,11 +177,11 @@ func load_user_settings():
|
||||||
if out[0] == "reduce":
|
if out[0] == "reduce":
|
||||||
reduce_motion = true
|
reduce_motion = true
|
||||||
|
|
||||||
settings_initialised = true
|
_settings_initialized = true
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
|
|
||||||
func save_settings():
|
func save_settings():
|
||||||
var out_dict = {
|
var out_dict := {
|
||||||
"accessability": {
|
"accessability": {
|
||||||
"reduce_motion:": reduce_motion,
|
"reduce_motion:": reduce_motion,
|
||||||
"screen_reader_enabled": screen_reader_enabled,
|
"screen_reader_enabled": screen_reader_enabled,
|
||||||
|
|
@ -215,11 +219,11 @@ func save_settings():
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var file = FileAccess.open(user_settings_path, FileAccess.WRITE)
|
var file := FileAccess.open(user_settings_path, FileAccess.WRITE)
|
||||||
file.store_string(JSON.stringify(out_dict))
|
file.store_string(JSON.stringify(out_dict))
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
settings_initialised = true
|
_settings_initialized = true
|
||||||
settings_changed.emit()
|
settings_changed.emit()
|
||||||
|
|
||||||
var last_mode := DisplayServer.WINDOW_MODE_WINDOWED
|
var last_mode := DisplayServer.WINDOW_MODE_WINDOWED
|
||||||
|
|
@ -242,10 +246,10 @@ func _ready():
|
||||||
await get_tree().process_frame
|
await get_tree().process_frame
|
||||||
|
|
||||||
for child in get_tree().root.get_children():
|
for child in get_tree().root.get_children():
|
||||||
if child is RoomTemplate and active_save_game == null:
|
if child is RoomTemplate and save_game == null:
|
||||||
push_warning("Room initialised without a SaveGame. Creating proxy save.")
|
push_warning("Room initialised without a SaveGame. Creating proxy save.")
|
||||||
#TODO: make this a bit more clean maybe?
|
#TODO: make this a bit more clean maybe?
|
||||||
active_save_game = ResourceLoader.load("res://dev-util/debug_save.tres")
|
save_game = ResourceLoader.load("res://dev-util/debug_save.tres")
|
||||||
if "has_stage" in child:
|
if "has_stage" in child:
|
||||||
pass_stage_to(child)
|
pass_stage_to(child)
|
||||||
break
|
break
|
||||||
|
|
@ -287,8 +291,6 @@ func leave_stage(actor:Object) -> bool:
|
||||||
|
|
||||||
return false
|
return false
|
||||||
|
|
||||||
func get_current_actor(): return stage_list.front()
|
|
||||||
|
|
||||||
# Used to put a new target on top of the Focus Stack.
|
# Used to put a new target on top of the Focus Stack.
|
||||||
func pass_stage_to(target:Object, force = false, lock_focus = false) -> bool:
|
func pass_stage_to(target:Object, force = false, lock_focus = false) -> bool:
|
||||||
if "pass_to_actor" in target:
|
if "pass_to_actor" in target:
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,232 @@
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
@export_file(".tscn") var youth_room_path: String
|
||||||
|
@export_file(".tscn") var transition_room_path: String
|
||||||
|
@export_file(".tscn") var adulthood_room_path: String
|
||||||
|
@export_file(".tscn") var ending_path: String
|
||||||
|
|
||||||
|
@onready var main_menu: MainMenu = %MainMenu
|
||||||
|
@onready var pause_menu: PauseManu = %PauseMenu
|
||||||
|
@onready var menu_animation: AnimationTree = %MenuAnimationTree
|
||||||
|
@onready var state_machine: AnimationNodeStateMachinePlayback = menu_animation["parameters/playback"]
|
||||||
|
|
||||||
|
@onready var room_paths := {
|
||||||
|
State.rooms.NULL: youth_room_path, # Maybe Draeven story?
|
||||||
|
State.rooms.YOUTH: youth_room_path,
|
||||||
|
State.rooms.TRANSITION: transition_room_path,
|
||||||
|
State.rooms.ADULTHOOD: adulthood_room_path,
|
||||||
|
State.rooms.ENDING: ending_path
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
print_debug("main.gd: ready()")
|
||||||
|
if State.room == null:
|
||||||
|
_open()
|
||||||
|
var path := await main_menu.execute()
|
||||||
|
_close()
|
||||||
|
await _load_room(path)
|
||||||
|
else:
|
||||||
|
hide()
|
||||||
|
await _mainloop() # Debug functionality
|
||||||
|
|
||||||
|
|
||||||
|
func _mainloop() -> void:
|
||||||
|
while true:
|
||||||
|
var next_scene := await State.room.play()
|
||||||
|
if (next_scene == null):
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
await _load_room(youth_room_path)
|
||||||
|
|
||||||
|
|
||||||
|
func _load_room(next_path: String) -> void:
|
||||||
|
if State.room != null:
|
||||||
|
State.room.unload()
|
||||||
|
ResourceLoader.load_threaded_request(next_path, "PackedScene", true)
|
||||||
|
while true:
|
||||||
|
await get_tree().process_frame
|
||||||
|
var state := ResourceLoader.load_threaded_get_status(next_path)
|
||||||
|
match state:
|
||||||
|
ResourceLoader.THREAD_LOAD_LOADED:
|
||||||
|
var next_scene := ResourceLoader.load_threaded_get(youth_room_path) as PackedScene
|
||||||
|
State.room = next_scene.instantiate() as RoomTemplate
|
||||||
|
get_tree().root.add_child(State.room)
|
||||||
|
hide()
|
||||||
|
break
|
||||||
|
ResourceLoader.THREAD_LOAD_FAILED:
|
||||||
|
push_error("Failed to load youth room scene.")
|
||||||
|
return
|
||||||
|
|
||||||
|
# TODO: ugh, godot tweens are the wurst
|
||||||
|
func _open() -> void:
|
||||||
|
show()
|
||||||
|
menu_animation["parameters/conditions/loading_done"] = false
|
||||||
|
menu_animation["parameters/conditions/load_save"] = false
|
||||||
|
|
||||||
|
func _close() -> void:
|
||||||
|
pass
|
||||||
|
|
||||||
|
#
|
||||||
|
#var in_game = false
|
||||||
|
#
|
||||||
|
#var current_room: RoomTemplate
|
||||||
|
#var currently_loading_room: String = "":
|
||||||
|
# set(path):
|
||||||
|
# if path != "":
|
||||||
|
# ResourceLoader.load_threaded_request(path, "PackedScene")
|
||||||
|
# menu_animation["parameters/conditions/loading_done"] = false
|
||||||
|
# menu_animation["parameters/conditions/load_save"] = true
|
||||||
|
# else:
|
||||||
|
# menu_animation["parameters/conditions/loading_done"] = true
|
||||||
|
# menu_animation["parameters/conditions/load_save"] = false
|
||||||
|
#
|
||||||
|
# currently_loading_room = path
|
||||||
|
#
|
||||||
|
## Called when the node enters the scene tree for the first time.
|
||||||
|
#func _ready():
|
||||||
|
# main_menu.start_game.connect(load_save)
|
||||||
|
# main_menu.roll_credits.connect(func(): state_machine.travel("credits_roll"))
|
||||||
|
# get_tree().tree_process_mode_changed.connect(pause_mode_changed)
|
||||||
|
# await get_tree().process_frame
|
||||||
|
# currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
|
||||||
|
# State.pass_stage_to(main_menu)
|
||||||
|
#
|
||||||
|
# Scenes.scene_starting.connect(prepare_transition)
|
||||||
|
# Scenes.scene_finished.connect(transition)
|
||||||
|
#
|
||||||
|
#func _process(_delta: float) -> void:
|
||||||
|
# if currently_loading_room != "" and not await_swap:
|
||||||
|
# if ResourceLoader.load_threaded_get_status(currently_loading_room) == 3:
|
||||||
|
# if not current_room == null:
|
||||||
|
# current_room.queue_free()
|
||||||
|
# State.onready_room = get_room_id_from_path(currently_loading_room)
|
||||||
|
# current_room = ResourceLoader.load_threaded_get(currently_loading_room).instantiate()
|
||||||
|
# print_debug("add room")
|
||||||
|
# add_child(current_room)
|
||||||
|
# State.onready_room = State.rooms.NULL
|
||||||
|
# move_child(current_room, 0)
|
||||||
|
# currently_loading_room = ""
|
||||||
|
# room_loaded.emit()
|
||||||
|
#
|
||||||
|
# if Input.is_action_just_pressed("reset_demo") and (OS.has_feature("demo") or true):
|
||||||
|
# State.stage_list = [self]
|
||||||
|
# _return_to_menu()
|
||||||
|
#
|
||||||
|
func _unhandled_input(event: InputEvent) -> void:
|
||||||
|
if event is InputEvent:
|
||||||
|
if event.is_action_pressed("ui_menu"):
|
||||||
|
toggle_pause_menu()
|
||||||
|
|
||||||
|
func toggle_pause_menu():
|
||||||
|
print_debug("Toggling pause menu")
|
||||||
|
pass
|
||||||
|
|
||||||
|
# if not get_tree().paused:
|
||||||
|
# get_tree().paused = true
|
||||||
|
# var state_machine := menu_animation["parameters/playback"]
|
||||||
|
# state_machine.travel("reveal_pause_menu")
|
||||||
|
# Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||||
|
# else:
|
||||||
|
# get_tree().paused = false
|
||||||
|
# var state_machine := menu_animation["parameters/playback"]
|
||||||
|
# state_machine.travel("start_game")
|
||||||
|
#
|
||||||
|
# if State.stage_list[0] is Player:
|
||||||
|
# Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||||
|
|
||||||
|
#func debug_youth():
|
||||||
|
# get_child(1).hide()
|
||||||
|
# get_child(2).hide()
|
||||||
|
# get_child(3).hide()
|
||||||
|
# get_child(0).get_ready()
|
||||||
|
# get_child(0).start()
|
||||||
|
#
|
||||||
|
#func _return_to_menu():
|
||||||
|
# State.active_save_game = null
|
||||||
|
#
|
||||||
|
# menu_animation["parameters/conditions/start_game"] = false
|
||||||
|
#
|
||||||
|
# State.pass_stage_to(main_menu)
|
||||||
|
#
|
||||||
|
# currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
|
||||||
|
#
|
||||||
|
# menu_animation["parameters/conditions/return_to_menu"] = true
|
||||||
|
# await(get_tree().create_timer(0.5).timeout)
|
||||||
|
# menu_animation["parameters/conditions/return_to_menu"] = false
|
||||||
|
# _on_ready_to_unload()
|
||||||
|
#
|
||||||
|
#func load_save(save: SaveGame):
|
||||||
|
#
|
||||||
|
# if currently_loading_room != "":
|
||||||
|
# await(room_loaded)
|
||||||
|
#
|
||||||
|
# if save.current_room != current_room.id:
|
||||||
|
# # TODO Prevent race condition from appearing when save is loaded while room is still loading.
|
||||||
|
# currently_loading_room = get_room_path_from_id(save.current_room)
|
||||||
|
# await(room_loaded)
|
||||||
|
#
|
||||||
|
# menu_animation["parameters/conditions/start_game"] = true
|
||||||
|
#
|
||||||
|
# State.active_save_game = save
|
||||||
|
# in_game = true
|
||||||
|
# current_room.start_room()
|
||||||
|
#
|
||||||
|
#func _on_ready_to_unload():
|
||||||
|
# if get_child(0) is Node3D:
|
||||||
|
# get_child(0).free()
|
||||||
|
#
|
||||||
|
#func get_room_path_from_id(id: State.rooms) -> String:
|
||||||
|
# match id:
|
||||||
|
# State.rooms.YOUTH, State.rooms.NULL:
|
||||||
|
# return youth_room_path
|
||||||
|
# State.rooms.TRANSITION:
|
||||||
|
# return transition_room_path
|
||||||
|
# State.rooms.ADULTHOOD:
|
||||||
|
# return adulthood_room_path
|
||||||
|
# _:
|
||||||
|
# return ending_path
|
||||||
|
#
|
||||||
|
#func get_room_id_from_path(path: String) -> State.rooms:
|
||||||
|
# match path:
|
||||||
|
# youth_room_path:
|
||||||
|
# return State.rooms.YOUTH
|
||||||
|
# transition_room_path:
|
||||||
|
# return State.rooms.TRANSITION
|
||||||
|
# adulthood_room_path:
|
||||||
|
# return State.rooms.ADULTHOOD
|
||||||
|
# _:
|
||||||
|
# return State.rooms.NULL
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#func start_demo():
|
||||||
|
# #FIXME this causes the room to reload
|
||||||
|
# #load_save(SaveGame.new())
|
||||||
|
# current_room.start_room()
|
||||||
|
# in_game = true
|
||||||
|
#
|
||||||
|
#func pause_mode_changed():
|
||||||
|
# print_debug(get_tree().paused)
|
||||||
|
#
|
||||||
|
#var await_swap: bool = false
|
||||||
|
#func prepare_transition(scene_id: Scenes.id, _repeat):
|
||||||
|
# if scene_id == Scenes.id.TRANSITION:
|
||||||
|
# await_swap = true
|
||||||
|
# #FIXME: this does not need to be part of the sequence
|
||||||
|
# await(get_tree().process_frame)
|
||||||
|
# current_room.prepare_transition()
|
||||||
|
# if not _repeat:
|
||||||
|
# currently_loading_room = get_room_path_from_id(State.rooms.TRANSITION)
|
||||||
|
# else:
|
||||||
|
#
|
||||||
|
# currently_loading_room = get_room_path_from_id(State.rooms.ADULTHOOD)
|
||||||
|
#
|
||||||
|
#func transition(scene_id: Scenes.id, _repeat):
|
||||||
|
# if scene_id == Scenes.id.TRANSITION:
|
||||||
|
# State.reset_focus()
|
||||||
|
# await_swap = false
|
||||||
|
# await room_loaded
|
||||||
|
# if not _repeat:
|
||||||
|
# State.queue_for_stage(current_room)
|
||||||
|
# Scenes.end_current_sequence()
|
||||||
|
# else:
|
||||||
|
# State.pass_stage_to(current_room)
|
||||||
|
|
@ -1,15 +1,16 @@
|
||||||
[gd_scene load_steps=68 format=3 uid="uid://befxf8uruwnrl"]
|
[gd_scene load_steps=69 format=3 uid="uid://befxf8uruwnrl"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://k8yppfbkq0xv" path="res://main.gd" id="1_rqkns"]
|
[ext_resource type="Script" uid="uid://k8yppfbkq0xv" path="res://singletons/main/main.gd" id="1_rqkns"]
|
||||||
[ext_resource type="PackedScene" uid="uid://gldtxysavetf" path="res://logic-scenes/startup/startup.tscn" id="1_v5rpm"]
|
[ext_resource type="PackedScene" uid="uid://gldtxysavetf" path="res://logic-scenes/startup/startup.tscn" id="1_v5rpm"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b51wdql4mby47" path="res://main_menu.tscn" id="3_ik73t"]
|
[ext_resource type="PackedScene" uid="uid://b51wdql4mby47" path="res://ui/menu_main/main_menu.tscn" id="3_ik73t"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d031kxe5m4ihh" path="res://import/interface-elements/loading_rect_clip.png" id="5_sr555"]
|
[ext_resource type="Texture2D" uid="uid://d031kxe5m4ihh" path="res://import/interface-elements/loading_rect_clip.png" id="5_sr555"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bqf82f8dk4yun" path="res://import/interface-elements/loading_rect_frame.png" id="6_aaaxa"]
|
[ext_resource type="Texture2D" uid="uid://bqf82f8dk4yun" path="res://import/interface-elements/loading_rect_frame.png" id="6_aaaxa"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dpftqdvtrkioh" path="res://import/interface-elements/loading_rect_deco.png" id="7_koraw"]
|
[ext_resource type="Texture2D" uid="uid://dpftqdvtrkioh" path="res://import/interface-elements/loading_rect_deco.png" id="7_koraw"]
|
||||||
[ext_resource type="PackedScene" uid="uid://6aaxpvoepqrm" path="res://disclaimer.tscn" id="7_t45fc"]
|
[ext_resource type="PackedScene" uid="uid://6aaxpvoepqrm" path="res://logic-scenes/disclaimer/disclaimer.tscn" id="7_t45fc"]
|
||||||
[ext_resource type="AudioStream" uid="uid://fej7yw25lgqy" path="res://import/menu_music/Ambient 6.ogg" id="8_tptb8"]
|
[ext_resource type="AudioStream" uid="uid://fej7yw25lgqy" path="res://import/menu_music/Ambient 6.ogg" id="8_tptb8"]
|
||||||
[ext_resource type="Script" uid="uid://0h0lrkntx0uh" path="res://logic-scenes/main menu/pause_menu.gd" id="9_ihfph"]
|
[ext_resource type="Script" uid="uid://0h0lrkntx0uh" path="res://ui/menu_main/pause_menu.gd" id="9_ihfph"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="9_l7v4b"]
|
[ext_resource type="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="9_l7v4b"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://d3ewjumh0b0g6" path="res://ui/menu_main/logo.png" id="9_tqjky"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bdyg065h8vcdi" path="res://base-environments/youth_room/shaders/starlight-textures.png" id="10_pipov"]
|
[ext_resource type="Texture2D" uid="uid://bdyg065h8vcdi" path="res://base-environments/youth_room/shaders/starlight-textures.png" id="10_pipov"]
|
||||||
[ext_resource type="Script" uid="uid://dbap0gqox0ty1" path="res://addons/markdownlabel/markdownlabel.gd" id="12_074og"]
|
[ext_resource type="Script" uid="uid://dbap0gqox0ty1" path="res://addons/markdownlabel/markdownlabel.gd" id="12_074og"]
|
||||||
[ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="12_cegan"]
|
[ext_resource type="Script" uid="uid://sa15wakvpj2e" path="res://dev-util/bug_button.gd" id="12_cegan"]
|
||||||
|
|
@ -107,7 +108,7 @@ tracks/3/keys = {
|
||||||
tracks/4/type = "value"
|
tracks/4/type = "value"
|
||||||
tracks/4/imported = false
|
tracks/4/imported = false
|
||||||
tracks/4/enabled = true
|
tracks/4/enabled = true
|
||||||
tracks/4/path = NodePath("../../Panel:modulate")
|
tracks/4/path = NodePath("../../Background:modulate")
|
||||||
tracks/4/interp = 1
|
tracks/4/interp = 1
|
||||||
tracks/4/loop_wrap = true
|
tracks/4/loop_wrap = true
|
||||||
tracks/4/keys = {
|
tracks/4/keys = {
|
||||||
|
|
@ -119,7 +120,7 @@ tracks/4/keys = {
|
||||||
tracks/5/type = "value"
|
tracks/5/type = "value"
|
||||||
tracks/5/imported = false
|
tracks/5/imported = false
|
||||||
tracks/5/enabled = true
|
tracks/5/enabled = true
|
||||||
tracks/5/path = NodePath("../../Main Menu:modulate")
|
tracks/5/path = NodePath("../../MainMenu:modulate")
|
||||||
tracks/5/interp = 1
|
tracks/5/interp = 1
|
||||||
tracks/5/loop_wrap = true
|
tracks/5/loop_wrap = true
|
||||||
tracks/5/keys = {
|
tracks/5/keys = {
|
||||||
|
|
@ -131,7 +132,7 @@ tracks/5/keys = {
|
||||||
tracks/6/type = "value"
|
tracks/6/type = "value"
|
||||||
tracks/6/imported = false
|
tracks/6/imported = false
|
||||||
tracks/6/enabled = true
|
tracks/6/enabled = true
|
||||||
tracks/6/path = NodePath("../../Main Menu:visible")
|
tracks/6/path = NodePath("../../MainMenu:visible")
|
||||||
tracks/6/interp = 1
|
tracks/6/interp = 1
|
||||||
tracks/6/loop_wrap = true
|
tracks/6/loop_wrap = true
|
||||||
tracks/6/keys = {
|
tracks/6/keys = {
|
||||||
|
|
@ -143,7 +144,7 @@ tracks/6/keys = {
|
||||||
tracks/7/type = "value"
|
tracks/7/type = "value"
|
||||||
tracks/7/imported = false
|
tracks/7/imported = false
|
||||||
tracks/7/enabled = true
|
tracks/7/enabled = true
|
||||||
tracks/7/path = NodePath("../../Panel:visible")
|
tracks/7/path = NodePath("../../Background:visible")
|
||||||
tracks/7/interp = 1
|
tracks/7/interp = 1
|
||||||
tracks/7/loop_wrap = true
|
tracks/7/loop_wrap = true
|
||||||
tracks/7/keys = {
|
tracks/7/keys = {
|
||||||
|
|
@ -203,7 +204,7 @@ tracks/11/keys = {
|
||||||
tracks/12/type = "value"
|
tracks/12/type = "value"
|
||||||
tracks/12/imported = false
|
tracks/12/imported = false
|
||||||
tracks/12/enabled = true
|
tracks/12/enabled = true
|
||||||
tracks/12/path = NodePath("%Main Menu:visible")
|
tracks/12/path = NodePath("../../MainMenu:visible")
|
||||||
tracks/12/interp = 1
|
tracks/12/interp = 1
|
||||||
tracks/12/loop_wrap = true
|
tracks/12/loop_wrap = true
|
||||||
tracks/12/keys = {
|
tracks/12/keys = {
|
||||||
|
|
@ -215,7 +216,7 @@ tracks/12/keys = {
|
||||||
tracks/13/type = "value"
|
tracks/13/type = "value"
|
||||||
tracks/13/imported = false
|
tracks/13/imported = false
|
||||||
tracks/13/enabled = true
|
tracks/13/enabled = true
|
||||||
tracks/13/path = NodePath("%Main Menu:modulate")
|
tracks/13/path = NodePath("../../MainMenu:modulate")
|
||||||
tracks/13/interp = 1
|
tracks/13/interp = 1
|
||||||
tracks/13/loop_wrap = true
|
tracks/13/loop_wrap = true
|
||||||
tracks/13/keys = {
|
tracks/13/keys = {
|
||||||
|
|
@ -303,7 +304,7 @@ length = 130.003
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
tracks/0/path = NodePath("../../Main Menu:visible")
|
tracks/0/path = NodePath("../../MainMenu:visible")
|
||||||
tracks/0/interp = 0
|
tracks/0/interp = 0
|
||||||
tracks/0/loop_wrap = true
|
tracks/0/loop_wrap = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
|
|
@ -330,7 +331,7 @@ tracks/1/use_blend = true
|
||||||
tracks/2/type = "value"
|
tracks/2/type = "value"
|
||||||
tracks/2/imported = false
|
tracks/2/imported = false
|
||||||
tracks/2/enabled = true
|
tracks/2/enabled = true
|
||||||
tracks/2/path = NodePath("../../Panel:visible")
|
tracks/2/path = NodePath("../../Background:visible")
|
||||||
tracks/2/interp = 1
|
tracks/2/interp = 1
|
||||||
tracks/2/loop_wrap = true
|
tracks/2/loop_wrap = true
|
||||||
tracks/2/keys = {
|
tracks/2/keys = {
|
||||||
|
|
@ -342,7 +343,7 @@ tracks/2/keys = {
|
||||||
tracks/3/type = "value"
|
tracks/3/type = "value"
|
||||||
tracks/3/imported = false
|
tracks/3/imported = false
|
||||||
tracks/3/enabled = true
|
tracks/3/enabled = true
|
||||||
tracks/3/path = NodePath("../../Panel:modulate")
|
tracks/3/path = NodePath("../../Background:modulate")
|
||||||
tracks/3/interp = 1
|
tracks/3/interp = 1
|
||||||
tracks/3/loop_wrap = true
|
tracks/3/loop_wrap = true
|
||||||
tracks/3/keys = {
|
tracks/3/keys = {
|
||||||
|
|
@ -390,7 +391,7 @@ tracks/6/keys = {
|
||||||
tracks/7/type = "value"
|
tracks/7/type = "value"
|
||||||
tracks/7/imported = false
|
tracks/7/imported = false
|
||||||
tracks/7/enabled = true
|
tracks/7/enabled = true
|
||||||
tracks/7/path = NodePath("%Main Menu:modulate")
|
tracks/7/path = NodePath("../../MainMenu:modulate")
|
||||||
tracks/7/interp = 1
|
tracks/7/interp = 1
|
||||||
tracks/7/loop_wrap = true
|
tracks/7/loop_wrap = true
|
||||||
tracks/7/keys = {
|
tracks/7/keys = {
|
||||||
|
|
@ -454,7 +455,7 @@ tracks/3/keys = {
|
||||||
tracks/4/type = "value"
|
tracks/4/type = "value"
|
||||||
tracks/4/imported = false
|
tracks/4/imported = false
|
||||||
tracks/4/enabled = true
|
tracks/4/enabled = true
|
||||||
tracks/4/path = NodePath("%Main Menu:visible")
|
tracks/4/path = NodePath("../../MainMenu:visible")
|
||||||
tracks/4/interp = 1
|
tracks/4/interp = 1
|
||||||
tracks/4/loop_wrap = true
|
tracks/4/loop_wrap = true
|
||||||
tracks/4/keys = {
|
tracks/4/keys = {
|
||||||
|
|
@ -470,7 +471,7 @@ length = 0.5
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
tracks/0/path = NodePath("../../Panel:modulate")
|
tracks/0/path = NodePath("../../Background:modulate")
|
||||||
tracks/0/interp = 1
|
tracks/0/interp = 1
|
||||||
tracks/0/loop_wrap = true
|
tracks/0/loop_wrap = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
|
|
@ -482,7 +483,7 @@ tracks/0/keys = {
|
||||||
tracks/1/type = "value"
|
tracks/1/type = "value"
|
||||||
tracks/1/imported = false
|
tracks/1/imported = false
|
||||||
tracks/1/enabled = true
|
tracks/1/enabled = true
|
||||||
tracks/1/path = NodePath("../../Panel:visible")
|
tracks/1/path = NodePath("../../Background:visible")
|
||||||
tracks/1/interp = 1
|
tracks/1/interp = 1
|
||||||
tracks/1/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
|
|
@ -494,7 +495,7 @@ tracks/1/keys = {
|
||||||
tracks/2/type = "value"
|
tracks/2/type = "value"
|
||||||
tracks/2/imported = false
|
tracks/2/imported = false
|
||||||
tracks/2/enabled = true
|
tracks/2/enabled = true
|
||||||
tracks/2/path = NodePath("%Main Menu:visible")
|
tracks/2/path = NodePath("../../MainMenu:visible")
|
||||||
tracks/2/interp = 1
|
tracks/2/interp = 1
|
||||||
tracks/2/loop_wrap = true
|
tracks/2/loop_wrap = true
|
||||||
tracks/2/keys = {
|
tracks/2/keys = {
|
||||||
|
|
@ -506,7 +507,7 @@ tracks/2/keys = {
|
||||||
tracks/3/type = "value"
|
tracks/3/type = "value"
|
||||||
tracks/3/imported = false
|
tracks/3/imported = false
|
||||||
tracks/3/enabled = true
|
tracks/3/enabled = true
|
||||||
tracks/3/path = NodePath("%Main Menu:modulate")
|
tracks/3/path = NodePath("../../MainMenu:modulate")
|
||||||
tracks/3/interp = 1
|
tracks/3/interp = 1
|
||||||
tracks/3/loop_wrap = true
|
tracks/3/loop_wrap = true
|
||||||
tracks/3/keys = {
|
tracks/3/keys = {
|
||||||
|
|
@ -558,7 +559,7 @@ tracks/2/keys = {
|
||||||
tracks/3/type = "value"
|
tracks/3/type = "value"
|
||||||
tracks/3/imported = false
|
tracks/3/imported = false
|
||||||
tracks/3/enabled = true
|
tracks/3/enabled = true
|
||||||
tracks/3/path = NodePath("../../Panel:modulate")
|
tracks/3/path = NodePath("../../Background:modulate")
|
||||||
tracks/3/interp = 1
|
tracks/3/interp = 1
|
||||||
tracks/3/loop_wrap = true
|
tracks/3/loop_wrap = true
|
||||||
tracks/3/keys = {
|
tracks/3/keys = {
|
||||||
|
|
@ -570,7 +571,7 @@ tracks/3/keys = {
|
||||||
tracks/4/type = "value"
|
tracks/4/type = "value"
|
||||||
tracks/4/imported = false
|
tracks/4/imported = false
|
||||||
tracks/4/enabled = true
|
tracks/4/enabled = true
|
||||||
tracks/4/path = NodePath("../../Panel:visible")
|
tracks/4/path = NodePath("../../Background:visible")
|
||||||
tracks/4/interp = 1
|
tracks/4/interp = 1
|
||||||
tracks/4/loop_wrap = true
|
tracks/4/loop_wrap = true
|
||||||
tracks/4/keys = {
|
tracks/4/keys = {
|
||||||
|
|
@ -671,7 +672,7 @@ tracks/3/keys = {
|
||||||
tracks/4/type = "value"
|
tracks/4/type = "value"
|
||||||
tracks/4/imported = false
|
tracks/4/imported = false
|
||||||
tracks/4/enabled = true
|
tracks/4/enabled = true
|
||||||
tracks/4/path = NodePath("../../Panel:modulate")
|
tracks/4/path = NodePath("../../Background:modulate")
|
||||||
tracks/4/interp = 1
|
tracks/4/interp = 1
|
||||||
tracks/4/loop_wrap = true
|
tracks/4/loop_wrap = true
|
||||||
tracks/4/keys = {
|
tracks/4/keys = {
|
||||||
|
|
@ -683,7 +684,7 @@ tracks/4/keys = {
|
||||||
tracks/5/type = "value"
|
tracks/5/type = "value"
|
||||||
tracks/5/imported = false
|
tracks/5/imported = false
|
||||||
tracks/5/enabled = true
|
tracks/5/enabled = true
|
||||||
tracks/5/path = NodePath("../../Main Menu:modulate")
|
tracks/5/path = NodePath("../../MainMenu:modulate")
|
||||||
tracks/5/interp = 1
|
tracks/5/interp = 1
|
||||||
tracks/5/loop_wrap = true
|
tracks/5/loop_wrap = true
|
||||||
tracks/5/keys = {
|
tracks/5/keys = {
|
||||||
|
|
@ -695,7 +696,7 @@ tracks/5/keys = {
|
||||||
tracks/6/type = "value"
|
tracks/6/type = "value"
|
||||||
tracks/6/imported = false
|
tracks/6/imported = false
|
||||||
tracks/6/enabled = true
|
tracks/6/enabled = true
|
||||||
tracks/6/path = NodePath("../../Panel:visible")
|
tracks/6/path = NodePath("../../Background:visible")
|
||||||
tracks/6/interp = 1
|
tracks/6/interp = 1
|
||||||
tracks/6/loop_wrap = true
|
tracks/6/loop_wrap = true
|
||||||
tracks/6/keys = {
|
tracks/6/keys = {
|
||||||
|
|
@ -796,7 +797,7 @@ tracks/3/keys = {
|
||||||
tracks/4/type = "value"
|
tracks/4/type = "value"
|
||||||
tracks/4/imported = false
|
tracks/4/imported = false
|
||||||
tracks/4/enabled = true
|
tracks/4/enabled = true
|
||||||
tracks/4/path = NodePath("../../Panel:modulate")
|
tracks/4/path = NodePath("../../Background:modulate")
|
||||||
tracks/4/interp = 1
|
tracks/4/interp = 1
|
||||||
tracks/4/loop_wrap = true
|
tracks/4/loop_wrap = true
|
||||||
tracks/4/keys = {
|
tracks/4/keys = {
|
||||||
|
|
@ -808,7 +809,7 @@ tracks/4/keys = {
|
||||||
tracks/5/type = "value"
|
tracks/5/type = "value"
|
||||||
tracks/5/imported = false
|
tracks/5/imported = false
|
||||||
tracks/5/enabled = true
|
tracks/5/enabled = true
|
||||||
tracks/5/path = NodePath("../../Panel:visible")
|
tracks/5/path = NodePath("../../Background:visible")
|
||||||
tracks/5/interp = 1
|
tracks/5/interp = 1
|
||||||
tracks/5/loop_wrap = true
|
tracks/5/loop_wrap = true
|
||||||
tracks/5/keys = {
|
tracks/5/keys = {
|
||||||
|
|
@ -907,7 +908,7 @@ tracks/3/keys = {
|
||||||
tracks/4/type = "value"
|
tracks/4/type = "value"
|
||||||
tracks/4/imported = false
|
tracks/4/imported = false
|
||||||
tracks/4/enabled = true
|
tracks/4/enabled = true
|
||||||
tracks/4/path = NodePath("%Main Menu:visible")
|
tracks/4/path = NodePath("../../MainMenu:visible")
|
||||||
tracks/4/interp = 1
|
tracks/4/interp = 1
|
||||||
tracks/4/loop_wrap = true
|
tracks/4/loop_wrap = true
|
||||||
tracks/4/keys = {
|
tracks/4/keys = {
|
||||||
|
|
@ -923,7 +924,7 @@ length = 0.5
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
tracks/0/path = NodePath("../../Panel:modulate")
|
tracks/0/path = NodePath("../../Background:modulate")
|
||||||
tracks/0/interp = 1
|
tracks/0/interp = 1
|
||||||
tracks/0/loop_wrap = true
|
tracks/0/loop_wrap = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
|
|
@ -935,7 +936,7 @@ tracks/0/keys = {
|
||||||
tracks/1/type = "value"
|
tracks/1/type = "value"
|
||||||
tracks/1/imported = false
|
tracks/1/imported = false
|
||||||
tracks/1/enabled = true
|
tracks/1/enabled = true
|
||||||
tracks/1/path = NodePath("%Main Menu:modulate")
|
tracks/1/path = NodePath("../../MainMenu:modulate")
|
||||||
tracks/1/interp = 1
|
tracks/1/interp = 1
|
||||||
tracks/1/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
|
|
@ -947,7 +948,7 @@ tracks/1/keys = {
|
||||||
tracks/2/type = "value"
|
tracks/2/type = "value"
|
||||||
tracks/2/imported = false
|
tracks/2/imported = false
|
||||||
tracks/2/enabled = true
|
tracks/2/enabled = true
|
||||||
tracks/2/path = NodePath("%Main Menu:visible")
|
tracks/2/path = NodePath("../../MainMenu:visible")
|
||||||
tracks/2/interp = 1
|
tracks/2/interp = 1
|
||||||
tracks/2/loop_wrap = true
|
tracks/2/loop_wrap = true
|
||||||
tracks/2/keys = {
|
tracks/2/keys = {
|
||||||
|
|
@ -962,7 +963,7 @@ resource_name = "transition_load_game"
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
tracks/0/path = NodePath("../../Panel:modulate")
|
tracks/0/path = NodePath("../../Background:modulate")
|
||||||
tracks/0/interp = 1
|
tracks/0/interp = 1
|
||||||
tracks/0/loop_wrap = true
|
tracks/0/loop_wrap = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
|
|
@ -974,7 +975,7 @@ tracks/0/keys = {
|
||||||
tracks/1/type = "value"
|
tracks/1/type = "value"
|
||||||
tracks/1/imported = false
|
tracks/1/imported = false
|
||||||
tracks/1/enabled = true
|
tracks/1/enabled = true
|
||||||
tracks/1/path = NodePath("../../Main Menu:modulate")
|
tracks/1/path = NodePath("../../MainMenu:modulate")
|
||||||
tracks/1/interp = 1
|
tracks/1/interp = 1
|
||||||
tracks/1/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
|
|
@ -986,7 +987,7 @@ tracks/1/keys = {
|
||||||
tracks/2/type = "value"
|
tracks/2/type = "value"
|
||||||
tracks/2/imported = false
|
tracks/2/imported = false
|
||||||
tracks/2/enabled = true
|
tracks/2/enabled = true
|
||||||
tracks/2/path = NodePath("../../Main Menu:visible")
|
tracks/2/path = NodePath("../../MainMenu:visible")
|
||||||
tracks/2/interp = 1
|
tracks/2/interp = 1
|
||||||
tracks/2/loop_wrap = true
|
tracks/2/loop_wrap = true
|
||||||
tracks/2/keys = {
|
tracks/2/keys = {
|
||||||
|
|
@ -998,7 +999,7 @@ tracks/2/keys = {
|
||||||
tracks/3/type = "value"
|
tracks/3/type = "value"
|
||||||
tracks/3/imported = false
|
tracks/3/imported = false
|
||||||
tracks/3/enabled = true
|
tracks/3/enabled = true
|
||||||
tracks/3/path = NodePath("../../Panel:visible")
|
tracks/3/path = NodePath("../../Background:visible")
|
||||||
tracks/3/interp = 1
|
tracks/3/interp = 1
|
||||||
tracks/3/loop_wrap = true
|
tracks/3/loop_wrap = true
|
||||||
tracks/3/keys = {
|
tracks/3/keys = {
|
||||||
|
|
@ -1127,11 +1128,11 @@ advance_mode = 2
|
||||||
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_uwcb5"]
|
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_uwcb5"]
|
||||||
states/End/position = Vector2(981, 105)
|
states/End/position = Vector2(981, 105)
|
||||||
states/credits_roll/node = SubResource("AnimationNodeAnimation_2npx0")
|
states/credits_roll/node = SubResource("AnimationNodeAnimation_2npx0")
|
||||||
states/credits_roll/position = Vector2(877.91, 32)
|
states/credits_roll/position = Vector2(876.91, 32)
|
||||||
states/hide_pause_menu/node = SubResource("AnimationNodeAnimation_6p8we")
|
states/hide_pause_menu/node = SubResource("AnimationNodeAnimation_6p8we")
|
||||||
states/hide_pause_menu/position = Vector2(599, -42.7336)
|
states/hide_pause_menu/position = Vector2(599, -42.7336)
|
||||||
states/init/node = SubResource("AnimationNodeAnimation_8b66u")
|
states/init/node = SubResource("AnimationNodeAnimation_8b66u")
|
||||||
states/init/position = Vector2(401, 100)
|
states/init/position = Vector2(401, 104)
|
||||||
states/load_savegame/node = SubResource("AnimationNodeAnimation_ahhta")
|
states/load_savegame/node = SubResource("AnimationNodeAnimation_ahhta")
|
||||||
states/load_savegame/position = Vector2(751.91, 242)
|
states/load_savegame/position = Vector2(751.91, 242)
|
||||||
states/loading/node = SubResource("AnimationNodeAnimation_v66b5")
|
states/loading/node = SubResource("AnimationNodeAnimation_v66b5")
|
||||||
|
|
@ -1145,7 +1146,7 @@ states/reveal_pause_menu/position = Vector2(783.91, -112.734)
|
||||||
states/start_game/node = SubResource("AnimationNodeAnimation_5umfs")
|
states/start_game/node = SubResource("AnimationNodeAnimation_5umfs")
|
||||||
states/start_game/position = Vector2(698, 32)
|
states/start_game/position = Vector2(698, 32)
|
||||||
transitions = ["Start", "init", SubResource("AnimationNodeStateMachineTransition_dxdg4"), "init", "loading", SubResource("AnimationNodeStateMachineTransition_0hpxy"), "loading", "loading_done", SubResource("AnimationNodeStateMachineTransition_ipapo"), "loading_done", "start_game", SubResource("AnimationNodeStateMachineTransition_0t1lp"), "start_game", "init", SubResource("AnimationNodeStateMachineTransition_66nmg"), "loading_done", "load_savegame", SubResource("AnimationNodeStateMachineTransition_6b86u"), "load_savegame", "loading_game", SubResource("AnimationNodeStateMachineTransition_y626i"), "loading_game", "start_game", SubResource("AnimationNodeStateMachineTransition_52bss"), "start_game", "credits_roll", SubResource("AnimationNodeStateMachineTransition_x8oth"), "credits_roll", "loading_done", SubResource("AnimationNodeStateMachineTransition_5ge3a"), "loading_done", "credits_roll", SubResource("AnimationNodeStateMachineTransition_44pd3"), "start_game", "reveal_pause_menu", SubResource("AnimationNodeStateMachineTransition_pc6pe"), "reveal_pause_menu", "hide_pause_menu", SubResource("AnimationNodeStateMachineTransition_dx61n"), "hide_pause_menu", "start_game", SubResource("AnimationNodeStateMachineTransition_lp1dx"), "hide_pause_menu", "init", SubResource("AnimationNodeStateMachineTransition_mqlnh")]
|
transitions = ["Start", "init", SubResource("AnimationNodeStateMachineTransition_dxdg4"), "init", "loading", SubResource("AnimationNodeStateMachineTransition_0hpxy"), "loading", "loading_done", SubResource("AnimationNodeStateMachineTransition_ipapo"), "loading_done", "start_game", SubResource("AnimationNodeStateMachineTransition_0t1lp"), "start_game", "init", SubResource("AnimationNodeStateMachineTransition_66nmg"), "loading_done", "load_savegame", SubResource("AnimationNodeStateMachineTransition_6b86u"), "load_savegame", "loading_game", SubResource("AnimationNodeStateMachineTransition_y626i"), "loading_game", "start_game", SubResource("AnimationNodeStateMachineTransition_52bss"), "start_game", "credits_roll", SubResource("AnimationNodeStateMachineTransition_x8oth"), "credits_roll", "loading_done", SubResource("AnimationNodeStateMachineTransition_5ge3a"), "loading_done", "credits_roll", SubResource("AnimationNodeStateMachineTransition_44pd3"), "start_game", "reveal_pause_menu", SubResource("AnimationNodeStateMachineTransition_pc6pe"), "reveal_pause_menu", "hide_pause_menu", SubResource("AnimationNodeStateMachineTransition_dx61n"), "hide_pause_menu", "start_game", SubResource("AnimationNodeStateMachineTransition_lp1dx"), "hide_pause_menu", "init", SubResource("AnimationNodeStateMachineTransition_mqlnh")]
|
||||||
graph_offset = Vector2(-306.25, -187.73401)
|
graph_offset = Vector2(90.75, -158.73401)
|
||||||
|
|
||||||
[sub_resource type="Shader" id="Shader_cegan"]
|
[sub_resource type="Shader" id="Shader_cegan"]
|
||||||
code = "shader_type canvas_item;
|
code = "shader_type canvas_item;
|
||||||
|
|
@ -1235,16 +1236,23 @@ script = ExtResource("18_d13ii")
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
script = ExtResource("19_1u8w0")
|
script = ExtResource("19_1u8w0")
|
||||||
|
|
||||||
[node name="main" type="Node3D"]
|
[node name="main" type="Control"]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
script = ExtResource("1_rqkns")
|
script = ExtResource("1_rqkns")
|
||||||
youth_room_path = "res://base-environments/youth_room/youth_room.tscn"
|
youth_room_path = "uid://b3b0gyvklqn50"
|
||||||
transition_room_path = "uid://fgp3s28h7msy"
|
transition_room_path = "uid://fgp3s28h7msy"
|
||||||
adulthood_room_path = "uid://flisupth27th"
|
adulthood_room_path = "uid://flisupth27th"
|
||||||
|
|
||||||
[node name="Panel" type="Panel" parent="."]
|
[node name="Background" type="Panel" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
modulate = Color(0, 0, 0, 1)
|
modulate = Color(0, 0, 0, 1)
|
||||||
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
|
|
@ -1252,59 +1260,60 @@ grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
mouse_filter = 2
|
mouse_filter = 2
|
||||||
|
|
||||||
[node name="Main Menu" parent="." instance=ExtResource("3_ik73t")]
|
[node name="MainMenu" parent="." instance=ExtResource("3_ik73t")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 1
|
||||||
|
|
||||||
[node name="FPSLabel" type="Label" parent="."]
|
[node name="FPSLabel" type="Label" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
|
layout_mode = 0
|
||||||
offset_right = 40.0
|
offset_right = 40.0
|
||||||
offset_bottom = 35.0
|
offset_bottom = 35.0
|
||||||
script = SubResource("GDScript_8sq0u")
|
script = SubResource("GDScript_8sq0u")
|
||||||
|
|
||||||
[node name="Startup Menu" parent="." instance=ExtResource("1_v5rpm")]
|
[node name="Startup Menu" parent="." instance=ExtResource("1_v5rpm")]
|
||||||
visible = false
|
visible = false
|
||||||
|
layout_mode = 1
|
||||||
|
|
||||||
[node name="Disclaimer" parent="." instance=ExtResource("7_t45fc")]
|
[node name="Disclaimer" parent="." instance=ExtResource("7_t45fc")]
|
||||||
visible = false
|
visible = false
|
||||||
|
layout_mode = 1
|
||||||
|
|
||||||
[node name="Control" type="Control" parent="."]
|
[node name="Loading" type="Control" parent="."]
|
||||||
layout_mode = 3
|
layout_mode = 1
|
||||||
anchors_preset = 2
|
anchors_preset = 2
|
||||||
anchor_top = 1.0
|
anchor_top = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
offset_top = -40.0
|
|
||||||
offset_right = 40.0
|
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
|
|
||||||
[node name="mask" type="Sprite2D" parent="Control"]
|
[node name="mask" type="Sprite2D" parent="Loading"]
|
||||||
modulate = Color(1, 1, 1, 0)
|
modulate = Color(1, 1, 1, 0)
|
||||||
clip_children = 1
|
clip_children = 1
|
||||||
position = Vector2(98, -47)
|
position = Vector2(98, -47)
|
||||||
rotation = 1.5708
|
rotation = 1.5708
|
||||||
texture = ExtResource("5_sr555")
|
texture = ExtResource("5_sr555")
|
||||||
|
|
||||||
[node name="frame" type="Sprite2D" parent="Control/mask"]
|
[node name="frame" type="Sprite2D" parent="Loading/mask"]
|
||||||
clip_children = 1
|
|
||||||
texture = ExtResource("6_aaaxa")
|
texture = ExtResource("6_aaaxa")
|
||||||
|
|
||||||
[node name="deco" type="Sprite2D" parent="Control/mask/frame"]
|
[node name="deco" type="Sprite2D" parent="Loading/mask/frame"]
|
||||||
modulate = Color(1, 1, 1, 0)
|
modulate = Color(1, 1, 1, 0)
|
||||||
rotation = -0.314159
|
rotation = -0.314159
|
||||||
texture = ExtResource("7_koraw")
|
texture = ExtResource("7_koraw")
|
||||||
|
|
||||||
[node name="LoadingLabel" type="Label" parent="Control"]
|
[node name="LoadingLabel" type="Label" parent="Loading"]
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 100.0
|
offset_left = 100.0
|
||||||
offset_top = -37.0
|
offset_top = -37.0
|
||||||
offset_right = 239.99973
|
offset_right = 239.99982
|
||||||
offset_bottom = 9.0
|
offset_bottom = 9.0
|
||||||
text = "loading"
|
text = "loading"
|
||||||
script = SubResource("GDScript_cegan")
|
script = SubResource("GDScript_cegan")
|
||||||
|
|
||||||
[node name="MenuAnimationPlayer" type="AnimationPlayer" parent="."]
|
[node name="MenuAnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
root_node = NodePath("../Control/mask")
|
root_node = NodePath("../Loading/mask")
|
||||||
libraries = {
|
libraries = {
|
||||||
&"": SubResource("AnimationLibrary_ogbs1")
|
&"": SubResource("AnimationLibrary_ogbs1")
|
||||||
}
|
}
|
||||||
|
|
@ -1312,7 +1321,7 @@ autoplay = "init"
|
||||||
|
|
||||||
[node name="MenuAnimationTree" type="AnimationTree" parent="MenuAnimationPlayer"]
|
[node name="MenuAnimationTree" type="AnimationTree" parent="MenuAnimationPlayer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
root_node = NodePath("%MenuAnimationPlayer/../Control/mask")
|
root_node = NodePath("%MenuAnimationPlayer/../Loading/mask")
|
||||||
tree_root = SubResource("AnimationNodeStateMachine_uwcb5")
|
tree_root = SubResource("AnimationNodeStateMachine_uwcb5")
|
||||||
anim_player = NodePath("..")
|
anim_player = NodePath("..")
|
||||||
parameters/conditions/load_save = false
|
parameters/conditions/load_save = false
|
||||||
|
|
@ -1326,6 +1335,7 @@ bus = &"music"
|
||||||
|
|
||||||
[node name="PauseContainer" type="CenterContainer" parent="."]
|
[node name="PauseContainer" type="CenterContainer" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
|
|
@ -1398,16 +1408,31 @@ visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Skip this Story"
|
text = "Skip this Story"
|
||||||
|
|
||||||
[node name="CreditsRoll" type="RichTextLabel" parent="."]
|
[node name="CreditsRoll" type="VBoxContainer" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
modulate = Color(1, 1, 1, 0)
|
modulate = Color(1, 1, 1, 0)
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
offset_top = 220.0
|
offset_top = 220.0
|
||||||
offset_right = 1926.0
|
offset_bottom = 3476.0
|
||||||
offset_bottom = 5260.0
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
alignment = 2
|
||||||
|
|
||||||
|
[node name="Logo" type="TextureRect" parent="CreditsRoll"]
|
||||||
|
custom_minimum_size = Vector2(512, 512)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 4
|
||||||
|
texture = ExtResource("9_tqjky")
|
||||||
|
expand_mode = 1
|
||||||
|
|
||||||
|
[node name="Markdown" type="RichTextLabel" parent="CreditsRoll"]
|
||||||
|
layout_mode = 2
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
text = "[center]
|
text = "[center]
|
||||||
[img=512]res://logic-scenes/main menu/logo.png[/img]
|
|
||||||
[img][/img]
|
|
||||||
[font_size=34]is[/font_size]
|
[font_size=34]is[/font_size]
|
||||||
[font_size=45]made by betalars[/font_size]
|
[font_size=45]made by betalars[/font_size]
|
||||||
|
|
||||||
|
|
@ -1524,8 +1549,6 @@ Maxi, iFire
|
||||||
fit_content = true
|
fit_content = true
|
||||||
script = ExtResource("12_074og")
|
script = ExtResource("12_074og")
|
||||||
markdown_text = "[center]
|
markdown_text = "[center]
|
||||||
[img=512]res://logic-scenes/main menu/logo.png[/img]
|
|
||||||
![This is an image]()
|
|
||||||
## is
|
## is
|
||||||
#made by betalars
|
#made by betalars
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -58,7 +58,7 @@ func continue_sequence(former_actor: Object):
|
||||||
current_sequence_index += 1
|
current_sequence_index += 1
|
||||||
|
|
||||||
State.stage_list[0] = sequence_actors[current_sequence][current_sequence_index].get_object()
|
State.stage_list[0] = sequence_actors[current_sequence][current_sequence_index].get_object()
|
||||||
print(sequence_actors[current_sequence][current_sequence_index].get_object().name)
|
print_debug(sequence_actors[current_sequence][current_sequence_index].get_object().name)
|
||||||
|
|
||||||
State.stage_list[0].has_stage = true
|
State.stage_list[0].has_stage = true
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
extends VBoxContainer
|
extends VBoxContainer
|
||||||
|
class_name AccessibilitySettings
|
||||||
|
|
||||||
signal changed
|
signal changed
|
||||||
signal leave_stage
|
signal leave_stage
|
||||||
|
|
@ -18,7 +19,7 @@ var is_active:bool = false:
|
||||||
State.leave_stage(self)
|
State.leave_stage(self)
|
||||||
leave_stage.emit()
|
leave_stage.emit()
|
||||||
is_active = active
|
is_active = active
|
||||||
|
|
||||||
if (is_active and not has_stage) and not get_tree().paused:
|
if (is_active and not has_stage) and not get_tree().paused:
|
||||||
push_warning("%s has been set active but not been given the stage while the tree is unpaused!")
|
push_warning("%s has been set active but not been given the stage while the tree is unpaused!")
|
||||||
|
|
||||||
|
|
@ -42,7 +43,7 @@ func _ready() -> void:
|
||||||
else:
|
else:
|
||||||
%SaveButton.text = "menu_save"
|
%SaveButton.text = "menu_save"
|
||||||
back_button.visible = false
|
back_button.visible = false
|
||||||
|
|
||||||
update_ui_from_state()
|
update_ui_from_state()
|
||||||
|
|
||||||
reduce_motion_check.pressed.connect(func(value): State.reduce_motion = value)
|
reduce_motion_check.pressed.connect(func(value): State.reduce_motion = value)
|
||||||
|
|
@ -78,7 +79,7 @@ func update_ui_from_state():
|
||||||
font_picker.selected = State.font_style
|
font_picker.selected = State.font_style
|
||||||
subtitle_picker.selected = State.subtitles
|
subtitle_picker.selected = State.subtitles
|
||||||
scale_slider.value = State.ui_scaling
|
scale_slider.value = State.ui_scaling
|
||||||
|
|
||||||
func _on_save_button_pressed() -> void:
|
func _on_save_button_pressed() -> void:
|
||||||
State.save_settings()
|
State.save_settings()
|
||||||
is_active = false
|
is_active = false
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=5 format=3 uid="uid://b3wlecqvelh22"]
|
[gd_scene load_steps=5 format=3 uid="uid://b3wlecqvelh22"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cbax2lv4pstqk" path="res://logic-scenes/main menu/acessability_settings.gd" id="1_x3lym"]
|
[ext_resource type="Script" uid="uid://cbax2lv4pstqk" path="res://ui/menu_main/accessibility_settings.gd" id="1_x3lym"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="2_24dtk"]
|
[ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="2_24dtk"]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_v567h"]
|
[sub_resource type="GDScript" id="GDScript_v567h"]
|
||||||
|
|
@ -19,6 +19,7 @@ func _ready() -> void:
|
||||||
|
|
||||||
[node name="Accessibility" type="VBoxContainer"]
|
[node name="Accessibility" type="VBoxContainer"]
|
||||||
script = ExtResource("1_x3lym")
|
script = ExtResource("1_x3lym")
|
||||||
|
is_in_beginning = null
|
||||||
metadata/_tab_index = 0
|
metadata/_tab_index = 0
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="."]
|
[node name="Label" type="Label" parent="."]
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=9 format=3 uid="uid://dfhkfocy8axb8"]
|
[gd_scene load_steps=9 format=3 uid="uid://dfhkfocy8axb8"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b2redm7dwpcne" path="res://logic-scenes/main menu/audio_settings.gd" id="1_0lla1"]
|
[ext_resource type="Script" uid="uid://b2redm7dwpcne" path="res://ui/menu_main/audio_settings.gd" id="1_0lla1"]
|
||||||
[ext_resource type="AudioStream" uid="uid://cl74a68tjwinh" path="res://base-environments/youth_room/audio/Youth Loop.wav" id="2_01rsa"]
|
[ext_resource type="AudioStream" uid="uid://cl74a68tjwinh" path="res://base-environments/youth_room/audio/Youth Loop.wav" id="2_01rsa"]
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_lax27"]
|
[sub_resource type="Animation" id="Animation_lax27"]
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue