refactor: moving various embedded scripts to their own .gd

This commit is contained in:
tiger tiger tiger 2025-12-19 16:00:49 +01:00
parent c272f12014
commit 8db1c0fab7
31 changed files with 1336 additions and 2476 deletions

View File

@ -7,7 +7,7 @@
[ext_resource type="PackedScene" uid="uid://bdnesuqroi7ss" path="res://vfx/collectable_particles.tscn" id="3_4s5r2"]
[ext_resource type="Script" uid="uid://c281w7earok6w" path="res://base-environments/youth_room/crouch_volume.gd" id="3_fli74"]
[ext_resource type="Script" uid="uid://dbdw3v7mbqscf" path="res://dev-util/click-trough-area.gd" id="4_1xpeq"]
[ext_resource type="PackedScene" uid="uid://wfyna16xhlo0" path="res://logic-scenes/collectable/new_collectable_ui.tscn" id="5_ln5pp"]
[ext_resource type="PackedScene" uid="uid://wfyna16xhlo0" path="res://logic-scenes/collectable/collectable_ui.tscn" id="5_ln5pp"]
[ext_resource type="Shader" uid="uid://ci37nlh06b5y2" path="res://logic-scenes/collectable/collectable.gdshader" id="7_80jyn"]
[ext_resource type="VoxelGIData" uid="uid://dw2u8n6l38xjm" path="res://base-environments/volunteer_room/volunteer_room.VoxelGI_data.res" id="8_fli74"]
[ext_resource type="PackedScene" uid="uid://dsnil1roc3x37" path="res://base-environments/volunteer_room/scenes/autism.tscn" id="10_gcdra"]

View File

@ -0,0 +1,37 @@
extends Node3D
@export var light_array: Array[Vector3]:
set(points):
light_array = points
if is_inside_tree():
rebuild()
@onready var wires:LineRenderer3D = $wires
@onready var diodes:MultiMeshInstance3D = $diodes
@export var rng_seed:int = 42
var rng = RandomNumberGenerator.new()
@export var size:float = 0.1:
set(new_size):
size = new_size
rebuild()
if is_inside_tree():
wires.end_thickness = size*0.1
wires.start_thickness = size*0.1
# Called when the node enters the scene tree for the first time.
func _ready():
rebuild()
func rebuild():
rng.seed = rng_seed
rng.state = 0
for child in wires.get_children(): child.free()
wires.points = light_array
diodes.multimesh.instance_count = light_array.size()
var meshBuffer:PackedFloat32Array
for point in light_array:
var base:Basis = Basis(Vector3(rng.randf_range(-1, 1), rng.randf_range(-1, 1), rng.randf_range(-1, 1)).normalized(), rng.randf_range(0, PI*2))
base = base.scaled(Vector3(size, size, size))
meshBuffer.append_array([base.x.x, base.x.y, base.x.z, point.x, base.y.x, base.y.y, base.y.z, point.y, base.z.x, base.z.y, base.z.z, point.z])
diodes.multimesh.buffer = meshBuffer

View File

@ -7,6 +7,7 @@ extends RoomTemplate
@onready var card_picker: CardPicker = %Picker
@onready var ui: Control = %UI
signal interaction(interactable: Object)
func start_room():
%UI.show()
@ -18,6 +19,14 @@ func start_room():
State.pass_stage_to(%PlayerController)
%LightAnimation.lights_on()
while true: # playing?
var interactable = await interaction
if interactable is StoryPlayable:
await interactable.play()
# check gamestate to quit?
pass
func get_ready():
pull_save_state(State.save_game)

View File

@ -32,7 +32,7 @@
[ext_resource type="AudioStream" uid="uid://bghjiqkyehs1p" path="res://base-environments/youth_room/import/sounds/rain and thunder.mp3" id="22_xrkbj"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="24_ghmim"]
[ext_resource type="Shader" uid="uid://ci37nlh06b5y2" path="res://logic-scenes/collectable/collectable.gdshader" id="25_dqyng"]
[ext_resource type="PackedScene" uid="uid://wfyna16xhlo0" path="res://logic-scenes/collectable/new_collectable_ui.tscn" id="25_ghmim"]
[ext_resource type="PackedScene" uid="uid://wfyna16xhlo0" path="res://logic-scenes/collectable/collectable_ui.tscn" id="25_ghmim"]
[ext_resource type="PackedScene" uid="uid://bpjympn3ps3wo" path="res://logic-scenes/luna/luna_imported.tscn" id="27_pb1jl"]
[ext_resource type="Material" uid="uid://ct7uc5i5yp5qf" path="res://base-environments/youth_room/import/materials/wall.tres" id="28_oiweb"]
[ext_resource type="PackedScene" uid="uid://bw47g00bi710i" path="res://base-environments/youth_room/youth_room_visuals.tscn" id="30_dqyng"]
@ -43,6 +43,7 @@
[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="Texture2D" uid="uid://ds1n0xhxqlp4b" path="res://base-environments/youth_room/shaders/universe_noise.png" id="36_bgk6f"]
[ext_resource type="Script" uid="uid://c5eiqpr1q41xk" path="res://base-environments/youth_room/youth_room_environment.gd" id="38_ypa88"]
[ext_resource type="PackedScene" uid="uid://cg70r0102t8nl" path="res://base-environments/youth_room/fairylights.tscn" id="39_q6rov"]
[ext_resource type="VoxelGIData" uid="uid://hvk1wkuw4maq" path="res://base-environments/youth_room/youth_room.VoxelGI_data.res" id="40_ea6x8"]
[ext_resource type="LightmapGIData" uid="uid://b67q6lda2xet1" path="res://base-environments/youth_room/youth_room.lmbake" id="41_bgk6f"]
@ -1564,39 +1565,6 @@ metadata/_custom_type_script = "uid://br1w2nt4pj8lt"
[sub_resource type="Compositor" id="Compositor_bgk6f"]
compositor_effects = Array[CompositorEffect]([SubResource("CompositorEffect_ea6x8")])
[sub_resource type="GDScript" id="GDScript_wb8kg"]
script/source = "extends WorldEnvironment
func _ready():
State.environment_settings_changed.connect(_on_environment_settings_update)
Scenes.scene_starting.connect(scene_starting)
Scenes.scene_finished.connect(scene_finished)
_on_environment_settings_update()
func focus_env():
var dof_strength_tween: Tween = create_tween()
dof_strength_tween.tween_property(camera_attributes, \"dof_blur_amount\", 0, 1)
await(dof_strength_tween.finished)
camera_attributes.dof_blur_near_enabled = false
func focus_object():
camera_attributes.dof_blur_near_enabled = true
var dof_strength_tween: Tween = create_tween()
dof_strength_tween.tween_property(camera_attributes, \"dof_blur_amount\", 0.4, 1)
func scene_starting(id: int, _repeat: bool):
if id == Scenes.id.YOUTH_VOICE_TRAINING:
await get_tree().create_timer(10).timeout
focus_object()
func scene_finished(_id: int, _repeat: bool):
focus_env()
func _on_environment_settings_update():
environment.ssil_enabled = State.ssil_enable
environment.sdfgi_enabled = State.sdfgi_enable
"
[sub_resource type="ViewportTexture" id="ViewportTexture_corra"]
viewport_path = NodePath("WorldEnvironment/window_glass/SubViewport")
@ -2058,7 +2026,6 @@ script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/MaskMemento" instance=ExtResource("12_qxx2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00898492, -0.14171, 0.152755)
visible = false
[node name="UiWrapper" type="Area3D" parent="logic/MaskMemento"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, -0.134171, -0.20001, -0.000299692)
@ -2085,7 +2052,7 @@ render_target_update_mode = 4
[node name="CollectableUi" parent="logic/MaskMemento/UiWrapper/UiSprite/SubViewport" instance=ExtResource("25_ghmim")]
[node name="Frame" type="Sprite3D" parent="logic/MaskMemento/UiWrapper"]
transform = Transform3D(0.704571, 0, -1.19209e-07, 0, 0.704571, 0, 1.19209e-07, 0, 0.704571, 1.00458, -1.47577, 0.523485)
transform = Transform3D(0.704571, 0, -1.19209e-07, 0, 0.704571, 0, 1.19209e-07, 0, 0.704571, -2.9410253, -0.7882633, 0.5234841)
visibility_range_end = 0.6
visibility_range_end_margin = 0.3
visibility_range_fade_mode = 1
@ -2108,7 +2075,6 @@ script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/ClothesMemento" instance=ExtResource("12_qxx2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00898492, -0.14171, 0.152755)
visible = false
[node name="UiWrapper" type="Area3D" parent="logic/ClothesMemento"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
@ -2137,7 +2103,7 @@ render_target_update_mode = 4
scene = 3
[node name="Frame" type="Sprite3D" parent="logic/ClothesMemento/UiWrapper"]
transform = Transform3D(0.7045712, 0, 0, 0, 0.70457095, 0, 0, 0, 0.7045712, 0, -1.51, -1.155)
transform = Transform3D(0.7045712, 0, 0, 0, 0.70457095, 0, 0, 0, 0.7045712, -3.912711, -1.4219285, -3.3596572e-07)
visibility_range_end = 0.6
visibility_range_end_margin = 0.3
visibility_range_fade_mode = 1
@ -2160,7 +2126,6 @@ script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/ComicMemento" instance=ExtResource("12_qxx2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00898492, -0.14171, 0.152755)
visible = false
[node name="UiWrapper" type="Area3D" parent="logic/ComicMemento"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
@ -2188,7 +2153,7 @@ render_target_update_mode = 4
scene = 2
[node name="Frame" type="Sprite3D" parent="logic/ComicMemento/UiWrapper"]
transform = Transform3D(0.7045712, 0, 0, 0, 0.70457095, 0, 0, 0, 0.7045712, 0, -1.51, -1.155)
transform = Transform3D(0.70457107, 0, 0, 0, 0.7045709, 0, 0, 0, 0.70457107, 1.0969601, -0.6430273, -0.2718675)
visibility_range_end = 0.6
visibility_range_end_margin = 0.3
visibility_range_fade_mode = 1
@ -2199,7 +2164,7 @@ region_enabled = true
region_rect = Rect2(735.5, 0, 995.5, 1024)
[node name="HoverDetect" type="CollisionShape3D" parent="logic/ComicMemento"]
transform = Transform3D(1, 0, 2.98023e-08, 0, 1, 0, -2.98023e-08, 0, 1, 0, -0.237872, 0)
transform = Transform3D(1, 0, 2.98023e-08, 0, 1, 0, -2.98023e-08, 0, 1, 6.2613066e-09, -0.237872, 0.21009475)
shape = SubResource("CapsuleShape3D_72g2i")
[node name="CeilingMemento" type="Area3D" parent="logic" groups=["interactables"]]
@ -2211,7 +2176,6 @@ script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/CeilingMemento" instance=ExtResource("12_qxx2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00898492, -0.14171, 0.152755)
visible = false
[node name="UiWrapper" type="Area3D" parent="logic/CeilingMemento"]
transform = Transform3D(0.10000001, 0, -3.7252903e-09, 0, 0.1, 0, 3.7252903e-09, 0, 0.10000001, 0, 0.06951594, 0)
@ -2252,7 +2216,6 @@ script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/MindBoard" instance=ExtResource("12_qxx2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00898492, -0.14171, 0.152755)
visible = false
[node name="UiWrapper" type="Area3D" parent="logic/MindBoard"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
@ -2292,7 +2255,6 @@ script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/Door" instance=ExtResource("12_qxx2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00898492, -0.14171, 0.152755)
visible = false
[node name="UiWrapper" type="Area3D" parent="logic/Door"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
@ -2403,7 +2365,7 @@ shadow_enabled = true
shadow_caster_mask = 4293918721
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="visuals"]
transform = Transform3D(0.82167387, 0.44718722, -0.35337743, -0.41379577, 0.8944144, 0.16969286, 0.3919504, 0.0067938855, 0.9199613, 0.866179, 2.88055, 4.51936)
transform = Transform3D(0.82167387, 0.44718716, -0.35337743, -0.41379577, 0.8944143, 0.16969286, 0.3919504, 0.0067938846, 0.9199613, 0.866179, 2.88055, 4.51936)
visible = false
light_color = Color(0.81982, 0.935491, 0.980381, 1)
light_energy = 20.0
@ -2505,7 +2467,7 @@ script = SubResource("GDScript_yn0pl")
environment = SubResource("Environment_pllnm")
camera_attributes = SubResource("CameraAttributesPractical_26mp0")
compositor = SubResource("Compositor_bgk6f")
script = SubResource("GDScript_wb8kg")
script = ExtResource("38_ypa88")
[node name="window_frames" type="MeshInstance3D" parent="WorldEnvironment"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.013145)
@ -2535,7 +2497,6 @@ transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 0.9066
light_energy = 0.0
[node name="SceneUI" type="Control" parent="."]
visible = false
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0

View File

@ -0,0 +1,30 @@
extends WorldEnvironment
func _ready():
State.environment_settings_changed.connect(_on_environment_settings_update)
Scenes.scene_starting.connect(scene_starting)
Scenes.scene_finished.connect(scene_finished)
_on_environment_settings_update()
func focus_env():
var dof_strength_tween: Tween = create_tween()
dof_strength_tween.tween_property(camera_attributes, "dof_blur_amount", 0, 1)
await(dof_strength_tween.finished)
camera_attributes.dof_blur_near_enabled = false
func focus_object():
camera_attributes.dof_blur_near_enabled = true
var dof_strength_tween: Tween = create_tween()
dof_strength_tween.tween_property(camera_attributes, "dof_blur_amount", 0.4, 1)
func scene_starting(id: int, _repeat: bool):
if id == Scenes.id.YOUTH_VOICE_TRAINING:
await get_tree().create_timer(10).timeout
focus_object()
func scene_finished(_id: int, _repeat: bool):
focus_env()
func _on_environment_settings_update():
environment.ssil_enabled = State.ssil_enable
environment.sdfgi_enabled = State.sdfgi_enable

View File

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

View File

@ -1,15 +1,15 @@
extends Area3D
@export var billboard = true
@export var billboard: bool = true
@onready var sprite: Sprite3D = $UiSprite
@onready var viewport: SubViewport = $UiSprite/SubViewport
func _process(_delta):
if billboard:
var camera = get_viewport().get_camera_3d()
var camera := get_viewport().get_camera_3d()
var up = (camera.global_position - global_position)
var up := (camera.global_position - global_position)
up = up.cross(Vector3.UP).cross(up)
look_at(global_position - (camera.global_position - global_position), up)
@ -24,7 +24,7 @@ func _input(event: InputEvent) -> void:
func _on_input_event(_camera: Camera3D, event: InputEvent, pos: Vector3, _normal: Vector3, _shape_idx: int):
if not State.focus_locked:
# Position of the event in Sprite3D local coordinates.
var texture_3d_position = sprite.get_global_transform().affine_inverse() * pos
var texture_3d_position := sprite.get_global_transform().affine_inverse() * pos
#if !is_zero_approx(texture_3d_position.z):
# # Discard event because event didn't happen on the side of the Sprite3D.
# return

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -20,8 +20,8 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
1) Neither the Font Software nor any of its individual components, in Original Version or Modified Version, may be sold by itself.
2) The Original Version or Modified Version of the Font Software may be bundled, redistributed and/or sold with any other software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Typeface Name unless explicit written permission is granted by Copyright Holder. This restriction only applies to the primary font name as presented to the users.
4) The name of Copyright Holder or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version or any related software or other product, except:
a) to acknowledge the contribution(s) of Copyright Holder and the Author(s); or
4) The name of Copyright Holder or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version or any related software or other product, except:
a) to acknowledge the contribution(s) of Copyright Holder and the Author(s); or
b) with the prior written permission of Copyright Holder.
5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license.
@ -30,4 +30,4 @@ This license shall immediately terminate and become null and void if any of the
## DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK OR OTHER RIGHT. IN NO EVENT SHALL COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OF OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK OR OTHER RIGHT. IN NO EVENT SHALL COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OF OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,13 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0),
&"variation_embolden": 0.0
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

View File

@ -16,7 +16,7 @@ Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
multichannel_signed_distance_field=true
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
@ -30,7 +30,12 @@ Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
preload=[{
"chars": [],
"glyphs": [],
"name": "New Configuration",
"size": Vector2i(16, 0)
}]
language_support={}
script_support={}
opentype_features={}

File diff suppressed because one or more lines are too long

View File

@ -1,149 +1,242 @@
extends CenterContainer
class_name Collectable_Ui
class_name CollectableUi
@export var scene:Scenes.id = 0 as Scenes.id
@export var collapsed = true:
set(collapse):
if is_inside_tree() and not Engine.is_editor_hint():
if State.reduce_motion:
collapsed = false
return
if collapse and not collapsed:
if is_inside_tree():
_hide_buttons()
collapsed = collapse
elif not collapse and collapsed:
if is_inside_tree():
_show_buttons()
collapsed = collapse
if collapse and has_stage: State.leave_stage(self)
@export var is_board: bool = false:
set(board):
is_board = board
if board:
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "Order Thoughts"
else:
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "Collect Memento"
@export var has_stage: bool = false:
set(focused):
print_debug("set focus of card to ", focused)
if has_stage == focused: return
if focused:
has_stage = true
collapsed = false
is_collapsed = false
if not visible: show()
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.grab_focus()
elif has_stage:
else:
has_stage = false
get_viewport().gui_release_focus()
is_collapsed = true
# FIXME needs to be outsourced to scene reference state
@export var collected: bool = false:
set(set_collected):
collected = set_collected
if set_collected:
$Panel/Content/Buttons/VBoxContainer/put_back.show()
if not is_board:
$Panel/Content/Buttons/VBoxContainer/put_back.disabled = true
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "listen again"
if State.allow_skipping:
$Panel/Content/Buttons/VBoxContainer/skip.text = "discard cards (skip)"
#@export var collapsed = true:
# set(collapse):
# if is_inside_tree() and not Engine.is_editor_hint():
# if State.reduce_motion:
# collapsed = false
# return
# if collapse and not collapsed:
# if is_inside_tree():
# _hide_buttons()
# collapsed = collapse
# elif not collapse and collapsed:
# if is_inside_tree():
# _show_buttons()
# collapsed = collapse
#
# if collapse and has_stage: State.leave_stage(self)
@export var scene: Scenes.id = Scenes.id.YOUTH_DRAEVEN:
set(id):
scene = id
if is_inside_tree() and not is_board:
match id:
Scenes.id.YOUTH_DRAEVEN:
# FIXME: this explicit translation should not be nessecary
if title_override == "": title_label.text = TranslationServer.translate("Starlight")
if subtitle_override == "": cn_label.text = "[b]%s[/b]: %s" % [TranslationServer.translate("MementoLabel_CN"), TranslationServer.translate("MementoLabel_DraevenCN")]
Scenes.id.YOUTH_CHILDHOOD:
if title_override == "": title_label.text = TranslationServer.translate("crafted Mask")
if subtitle_override == "": cn_label.text = "[b]%s[/b]: %s" % [TranslationServer.translate("MementoLabel_CN"), TranslationServer.translate("MementoLabel_ChildhoodCN")]
Scenes.id.YOUTH_VOICE_TRAINING:
if title_override == "": title_label.text = TranslationServer.translate("Comic Stash")
if subtitle_override == "": cn_label.text = "[b]%s[/b]: %s" % [TranslationServer.translate("MementoLabel_CN"), TranslationServer.translate("MementoLabel_VoiceCN")]
Scenes.id.YOUTH_JUI_JUTSU:
if title_override == "": title_label.text = TranslationServer.translate("Sports Clothes")
if subtitle_override == "": cn_label.text = "[b]%s[/b]: %s" % [TranslationServer.translate("MementoLabel_CN"), TranslationServer.translate("MementoLabel_Jui_JutsuCN")]
Scenes.id.TRANSITION:
if title_override == "": title_label.text = TranslationServer.translate("Move on")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_DND:
if title_override == "": title_label.text = TranslationServer.translate("colorful Dice")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_VOLUNTARY:
if title_override == "": title_label.text = TranslationServer.translate("Gemstone Art")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_CHRISTMAS:
if title_override == "": title_label.text = TranslationServer.translate("Chat Messages")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_EATING:
if title_override == "": title_label.text = TranslationServer.translate("Dishes")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_UNI:
if title_override == "": title_label.text = TranslationServer.translate("Science Poster")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_THERAPY:
if title_override == "": title_label.text = TranslationServer.translate("Doctors Note")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_BURNOUT:
if title_override == "": title_label.text = TranslationServer.translate("Paperwork")
if subtitle_override == "": cn_label.text = ""
if not Engine.is_editor_hint():
is_collected = Scenes.is_sequence_repeating(scene)
@export var is_collected: bool = false:
set(value):
is_collected = value
if is_inside_tree():
collected_box.button_pressed = value
if is_collected and not is_board:
%CollectLabel.text = "listen again"
else:
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.disabled = true
$Panel/Content/Buttons/VBoxContainer/put_back.show()
else:
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.disabled = false
if not is_board:
%CollectLabel.text = "MementoLabel_collect"
else:
%CollectLabel.text = "find connections"
@onready var collected_box: CheckBox = %CheckBox
@export var title_override: String = "":
set(value):
title_override = value
if is_inside_tree() and not is_board:
title_label.text = value
@onready var title_label: Label = %TitleLabel
@export var subtitle_override: String = "":
set(value):
subtitle_override = value
if is_inside_tree() and not is_board:
cn_label.text = value
@onready var cn_label: RichTextLabel = %ContentNoteLabel
@onready var animation_player: AnimationPlayer = %AnimationPlayer
@export var skipped: bool = false
@export var is_collapsed: bool = true
@export var is_expanded: bool = false:
set(expanded):
if expanded != is_expanded:
is_expanded = expanded
if is_inside_tree():
animation_player.play("expand")
await animation_player.animation_finished
for button:Button in [%ReadStory, %CollectButton, %SummaryButton, %SkipButton]:
if button.visible:
button.grab_focus()
return
@export var was_skipped: bool = false
@export var item_name: String = "":
set(new_name):
item_name = new_name
@export var is_board:bool = false:
set(board):
is_board = board
if is_inside_tree():
$Panel/Content/Name.text = new_name
@export var content_notes: String = "":
set(new_notes):
content_notes = new_notes
if board:
if title_override == "": title_label.text = "Mind Board"
collected_box.hide()
# Not room agnostic yet!
if not Engine.is_editor_hint():
match Scenes.get_completed_total():
1:
if subtitle_override == "": cn_label.text = "Find all three Mementos to collect all thoughts."
2:
if subtitle_override == "": cn_label.text = "Find two more Mementos to get all cards."
3:
if subtitle_override == "": cn_label.text = "Find the last remaining Memento."
4:
if subtitle_override == "": cn_label.text = "Use this to find a Frame of Mind."
else:
scene = scene
collected_box.show()
@export var is_exit:bool = false:
set(exit):
is_exit = exit
if is_inside_tree():
$Panel/Content/ContentNotes.text = new_notes
if exit:
if title_override == "": title_label.text = "Move on"
if subtitle_override == "": %CollectLabel.text = "Leave room"
collected_box.hide()
else:
scene = scene
collected_box.show()
signal card_collected
signal open_board
signal exit_room
#TODO implement proper scene skipping
signal scene_skipped(i: int)
# Called when the node enters the scene tree for the first time.
func _ready():
#$Panel/Content/ContentNotes.visible = State.show_content_notes
#$Panel/Content/Buttons/VBoxContainer/Summary.visible = State.provide_summaries
#$Panel/Content/Buttons/VBoxContainer/skip.visible = State.allow_skipping
if visible and not collapsed: _show_buttons()
func _ready() -> void:
State.settings_changed.connect(_on_context_updated)
%CollectButton.pressed.connect(collect_memento)
##TODO: add functions for remaining buttons
content_notes = content_notes
update_state()
func _on_context_updated():
%SkipButton.visible = State.allow_skipping
%SummaryButton.visible = State.provide_summaries
%ReadStory.visible = is_collected
%OptionPrompt.visible = State.allow_skipping or State.provide_summaries or is_collected and not is_board
%OptionsLabel.visible = State.allow_skipping or State.provide_summaries or is_collected and not is_board
cn_label.visible = true if State.show_content_notes else false
func update_state():
scene = scene
is_board = is_board
item_name = item_name
is_exit = is_exit
_on_context_updated()
func _hide_buttons():
if is_inside_tree():
if not State.reduce_motion:
$AnimationPlayer.play_backwards("show_buttons")
func try_reveal() -> bool:
#if is_exit and not State.active_save_game.is_childhood_board_complete: return false
#if not is_board:
# if (not Scenes.is_sequence_unlocked( self.scene )) or false: #FIXME only for testing!!!
# return false
if not visible or animation_player.get_animation("vanish") or animation_player.get_animation("vanish_all"):
update_state()
visible = true
animation_player.play("reveal")
return true
return false
func _show_buttons():
if is_inside_tree():
if not State.reduce_motion:
$AnimationPlayer.play("show_buttons")
#func _process(_delta: float) -> void:
# if not visible or Engine.is_editor_hint(): return
# if Input.is_action_just_pressed("collect_memento_ui"):
# if not is_board:
# collect_memento()
# else:
# open_board.emit()
# elif Input.is_action_just_pressed("option_memento_ui"):
# is_expanded = true
#FIXME something was eating all my inputs, maybe I can use the more pretty pattern when I figure out the culprit
func _input(event: InputEvent) -> void:
if not visible: return
if event.is_action_pressed("collect_memento_ui"):
if not is_board:
collect_memento()
get_viewport().set_input_as_handled()
else:
$AnimationPlayer.play("RESET")
else:
$AnimationPlayer.play("RESET")
if is_board:
open_board.emit()
if is_exit:
exit_room.emit()
elif event.is_action_pressed("option_memento_ui"):
is_expanded = true
get_viewport().set_input_as_handled()
func vanish():
if visible:
var tween = create_tween()
tween.tween_property(self, "modulate", Color(0, 0, 0), 0.4)
if not collapsed: _hide_buttons()
await tween.finished
visible = false
if has_stage: State.leave_stage(self)
if not visible: return
func reveal():
if !visible:
$Panel/Content/ContentNotes.visible = State.show_content_notes
$Panel/Content/Buttons/VBoxContainer/skip.visible = State.allow_skipping and not is_board and not skipped
if not collapsed:
_show_buttons()
modulate = Color()
visible = true
var tween = create_tween()
tween.tween_property(self, "modulate", Color(1, 1, 1), 0.4)
func _yoink_focus():
if not has_stage:
State.transition_stage_to(self)
func _on_pick_button_pressed():
print_debug("card collected!")
if not is_board:
Scenes.start_sequence(scene)
State.leave_stage(self)
#get_tree().call_group("scene_actors", "play_scene", scene, collected)
if skipped: emit_signal("scene_skipped", -1)
collected = true
if is_expanded:
animation_player.play("vanish_all")
else:
emit_signal("open_board")
hide()
animation_player.play("vanish")
func collect_memento():
Scenes.start_sequence(scene)
State.leave_stage(self)
if scene == Scenes.id.TRANSITION: vanish()
#get_tree().call_group("scene_actors", "play_scene", scene, collected)
if was_skipped: scene_skipped.emit(-1)
is_collected = true
func _on_skip_pressed():
print_debug("Scene skipped!")
if scene != null:
emit_signal("scene_skipped", 1)
skipped = true
scene_skipped.emit(1)
was_skipped = true
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "collect (un-skip)"
State.leave_stage(self)

File diff suppressed because it is too large Load Diff

View File

@ -1,241 +0,0 @@
class_name CollectableUi extends CenterContainer
@export var has_stage: bool = false:
set(focused):
if has_stage == focused: return
if focused:
has_stage = true
is_collapsed = false
if not visible: show()
else:
has_stage = false
get_viewport().gui_release_focus()
is_collapsed = true
#@export var collapsed = true:
# set(collapse):
# if is_inside_tree() and not Engine.is_editor_hint():
# if State.reduce_motion:
# collapsed = false
# return
# if collapse and not collapsed:
# if is_inside_tree():
# _hide_buttons()
# collapsed = collapse
# elif not collapse and collapsed:
# if is_inside_tree():
# _show_buttons()
# collapsed = collapse
#
# if collapse and has_stage: State.leave_stage(self)
@export var scene: Scenes.id = Scenes.id.YOUTH_DRAEVEN:
set(id):
scene = id
if is_inside_tree() and not is_board:
match id:
Scenes.id.YOUTH_DRAEVEN:
# FIXME: this explicit translation should not be nessecary
if title_override == "": title_label.text = TranslationServer.translate("Starlight")
if subtitle_override == "": cn_label.text = "[b]%s[/b]: %s" % [TranslationServer.translate("MementoLabel_CN"), TranslationServer.translate("MementoLabel_DraevenCN")]
Scenes.id.YOUTH_CHILDHOOD:
if title_override == "": title_label.text = TranslationServer.translate("crafted Mask")
if subtitle_override == "": cn_label.text = "[b]%s[/b]: %s" % [TranslationServer.translate("MementoLabel_CN"), TranslationServer.translate("MementoLabel_ChildhoodCN")]
Scenes.id.YOUTH_VOICE_TRAINING:
if title_override == "": title_label.text = TranslationServer.translate("Comic Stash")
if subtitle_override == "": cn_label.text = "[b]%s[/b]: %s" % [TranslationServer.translate("MementoLabel_CN"), TranslationServer.translate("MementoLabel_VoiceCN")]
Scenes.id.YOUTH_JUI_JUTSU:
if title_override == "": title_label.text = TranslationServer.translate("Sports Clothes")
if subtitle_override == "": cn_label.text = "[b]%s[/b]: %s" % [TranslationServer.translate("MementoLabel_CN"), TranslationServer.translate("MementoLabel_Jui_JutsuCN")]
Scenes.id.TRANSITION:
if title_override == "": title_label.text = TranslationServer.translate("Move on")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_DND:
if title_override == "": title_label.text = TranslationServer.translate("colorful Dice")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_VOLUNTARY:
if title_override == "": title_label.text = TranslationServer.translate("Gemstone Art")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_CHRISTMAS:
if title_override == "": title_label.text = TranslationServer.translate("Chat Messages")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_EATING:
if title_override == "": title_label.text = TranslationServer.translate("Dishes")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_UNI:
if title_override == "": title_label.text = TranslationServer.translate("Science Poster")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_THERAPY:
if title_override == "": title_label.text = TranslationServer.translate("Doctors Note")
if subtitle_override == "": cn_label.text = ""
Scenes.id.ADULT_BURNOUT:
if title_override == "": title_label.text = TranslationServer.translate("Paperwork")
if subtitle_override == "": cn_label.text = ""
if not Engine.is_editor_hint():
is_collected = Scenes.is_sequence_repeating(scene)
@export var is_collected: bool = false:
set(value):
is_collected = value
if is_inside_tree():
collected_box.button_pressed = value
if is_collected and not is_board:
%CollectLabel.text = "listen again"
else:
if not is_board:
%CollectLabel.text = "MementoLabel_collect"
else:
%CollectLabel.text = "find connections"
@onready var collected_box: CheckBox = %CheckBox
@export var title_override: String = "":
set(value):
title_override = value
if is_inside_tree() and not is_board:
title_label.text = value
@onready var title_label: Label = %TitleLabel
@export var subtitle_override: String = "":
set(value):
subtitle_override = value
if is_inside_tree() and not is_board:
cn_label.text = value
@onready var cn_label: RichTextLabel = %ContentNoteLabel
@onready var animation_player: AnimationPlayer = %AnimationPlayer
@export var is_collapsed: bool = true
@export var is_expanded: bool = false:
set(expanded):
if expanded != is_expanded:
is_expanded = expanded
if is_inside_tree():
animation_player.play("expand")
await animation_player.animation_finished
for button:Button in [%ReadStory, %CollectButton, %SummaryButton, %SkipButton]:
if button.visible:
button.grab_focus()
return
@export var was_skipped: bool = false
@export var is_board:bool = false:
set(board):
is_board = board
if is_inside_tree():
if board:
if title_override == "": title_label.text = "Mind Board"
collected_box.hide()
# Not room agnostic yet!
if not Engine.is_editor_hint():
match Scenes.get_completed_total():
1:
if subtitle_override == "": cn_label.text = "Find all three Mementos to collect all thoughts."
2:
if subtitle_override == "": cn_label.text = "Find two more Mementos to get all cards."
3:
if subtitle_override == "": cn_label.text = "Find the last remaining Memento."
4:
if subtitle_override == "": cn_label.text = "Use this to find a Frame of Mind."
else:
scene = scene
collected_box.show()
@export var is_exit:bool = false:
set(exit):
is_exit = exit
if is_inside_tree():
if exit:
if title_override == "": title_label.text = "Move on"
if subtitle_override == "": %CollectLabel.text = "Leave room"
collected_box.hide()
else:
scene = scene
collected_box.show()
signal open_board
signal exit_room
#TODO implement proper scene skipping
signal scene_skipped(i: int)
func _ready() -> void:
State.settings_changed.connect(_on_context_updated)
%CollectButton.pressed.connect(collect_memento)
##TODO: add functions for remaining buttons
update_state()
func _on_context_updated():
%SkipButton.visible = State.allow_skipping
%SummaryButton.visible = State.provide_summaries
%ReadStory.visible = is_collected
%OptionPrompt.visible = State.allow_skipping or State.provide_summaries or is_collected and not is_board
%OptionsLabel.visible = State.allow_skipping or State.provide_summaries or is_collected and not is_board
cn_label.visible = true if State.show_content_notes else false
func update_state():
scene = scene
is_board = is_board
is_exit = is_exit
_on_context_updated()
func try_reveal() -> bool:
#if is_exit and not State.active_save_game.is_childhood_board_complete: return false
#if not is_board:
# if (not Scenes.is_sequence_unlocked( self.scene )) or false: #FIXME only for testing!!!
# return false
if not visible or animation_player.get_animation("vanish") or animation_player.get_animation("vanish_all"):
update_state()
visible = true
animation_player.play("reveal")
return true
return false
#func _process(_delta: float) -> void:
# if not visible or Engine.is_editor_hint(): return
# if Input.is_action_just_pressed("collect_memento_ui"):
# if not is_board:
# collect_memento()
# else:
# open_board.emit()
# elif Input.is_action_just_pressed("option_memento_ui"):
# is_expanded = true
#FIXME something was eating all my inputs, maybe I can use the more pretty pattern when I figure out the culprit
func _input(event: InputEvent) -> void:
if not visible: return
if event.is_action_pressed("collect_memento_ui"):
if not is_board:
collect_memento()
get_viewport().set_input_as_handled()
else:
if is_board:
open_board.emit()
if is_exit:
exit_room.emit()
elif event.is_action_pressed("option_memento_ui"):
is_expanded = true
get_viewport().set_input_as_handled()
func vanish():
if not visible: return
if is_expanded:
animation_player.play("vanish_all")
else:
animation_player.play("vanish")
func collect_memento():
Scenes.start_sequence(scene)
State.leave_stage(self)
if scene == Scenes.id.TRANSITION: vanish()
#get_tree().call_group("scene_actors", "play_scene", scene, collected)
if was_skipped: scene_skipped.emit(-1)
is_collected = true
func _on_skip_pressed():
print_debug("Scene skipped!")
if scene != null:
scene_skipped.emit(1)
was_skipped = true
$Panel/Content/Buttons/VBoxContainer/collect_or_listen.text = "collect (un-skip)"
State.leave_stage(self)

View File

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

View File

@ -1,984 +0,0 @@
[gd_scene load_steps=18 format=3 uid="uid://wfyna16xhlo0"]
[ext_resource type="Script" uid="uid://ct2503epxj4av" path="res://logic-scenes/collectable/new_collectable_ui.gd" id="1_fk5x4"]
[ext_resource type="Texture2D" uid="uid://epjksqlw8frf" path="res://logic-scenes/collectable/decorative_paper.png" id="1_g0dpf"]
[ext_resource type="Script" uid="uid://bbs1u7ojno7xo" path="res://addons/input_prompts/action_prompt/action_prompt.gd" id="2_2apub"]
[ext_resource type="Texture2D" uid="uid://b7breoabkyifr" path="res://addons/input_prompts/icons/xbox/A.png" id="3_g0dpf"]
[ext_resource type="Texture2D" uid="uid://615hvpuiacvm" path="res://addons/input_prompts/icons/xbox/X.png" id="5_fk5x4"]
[sub_resource type="InputEventMouseButton" id="InputEventMouseButton_fk5x4"]
device = -1
button_index = 1
[sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_8vhsk"]
device = -1
[sub_resource type="InputEventKey" id="InputEventKey_t7f8v"]
device = -1
physical_keycode = 4194309
[sub_resource type="InputEventMouseButton" id="InputEventMouseButton_6fedj"]
device = -1
button_index = 2
[sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_bnbqn"]
device = -1
button_index = 2
[sub_resource type="Animation" id="Animation_8vhsk"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("VBoxContainer/HSplitContainer:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DecorativePaper:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DecorativePaper:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(201, 179)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DecorativePaper:scale")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0.570658, 0.570658)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("DecorativePaper:rotation")
tracks/4/interp = 4
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("VBoxContainer/HBoxContainer:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("VBoxContainer2:modulate")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("DecorativePaper2:position")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(200.373, 236.593)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("DecorativePaper2:scale")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0.325643, 0.76646)]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("DecorativePaper2:modulate")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/10/type = "value"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("VBoxContainer/ContentNoteLabel:self_modulate")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/11/type = "value"
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/path = NodePath(".:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/12/type = "value"
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/path = NodePath("VBoxContainer2:visible")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/13/type = "value"
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/path = NodePath("DecorativePaper2:visible")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/14/type = "value"
tracks/14/imported = false
tracks/14/enabled = true
tracks/14/path = NodePath("VBoxContainer2/HSeparator:custom_minimum_size")
tracks/14/interp = 1
tracks/14/loop_wrap = true
tracks/14/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 50)]
}
[sub_resource type="Animation" id="Animation_t7f8v"]
resource_name = "expand"
length = 0.2
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("VBoxContainer2:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DecorativePaper2:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(0.225313, 1),
"update": 0,
"values": [Vector2(210.221, 236.593), Vector2(200.373, 236.593)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DecorativePaper2:scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(0.225313, 1),
"update": 0,
"values": [Vector2(0.291, 0.452), Vector2(0.326, 0.721)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DecorativePaper2:modulate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.08),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("DecorativePaper2:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("VBoxContainer2:visible")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_bnbqn"]
resource_name = "init"
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("VBoxContainer/HSplitContainer:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DecorativePaper:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DecorativePaper:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(201, 179)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DecorativePaper:scale")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0.570658, 0.570658)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("DecorativePaper:rotation")
tracks/4/interp = 4
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("VBoxContainer/HBoxContainer:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("VBoxContainer2:modulate")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("DecorativePaper2:position")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(200.373, 236.593)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("DecorativePaper2:scale")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0.325643, 0.76646)]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("DecorativePaper2:modulate")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/10/type = "value"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("VBoxContainer/ContentNoteLabel:self_modulate")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/11/type = "value"
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/path = NodePath("DecorativePaper2:visible")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/12/type = "value"
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/path = NodePath("VBoxContainer2:visible")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/13/type = "value"
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/path = NodePath(".:visible")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_fk5x4"]
resource_name = "reveal"
length = 0.6
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("VBoxContainer/HSplitContainer:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.233333, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DecorativePaper:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DecorativePaper:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.466667),
"transitions": PackedFloat32Array(0.129408, 1),
"update": 0,
"values": [Vector2(201, 300), Vector2(201, 190.91)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DecorativePaper:scale")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.466667),
"transitions": PackedFloat32Array(0.450625, 1),
"update": 0,
"values": [Vector2(0.341, 0.381), Vector2(0.570658, 0.570658)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("DecorativePaper:rotation")
tracks/4/interp = 4
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.333333),
"transitions": PackedFloat32Array(0.450625, 1),
"update": 0,
"values": [1.5708, 0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("VBoxContainer/HBoxContainer:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.166667, 0.366667),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath(".:visible")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 0.6),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, true]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("VBoxContainer/ContentNoteLabel:self_modulate")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0.34, 0.6),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
[sub_resource type="Animation" id="Animation_6fedj"]
resource_name = "vanish"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("VBoxContainer/HSplitContainer:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.1, 0.366667),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DecorativePaper:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.366667, 0.9),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DecorativePaper:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.0333333, 0.833333),
"transitions": PackedFloat32Array(6.49802, 0.129408),
"update": 0,
"values": [Vector2(201, 190.91), Vector2(201, 400)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DecorativePaper:scale")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.333333, 0.833333),
"transitions": PackedFloat32Array(2.92817, 0.450625),
"update": 0,
"values": [Vector2(0.570658, 0.570658), Vector2(0.341, 0.381)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("DecorativePaper:rotation")
tracks/4/interp = 4
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.166667, 0.5, 1),
"transitions": PackedFloat32Array(1, 0.378929, 0.450625),
"update": 0,
"values": [0.0, -0.198968, 1.5708]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("VBoxContainer/HBoxContainer:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.0333333, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath(".:visible")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("VBoxContainer/ContentNoteLabel:self_modulate")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0, 0.28),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_jtrhv"]
resource_name = "vanish_all"
length = 0.8
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("VBoxContainer/HSplitContainer:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.1, 0.366667),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("DecorativePaper:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.366667, 0.833333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("DecorativePaper:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.0333333, 0.8),
"transitions": PackedFloat32Array(6.49802, 0.129408),
"update": 0,
"values": [Vector2(201, 190.91), Vector2(201, 400)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("DecorativePaper:scale")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.333333, 0.8),
"transitions": PackedFloat32Array(2.92817, 0.450625),
"update": 0,
"values": [Vector2(0.570658, 0.570658), Vector2(0.341, 0.381)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("DecorativePaper:rotation")
tracks/4/interp = 4
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.0666667, 0.433333, 0.8),
"transitions": PackedFloat32Array(1, 0.378929, 0.450625),
"update": 0,
"values": [0.0, -0.198968, 1.5708]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("VBoxContainer/HBoxContainer:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.0333333, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath(".:visible")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 0.8),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("VBoxContainer2/HSeparator:custom_minimum_size")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0.5, 0.8),
"transitions": PackedFloat32Array(0.353553, 1),
"update": 0,
"values": [Vector2(0, 123.06), Vector2(0, 50)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("DecorativePaper2:position")
tracks/8/interp = 2
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0.11, 0.3, 0.49, 0.8),
"transitions": PackedFloat32Array(1, 1, 0.482968, 1),
"update": 0,
"values": [Vector2(200.373, 236.593), Vector2(200.373, 246.497), Vector2(200.373, 236.593), Vector2(200.373, 183.66)]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("DecorativePaper2:scale")
tracks/9/interp = 2
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(0.11, 0.3, 0.49, 0.8),
"transitions": PackedFloat32Array(1, 1, 0.482968, 1),
"update": 0,
"values": [Vector2(0.325643, 0.76646), Vector2(0.353939, 0.76646), Vector2(0.325643, 0.76646), Vector2(0.270026, 0.76646)]
}
tracks/10/type = "value"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("DecorativePaper2:modulate")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(0.566667, 0.733333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/11/type = "value"
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/path = NodePath("VBoxContainer2:modulate")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
"times": PackedFloat32Array(0.566667, 0.69),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/12/type = "value"
tracks/12/imported = false
tracks/12/enabled = true
tracks/12/path = NodePath("VBoxContainer/ContentNoteLabel:self_modulate")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = {
"times": PackedFloat32Array(0, 0.39),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/13/type = "value"
tracks/13/imported = false
tracks/13/enabled = true
tracks/13/path = NodePath("DecorativePaper2:visible")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/keys = {
"times": PackedFloat32Array(0, 0.8),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/14/type = "value"
tracks/14/imported = false
tracks/14/enabled = true
tracks/14/path = NodePath("VBoxContainer2:visible")
tracks/14/interp = 1
tracks/14/loop_wrap = true
tracks/14/keys = {
"times": PackedFloat32Array(0, 0.8),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_6fedj"]
_data = {
&"RESET": SubResource("Animation_8vhsk"),
&"expand": SubResource("Animation_t7f8v"),
&"init": SubResource("Animation_bnbqn"),
&"reveal": SubResource("Animation_fk5x4"),
&"vanish": SubResource("Animation_6fedj"),
&"vanish_all": SubResource("Animation_jtrhv")
}
[node name="CollectableUI" type="CenterContainer"]
offset_right = 400.0
offset_bottom = 350.0
script = ExtResource("1_fk5x4")
scene = 1
[node name="DecorativePaper" type="Sprite2D" parent="."]
position = Vector2(201, 179)
scale = Vector2(0.570658, 0.570658)
texture = ExtResource("1_g0dpf")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
[node name="HSplitContainer" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
alignment = 1
[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HSplitContainer"]
unique_name_in_owner = true
modulate = Color(0, 0, 0, 1)
layout_mode = 2
focus_mode = 0
button_mask = 0
[node name="TitleLabel" type="Label" parent="VBoxContainer/HSplitContainer"]
unique_name_in_owner = true
self_modulate = Color(0, 0, 0, 1)
layout_mode = 2
size_flags_horizontal = 4
theme_type_variation = &"HeaderLarge"
text = "crafted Mask"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
alignment = 1
[node name="CollectPrompt" type="TextureRect" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
texture = ExtResource("3_g0dpf")
expand_mode = 2
stretch_mode = 5
script = ExtResource("2_2apub")
action = "collect_memento_ui"
icon = 0
events = Array[InputEvent]([SubResource("InputEventMouseButton_fk5x4"), SubResource("InputEventJoypadButton_8vhsk"), SubResource("InputEventKey_t7f8v")])
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
[node name="CollectLabel" type="Label" parent="VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
modulate = Color(0, 0, 0, 1)
layout_mode = 2
size_flags_horizontal = 4
text = "MementoLabel_collect"
[node name="OptionPrompt" type="TextureRect" parent="VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
texture = ExtResource("5_fk5x4")
expand_mode = 2
stretch_mode = 5
script = ExtResource("2_2apub")
action = "option_memento_ui"
icon = 0
events = Array[InputEvent]([SubResource("InputEventMouseButton_6fedj"), SubResource("InputEventJoypadButton_bnbqn")])
metadata/_custom_type_script = "uid://bbs1u7ojno7xo"
[node name="OptionsLabel" type="Label" parent="VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
visible = false
modulate = Color(0, 0, 0, 1)
layout_mode = 2
size_flags_horizontal = 4
text = "options"
[node name="ContentNoteLabel" type="RichTextLabel" parent="VBoxContainer"]
unique_name_in_owner = true
visible = false
modulate = Color(0, 0, 0, 1)
custom_minimum_size = Vector2(350, 90)
layout_mode = 2
bbcode_enabled = true
text = "[b]MementoLabel_CN[/b]: MementoLabel_ChildhoodCN"
fit_content = true
horizontal_alignment = 1
vertical_alignment = 1
[node name="DecorativePaper2" type="Sprite2D" parent="."]
visible = false
position = Vector2(200.373, 236.593)
rotation = 1.57079
scale = Vector2(0.325643, 0.76646)
texture = ExtResource("1_g0dpf")
[node name="VBoxContainer2" type="VBoxContainer" parent="."]
visible = false
layout_mode = 2
[node name="HSeparator" type="HSeparator" parent="VBoxContainer2"]
modulate = Color(1, 1, 1, 0)
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
[node name="CollectButton" type="Button" parent="VBoxContainer2"]
unique_name_in_owner = true
layout_mode = 2
text = "collect"
[node name="ReadStory" type="Button" parent="VBoxContainer2"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "read again"
[node name="SummaryButton" type="Button" parent="VBoxContainer2"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "get summary"
[node name="SkipButton" type="Button" parent="VBoxContainer2"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "skip"
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
&"": SubResource("AnimationLibrary_6fedj")
}
autoplay = "init"