implement room initialising from savegame, enhancing room calling strucutre

This commit is contained in:
betalars 2024-10-06 11:38:15 +02:00
parent 9103ee4cc1
commit 4208ff368a
6 changed files with 177 additions and 113 deletions

View File

@ -1,39 +1,28 @@
extends Node3D
extends RoomTemplate
# Referencing the current State of the Scene.
enum Modes {
FREEZE,
WALKING,
COLLECTING,
LISTENING,
SORTING
}
signal freeze
signal unfreeze
signal ini_room
signal resume_room
var current_mode: int = Modes.FREEZE:
set(new_mode):
if not current_mode == new_mode:
current_mode = _update_scene(new_mode)
@onready var mask_memento: Collectable_Ui = %MaskMemento.ui
@onready var clothes_memento: Collectable_Ui = %ClothesMemento.ui
@onready var comic_memento: Collectable_Ui = %ComicMemento.ui
@onready var ceiling_memento: Collectable_Ui = %CeilingMemento.ui
@onready var board_trigger: InteractiveSprite = %MindBoard
@onready var door_trigger: InteractiveSprite = %DoorTrigger
@onready var card_board: CardBoard = %Board
@onready var card_picker: CardPicker = %Picker
func start(save: SaveGame = SaveGame.new()):
save_game = save
# Setting Memento user interface elemnts as collected based on the savegame.
mask_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_CHILDHOOD > 0
clothes_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_JUI_JUTSU > 0
comic_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_VOICE_TRAINING > 0
ceiling_memento.collected = save_game.mementos_complete && 1 >> Scenes.id.YOUTH_DRAEVEN > 0
func start():
$logic/PlayerController.process_mode = Node.PROCESS_MODE_INHERIT
emit_signal("ini_room")
current_mode = Modes.WALKING
ini_room.emit()
func _update_scene(new_mode) -> int:
if current_mode == Modes.FREEZE:
emit_signal("freeze")
elif new_mode == Modes.FREEZE:
emit_signal("freeze")
return new_mode
func is_self(node: Node) -> bool:
return self == node
func get_ready():
self.show()
@ -46,4 +35,11 @@ func _ready():
if get_parent() == get_tree().root:
get_ready()
start()
card_picker.cards_picked.connect(card_board.populate_board)
func pull_save_state(save: SaveGame) -> void:
save.board_state = card_board.get_save_dict()
func _on_scene_finished(id: int):
save_game.mementos_complete &= 1 << id
save_room()

View File

@ -1587,19 +1587,19 @@ func _on_ini_room():
pass
func on_childhood_done():
get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_CHILDHOOD, is_repeating)
get_tree().call_group(\"scene_actors\", \"scene_finished\", Scenes.id.YOUTH_CHILDHOOD, is_repeating)
$childhood.hide()
func on_voice_training_done():
get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_VOICE_TRAINING, is_repeating)
get_tree().call_group(\"scene_actors\", \"scene_finished\", Scenes.id.YOUTH_VOICE_TRAINING, is_repeating)
$\"Voice Training\".hide()
func on_jui_jutsu_done():
get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_JUI_JUTSU, is_repeating)
get_tree().call_group(\"scene_actors\", \"scene_finished\", Scenes.id.YOUTH_JUI_JUTSU, is_repeating)
$jui_jutsu.hide()
func on_draeven_done():
get_tree().call_group(\"animation_player\", \"scene_finished\", Scenes.id.YOUTH_DRAEVEN, is_repeating)
get_tree().call_group(\"scene_actors\", \"scene_finished\", Scenes.id.YOUTH_DRAEVEN, is_repeating)
$draeven.hide()
queue(\"intro\")
@ -1784,26 +1784,26 @@ turbulence_noise_strength = 0.1
size = Vector3(1.81843, 2.13395, 0.0774798)
[sub_resource type="ViewportTexture" id="ViewportTexture_3mgqk"]
viewport_path = NodePath("logic/Mask-interaction/UiWrapper/UiSprite/SubViewport")
viewport_path = NodePath("logic/MaskMemento/UiWrapper/UiSprite/SubViewport")
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_72g2i"]
radius = 0.342951
height = 1.08154
[sub_resource type="ViewportTexture" id="ViewportTexture_7hana"]
viewport_path = NodePath("logic/clothes_interaction/UiWrapper/UiSprite/SubViewport")
viewport_path = NodePath("logic/ClothesMemento/UiWrapper/UiSprite/SubViewport")
[sub_resource type="ViewportTexture" id="ViewportTexture_nn6wl"]
viewport_path = NodePath("logic/Comic-interaction/UiWrapper/UiSprite/SubViewport")
viewport_path = NodePath("logic/ComicMemento/UiWrapper/UiSprite/SubViewport")
[sub_resource type="ViewportTexture" id="ViewportTexture_8rywf"]
viewport_path = NodePath("logic/Draeven-interaction/UiWrapper/UiSprite/SubViewport")
viewport_path = NodePath("logic/CeilingMemento/UiWrapper/UiSprite/SubViewport")
[sub_resource type="SphereShape3D" id="SphereShape3D_c7buh"]
radius = 0.469631
[sub_resource type="ViewportTexture" id="ViewportTexture_hdmps"]
viewport_path = NodePath("logic/Mind Board/UiWrapper/UiSprite/SubViewport")
viewport_path = NodePath("logic/MindBoard/UiWrapper/UiSprite/SubViewport")
[sub_resource type="Animation" id="Animation_xum02"]
length = 0.001
@ -2348,7 +2348,7 @@ func hide():
visible = false
"
[node name="youth room" type="Node3D"]
[node name="youth room" type="Node3D" groups=["serializable"]]
script = ExtResource("1_aitp0")
[node name="logic" type="Node3D" parent="."]
@ -2540,12 +2540,13 @@ ordering your thoughts.
This is as far as the demo goes.
Press x or [ ] to wrap up."
[node name="picker" parent="logic/UI" groups=["animation_player"] instance=ExtResource("19_a4n1o")]
[node name="Picker" parent="logic/UI" groups=["scene_actors"] instance=ExtResource("19_a4n1o")]
unique_name_in_owner = true
visible = false
layout_mode = 1
[node name="board" parent="logic/UI" instance=ExtResource("4_gyjxx")]
[node name="Board" parent="logic/UI" instance=ExtResource("4_gyjxx")]
unique_name_in_owner = true
visible = false
layout_mode = 1
@ -2555,7 +2556,8 @@ layout_mode = 1
mouse_filter = 2
script = SubResource("GDScript_uy50s")
[node name="ScenePlayer" type="AnimationPlayer" parent="logic" groups=["animation_player"]]
[node name="ScenePlayer" type="AnimationPlayer" parent="logic" groups=["scene_actors"]]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_ilekd")
}
@ -3080,150 +3082,154 @@ light_energy = 100.0
light_size = 20.0
omni_range = 16.8518
[node name="Mask-interaction" type="Area3D" parent="logic" groups=["interactables"]]
[node name="MaskMemento" type="Area3D" parent="logic" groups=["interactables"]]
unique_name_in_owner = true
transform = Transform3D(-0.863025, 0, 0.50516, 0, 1, 0, -0.50516, 0, -0.863025, 0.0754588, 0.948372, 2.42068)
collision_layer = 16
script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/Mask-interaction" instance=ExtResource("12_qxx2k")]
[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/Mask-interaction"]
[node name="UiWrapper" type="Area3D" parent="logic/MaskMemento"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, -2.38419e-07, 0, 0.0718942)
script = ExtResource("11_7uxd8")
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/Mask-interaction/UiWrapper"]
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/MaskMemento/UiWrapper"]
transform = Transform3D(2.56, -5.96046e-08, 4.76837e-07, 1.78814e-07, 2.56, -4.17233e-07, -2.38419e-07, -5.96046e-08, 2.56, 0, 1.90735e-06, 0.238397)
shape = SubResource("BoxShape3D_cb3g8")
[node name="UiSprite" type="Sprite3D" parent="logic/Mask-interaction/UiWrapper"]
[node name="UiSprite" type="Sprite3D" parent="logic/MaskMemento/UiWrapper"]
transform = Transform3D(1, 0, 2.98023e-08, 0, 1, 0, -2.98023e-08, 0, 1, -9.53674e-07, 0, 0.61076)
pixel_size = 0.015
no_depth_test = true
texture = SubResource("ViewportTexture_3mgqk")
[node name="SubViewport" type="SubViewport" parent="logic/Mask-interaction/UiWrapper/UiSprite"]
[node name="SubViewport" type="SubViewport" parent="logic/MaskMemento/UiWrapper/UiSprite"]
transparent_bg = true
render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/Mask-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
[node name="Collectable_ui" parent="logic/MaskMemento/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
visible = false
scene = 0
is_story = true
item_name = "my old Mask"
content_notes = "conflicts, eating issues, alienation, swearing, ableism"
[node name="HoverDetect" type="CollisionShape3D" parent="logic/Mask-interaction"]
[node name="HoverDetect" type="CollisionShape3D" parent="logic/MaskMemento"]
shape = SubResource("CapsuleShape3D_72g2i")
[node name="clothes_interaction" type="Area3D" parent="logic" groups=["interactables"]]
[node name="ClothesMemento" type="Area3D" parent="logic" groups=["interactables"]]
unique_name_in_owner = true
transform = Transform3D(0.86043, 0, -0.509567, 0, 1, 0, 0.509567, 0, 0.86043, 1.47102, 1.17096, -0.629588)
collision_layer = 16
script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/clothes_interaction" instance=ExtResource("12_qxx2k")]
[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/clothes_interaction"]
[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)
script = ExtResource("11_7uxd8")
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/clothes_interaction/UiWrapper"]
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/ClothesMemento/UiWrapper"]
transform = Transform3D(2.56, -5.96046e-08, 4.76837e-07, 1.78814e-07, 2.56, -4.17233e-07, -2.38419e-07, -5.96046e-08, 2.56, 0, 1.90735e-06, 0.238397)
shape = SubResource("BoxShape3D_cb3g8")
[node name="UiSprite" type="Sprite3D" parent="logic/clothes_interaction/UiWrapper"]
[node name="UiSprite" type="Sprite3D" parent="logic/ClothesMemento/UiWrapper"]
transform = Transform3D(1, 0, 2.4869e-14, 0, 1, 0, -2.4869e-14, 0, 1, 0, 0, 0.610758)
pixel_size = 0.015
no_depth_test = true
texture = SubResource("ViewportTexture_7hana")
[node name="SubViewport" type="SubViewport" parent="logic/clothes_interaction/UiWrapper/UiSprite"]
[node name="SubViewport" type="SubViewport" parent="logic/ClothesMemento/UiWrapper/UiSprite"]
transparent_bg = true
size = Vector2i(400, 350)
render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/clothes_interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
[node name="Collectable_ui" parent="logic/ClothesMemento/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
visible = false
scene = 2
is_story = true
item_name = "Sport Clothes"
content_notes = "Body Issues, gender Dysphoria, Relationships, Rape, dissociation, self-sabotaging thoughts, Fighting Sport, Swearing"
[node name="HoverDetect" type="CollisionShape3D" parent="logic/clothes_interaction"]
[node name="HoverDetect" type="CollisionShape3D" parent="logic/ClothesMemento"]
transform = Transform3D(1, 0, 2.98023e-08, 0, 1, 0, -2.98023e-08, 0, 1, 0, -0.237872, 0)
shape = SubResource("CapsuleShape3D_72g2i")
[node name="Comic-interaction" type="Area3D" parent="logic" groups=["interactables"]]
[node name="ComicMemento" type="Area3D" parent="logic" groups=["interactables"]]
unique_name_in_owner = true
transform = Transform3D(0.969944, 0, 0.243327, 0, 1, 0, -0.243327, 0, 0.969944, 2.91664, 0.595014, -0.857358)
collision_layer = 16
script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/Comic-interaction" instance=ExtResource("12_qxx2k")]
[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/Comic-interaction"]
[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)
script = ExtResource("11_7uxd8")
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/Comic-interaction/UiWrapper"]
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/ComicMemento/UiWrapper"]
transform = Transform3D(2.56, -5.96046e-08, 4.76837e-07, 1.78814e-07, 2.56, -4.17233e-07, -2.38419e-07, -5.96046e-08, 2.56, 0, 1.90735e-06, 0.238397)
shape = SubResource("BoxShape3D_cb3g8")
[node name="UiSprite" type="Sprite3D" parent="logic/Comic-interaction/UiWrapper"]
[node name="UiSprite" type="Sprite3D" parent="logic/ComicMemento/UiWrapper"]
transform = Transform3D(1, 0, 2.4869e-14, 0, 1, 0, -2.4869e-14, 0, 1, 0, 0, 0.610758)
pixel_size = 0.015
no_depth_test = true
texture = SubResource("ViewportTexture_nn6wl")
[node name="SubViewport" type="SubViewport" parent="logic/Comic-interaction/UiWrapper/UiSprite"]
[node name="SubViewport" type="SubViewport" parent="logic/ComicMemento/UiWrapper/UiSprite"]
transparent_bg = true
size = Vector2i(400, 350)
render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/Comic-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
[node name="Collectable_ui" parent="logic/ComicMemento/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
visible = false
scene = 1
is_story = true
item_name = "comic stash"
content_notes = "internalised mysoginy, genitals, bullying, fictional guns"
[node name="HoverDetect" type="CollisionShape3D" parent="logic/Comic-interaction"]
[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)
shape = SubResource("CapsuleShape3D_72g2i")
[node name="Draeven-interaction" type="Area3D" parent="logic" groups=["interactables"]]
[node name="CeilingMemento" type="Area3D" parent="logic" groups=["interactables"]]
unique_name_in_owner = true
transform = Transform3D(0.86043, 0, -0.509567, 0, 1, 0, 0.509567, 0, 0.86043, 0.122875, 2.03863, -0.132712)
collision_layer = 16
script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/Draeven-interaction" instance=ExtResource("12_qxx2k")]
[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/Draeven-interaction"]
[node name="UiWrapper" type="Area3D" parent="logic/CeilingMemento"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
script = ExtResource("11_7uxd8")
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/Draeven-interaction/UiWrapper"]
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/CeilingMemento/UiWrapper"]
transform = Transform3D(2.56, -5.96046e-08, 4.76837e-07, 1.78814e-07, 2.56, -4.17233e-07, -2.38419e-07, -5.96046e-08, 2.56, 0, 1.90735e-06, 0.238397)
shape = SubResource("BoxShape3D_cb3g8")
[node name="UiSprite" type="Sprite3D" parent="logic/Draeven-interaction/UiWrapper"]
[node name="UiSprite" type="Sprite3D" parent="logic/CeilingMemento/UiWrapper"]
transform = Transform3D(1, 0, 2.4869e-14, 0, 1, 0, -2.4869e-14, 0, 1, 0, 0, 0.610758)
pixel_size = 0.015
no_depth_test = true
texture = SubResource("ViewportTexture_8rywf")
[node name="SubViewport" type="SubViewport" parent="logic/Draeven-interaction/UiWrapper/UiSprite"]
[node name="SubViewport" type="SubViewport" parent="logic/CeilingMemento/UiWrapper/UiSprite"]
transparent_bg = true
size = Vector2i(400, 350)
render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/Draeven-interaction/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
[node name="Collectable_ui" parent="logic/CeilingMemento/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
visible = false
scene = 3
is_story = true
@ -3231,44 +3237,84 @@ collected = true
item_name = "Starlight"
content_notes = "Alienation"
[node name="HoverDetect" type="CollisionShape3D" parent="logic/Draeven-interaction"]
[node name="HoverDetect" type="CollisionShape3D" parent="logic/CeilingMemento"]
transform = Transform3D(1, 0, 2.98023e-08, 0, 1, 0, -2.98023e-08, 0, 1, 0, -0.237872, 0)
shape = SubResource("SphereShape3D_c7buh")
[node name="Mind Board" type="Area3D" parent="logic" groups=["interactables"]]
[node name="MindBoard" type="Area3D" parent="logic" groups=["interactables"]]
unique_name_in_owner = true
transform = Transform3D(-4.37114e-08, 0, 0.999999, 0, 1, 0, -0.999999, 0, -4.37114e-08, -0.907206, 1.17661, 1.74337)
collision_layer = 16
script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/Mind Board" instance=ExtResource("12_qxx2k")]
[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/Mind Board"]
[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)
script = ExtResource("11_7uxd8")
billboard = false
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/Mind Board/UiWrapper"]
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/MindBoard/UiWrapper"]
transform = Transform3D(2.56, -5.96046e-08, 4.76837e-07, 1.78814e-07, 2.56, -4.17233e-07, -2.38419e-07, -5.96046e-08, 2.56, 0, 1.90735e-06, 0.238397)
shape = SubResource("BoxShape3D_cb3g8")
[node name="UiSprite" type="Sprite3D" parent="logic/Mind Board/UiWrapper"]
[node name="UiSprite" type="Sprite3D" parent="logic/MindBoard/UiWrapper"]
transform = Transform3D(1, 0, 2.4869e-14, 0, 1, 0, -2.4869e-14, 0, 1, 0, 0, 0.610758)
pixel_size = 0.015
no_depth_test = true
texture = SubResource("ViewportTexture_hdmps")
[node name="SubViewport" type="SubViewport" parent="logic/Mind Board/UiWrapper/UiSprite"]
[node name="SubViewport" type="SubViewport" parent="logic/MindBoard/UiWrapper/UiSprite"]
transparent_bg = true
size = Vector2i(400, 350)
render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/Mind Board/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
[node name="Collectable_ui" parent="logic/MindBoard/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
visible = false
item_name = "Mind Board"
[node name="HoverDetect" type="CollisionShape3D" parent="logic/Mind Board"]
[node name="HoverDetect" type="CollisionShape3D" parent="logic/MindBoard"]
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0)
shape = SubResource("CapsuleShape3D_72g2i")
[node name="DoorTrigger" type="Area3D" parent="logic" groups=["interactables"]]
unique_name_in_owner = true
transform = Transform3D(-4.37114e-08, 0, 0.999999, 0, 1, 0, -0.999999, 0, -4.37114e-08, 0.09841, 1.17661, -0.865982)
visible = false
collision_layer = 16
script = ExtResource("11_6fwv8")
[node name="collectable_particles" parent="logic/DoorTrigger" 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/DoorTrigger"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0)
script = ExtResource("11_7uxd8")
billboard = false
[node name="UI_click_collider" type="CollisionShape3D" parent="logic/DoorTrigger/UiWrapper"]
transform = Transform3D(2.56, -5.96046e-08, 4.76837e-07, 1.78814e-07, 2.56, -4.17233e-07, -2.38419e-07, -5.96046e-08, 2.56, 0, 1.90735e-06, 0.238397)
shape = SubResource("BoxShape3D_cb3g8")
[node name="UiSprite" type="Sprite3D" parent="logic/DoorTrigger/UiWrapper"]
transform = Transform3D(1, 0, 2.4869e-14, 0, 1, 0, -2.4869e-14, 0, 1, 0, 0, 0.610758)
pixel_size = 0.015
no_depth_test = true
texture = SubResource("ViewportTexture_hdmps")
[node name="SubViewport" type="SubViewport" parent="logic/DoorTrigger/UiWrapper/UiSprite"]
transparent_bg = true
size = Vector2i(400, 350)
render_target_update_mode = 4
[node name="Collectable_ui" parent="logic/DoorTrigger/UiWrapper/UiSprite/SubViewport" instance=ExtResource("11_jxai0")]
visible = false
item_name = "Mind Board"
[node name="HoverDetect" type="CollisionShape3D" parent="logic/DoorTrigger"]
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0)
shape = SubResource("CapsuleShape3D_72g2i")
@ -3416,7 +3462,7 @@ shadow_enabled = true
omni_range = 2.17653
omni_attenuation = 1.41421
[node name="light_animation" type="AnimationPlayer" parent="visuals/lights" groups=["animation_player"]]
[node name="light_animation" type="AnimationPlayer" parent="visuals/lights" groups=["scene_actors"]]
libraries = {
"": SubResource("AnimationLibrary_k8op5")
}
@ -3502,7 +3548,7 @@ script = SubResource("GDScript_yn0pl")
transform = Transform3D(-0.080852, 0, -1.22083e-08, 0, 0.080852, 0, 1.22083e-08, 0, -0.080852, 1.03861, 1.5471, 2.86542)
texture = SubResource("ViewportTexture_hwb6d")
[node name="WorldEnvironment" type="WorldEnvironment" parent="." groups=["animation_player"]]
[node name="WorldEnvironment" type="WorldEnvironment" parent="." groups=["scene_actors"]]
environment = SubResource("Environment_pllnm")
camera_attributes = SubResource("CameraAttributesPractical_26mp0")
script = SubResource("GDScript_wb8kg")
@ -3589,7 +3635,8 @@ light_array = Array[Vector3]([Vector3(-0.545, 0.915, 1.035), Vector3(-0.47, 0.85
[connection signal="body_exited" from="logic/Bed and Ladders/reset_failover" to="logic/PlayerController" method="_on_bed_exit"]
[connection signal="pressed" from="logic/UI/ending_button" to="logic/UI/ending_button" method="hide"]
[connection signal="pressed" from="logic/UI/ending_button" to="logic/UI/ending" method="show"]
[connection signal="board_completed" from="logic/UI/board" to="logic/UI/ending_button" method="show"]
[connection signal="cards_picked" from="logic/UI/Picker" to="logic/UI/Board" method="populate_board"]
[connection signal="board_completed" from="logic/UI/Board" to="logic/UI/ending_button" method="show"]
[connection signal="skip" from="logic/ScenePlayer/childhood/PanelContainer/skip_control" to="logic/ScenePlayer" method="on_childhood_done"]
[connection signal="skip" from="logic/ScenePlayer/childhood/PanelContainer/skip_control" to="logic/ScenePlayer" method="play" binds= ["RESET"]]
[connection signal="skip" from="logic/ScenePlayer/Voice Training/PanelContainer/skip_control2" to="logic/ScenePlayer" method="on_voice_training_done"]
@ -3601,13 +3648,15 @@ light_array = Array[Vector3]([Vector3(-0.545, 0.915, 1.035), Vector3(-0.47, 0.85
[connection signal="skip" from="logic/ScenePlayer/jui_jutsu/PanelContainer/skip_control3" to="logic/ScenePlayer" method="play" binds= ["RESET"]]
[connection signal="skip" from="logic/ScenePlayer/draeven/PanelContainer/skip_control4" to="logic/ScenePlayer" method="on_draeven_done"]
[connection signal="skip" from="logic/ScenePlayer/draeven/PanelContainer/skip_control4" to="logic/ScenePlayer" method="play" binds= ["RESET"]]
[connection signal="input_event" from="logic/Mask-interaction/UiWrapper" to="logic/Mask-interaction/UiWrapper" method="_on_input_event"]
[connection signal="scene_skipped" from="logic/Mask-interaction/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/board" method="on_scene_skipped"]
[connection signal="input_event" from="logic/clothes_interaction/UiWrapper" to="logic/clothes_interaction/UiWrapper" method="_on_input_event"]
[connection signal="scene_skipped" from="logic/clothes_interaction/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/board" method="on_scene_skipped"]
[connection signal="input_event" from="logic/Comic-interaction/UiWrapper" to="logic/Comic-interaction/UiWrapper" method="_on_input_event"]
[connection signal="scene_skipped" from="logic/Comic-interaction/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/board" method="on_scene_skipped"]
[connection signal="input_event" from="logic/Draeven-interaction/UiWrapper" to="logic/Draeven-interaction/UiWrapper" method="_on_input_event"]
[connection signal="scene_skipped" from="logic/Draeven-interaction/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/board" method="on_scene_skipped"]
[connection signal="input_event" from="logic/Mind Board/UiWrapper" to="logic/Mind Board/UiWrapper" method="_on_input_event"]
[connection signal="open_board" from="logic/Mind Board/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/board" method="claim_focus"]
[connection signal="input_event" from="logic/MaskMemento/UiWrapper" to="logic/MaskMemento/UiWrapper" method="_on_input_event"]
[connection signal="scene_skipped" from="logic/MaskMemento/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/Board" method="on_scene_skipped"]
[connection signal="input_event" from="logic/ClothesMemento/UiWrapper" to="logic/ClothesMemento/UiWrapper" method="_on_input_event"]
[connection signal="scene_skipped" from="logic/ClothesMemento/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/Board" method="on_scene_skipped"]
[connection signal="input_event" from="logic/ComicMemento/UiWrapper" to="logic/ComicMemento/UiWrapper" method="_on_input_event"]
[connection signal="scene_skipped" from="logic/ComicMemento/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/Board" method="on_scene_skipped"]
[connection signal="input_event" from="logic/CeilingMemento/UiWrapper" to="logic/CeilingMemento/UiWrapper" method="_on_input_event"]
[connection signal="scene_skipped" from="logic/CeilingMemento/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/Board" method="on_scene_skipped"]
[connection signal="input_event" from="logic/MindBoard/UiWrapper" to="logic/MindBoard/UiWrapper" method="_on_input_event"]
[connection signal="open_board" from="logic/MindBoard/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/Board" method="claim_focus"]
[connection signal="input_event" from="logic/DoorTrigger/UiWrapper" to="logic/DoorTrigger/UiWrapper" method="_on_input_event"]
[connection signal="open_board" from="logic/DoorTrigger/UiWrapper/UiSprite/SubViewport/Collectable_ui" to="logic/UI/Board" method="claim_focus"]

View File

@ -0,0 +1,10 @@
class_name RoomTemplate extends Node3D
@export var save_game:SaveGame = null
func pull_save_state(save: SaveGame) -> void:
pass
func save_room():
pull_save_state(save_game)
save_game.save_to_file.call_deferred(get_tree().root.get_texture())

View File

@ -6,29 +6,24 @@ class_name SaveGame extends Resource
@export var unique_save_name: String = "frame_of_mind_save_slot_%d_%s_%s" % [save_slot_id, Time.get_date_string_from_system(), Time.get_time_string_from_system()]
@export var current_room: State.rooms = 0
@export var mementos_complete: int = 0
@export var board_state: Dictionary
@export var thumbnail: Image = Image.load_from_file("res://import/interface-elements/empty_save_slot.png")
@export var board_state: Dictionary = {}
var thumbnail: Image = Image.load_from_file("res://import/interface-elements/empty_save_slot.png")
@export var last_saved: Dictionary = Time.get_datetime_dict_from_system()
@export var is_save_file_valid: bool = false
# FIXME: for some reason this does not prevent the property from being saved.
func _validate_property(property: Dictionary):
if property.name == "thumbnail":
property.usage != PROPERTY_USAGE_STORAGE
func _init(filepath = "") -> void:
if filepath == "":
filepath = "usr://saves/%s" % unique_save_name
read_save_file()
func _get_save_dict() -> Dictionary:
return {
"save_slot_id": save_slot_id,
"unique_save_name": unique_save_name,
"current_room": current_room,
"mementos_complete": mementos_complete,
"board_state": board_state,
"last_saved": last_saved
}
func read_save_file():
if FileAccess.file_exists("%s.json:" % filepath):
@ -59,7 +54,21 @@ func read_save_file():
thumbnail = tmp_img
func save_file(current_screen: ImageTexture):
func _get_save_dict() -> Dictionary:
return {
"save_slot_id": save_slot_id,
"unique_save_name": unique_save_name,
"current_room": current_room,
"mementos_complete": mementos_complete,
"board_state": board_state,
"last_saved": last_saved
}
func save_to_file(current_screen: Texture):
last_saved
thumbnail = current_screen.get_image()
current_screen.resize(384, 261, Image.INTERPOLATE_LANCZOS)

View File

@ -130,7 +130,7 @@ func _on_pick_button_pressed():
print("card collected!")
if scene != null:
State.leave_stage(self)
get_tree().call_group("animation_player", "play_scene", scene, collected)
get_tree().call_group("scene_actors", "play_scene", scene, collected)
if skipped: emit_signal("scene_skipped", -1)
collected = true
else:

View File

@ -77,7 +77,7 @@ func _ready():
func _on_ini_room():
State.take_stage(self)
get_tree().call_group("animation_player", "play_scene", Scenes.id.YOUTH_DRAEVEN, false)
get_tree().call_group("scene_actors", "play_scene", Scenes.id.YOUTH_DRAEVEN, false)
State.queue_for_stage(self)
func _process(_delta):