fix: cardboard can now be clicked, still needs a 'play' methid

This commit is contained in:
tiger tiger tiger 2026-01-12 22:35:12 +01:00
parent d29b1d8e78
commit cc04eea1a8
8 changed files with 30 additions and 34 deletions

View File

@ -44,11 +44,9 @@ func _ready():
ui.canvas_layer = %CanvasLayer
# Find and wire the StoryPlayable if not already set
for child in %CanvasLayer.get_children():
if child is StoryPlayable:
ui.story_playable = child
if child is Control:
ui.interaction_ui = child
break
if child is CardBoard:
ui.is_board = true
# Connect playback_finished to restore player control
ui.playback_finished.connect(_on_playback_finished)

View File

@ -6,10 +6,12 @@ extends RoomTemplate
@onready var board_trigger: InteractiveSprite = %MindBoard
@onready var door_trigger: InteractiveSprite = %Door
@onready var card_board: CardBoard = %Board
@onready var card_picker: CardPicker = %Picker
@onready var ui: Control = %UI
# Is populated by child cardboard instead of onready.
var card_board: CardBoard
func start_room():
%UI.show()
$logic/PlayerController.process_mode = Node.PROCESS_MODE_INHERIT
@ -42,26 +44,29 @@ func _play_intro_scene() -> void:
func get_ready():
await get_tree().process_frame
pull_save_state(State.save_game)
card_board.initialise_from_save(save_game)
card_board.board_completed.connect(func():
save_game.is_childhood_board_complete = true
save_room())
# Scene registration is now handled by youth_room_scene_player
card_picker.cards_picked.connect(card_board.populate_board)
ui.hide()
$sfx/distant_rain.play()
$"sfx/rain on window".play()
self.show()
await get_tree().process_frame
func _ready():
printt(_ready, name)
super._ready()
id = State.rooms.YOUTH
Scenes.scene_finished.connect(_on_scene_finished)
card_picker.cards_picked.connect(card_board.populate_board)
func pull_save_state(save: SaveGame) -> void:

View File

@ -1711,11 +1711,6 @@ unique_name_in_owner = true
visible = false
layout_mode = 1
[node name="Board" parent="logic/UI" instance=ExtResource("4_gyjxx")]
unique_name_in_owner = true
visible = false
layout_mode = 1
[node name="ending" parent="logic/UI" instance=ExtResource("5_kts6y")]
visible = false
layout_mode = 1
@ -1900,6 +1895,7 @@ unique_name_in_owner = true
transform = Transform3D(-4.3711374e-08, 0, 0.9999984, 0, 1, 0, -0.9999984, 0, -4.3711374e-08, -0.907206, 1.17661, 1.74337)
visible = false
interaction_ui = ExtResource("4_gyjxx")
is_board = true
[node name="Door" parent="logic" instance=ExtResource("30_ypa88")]
unique_name_in_owner = true

View File

@ -134,6 +134,9 @@ signal board_completed
# Called when the node enters the scene tree for the first time.
func _ready():
print("Board Ready!", self, "room", State.room)
State.room.card_board = self
var size_reference := StickyNotePanel.new()
dropzone_size = get_viewport_rect().size - Vector2(dropzone_padding + size_reference.minimum_size.x, dropzone_padding)

View File

@ -241,6 +241,7 @@ func pick_cards(id: Scenes.id, repeat: bool):
current_scene_id = id
print_debug("Reached actor %s in sequence %s. Is%s repeating." % [name, Scenes.id.keys()[id], " not" if repeat else ""])
if not repeat:
hide()
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
fill_card_slots(id)
reset()

View File

@ -15,7 +15,7 @@ signal scene_skipped(i: int)
## The StoryPlayable to play when this memento is collected.
## Auto-discovered from the owner's %CanvasLayer, or can be set manually.
var story_playable: StoryPlayable
var interaction_ui: Control
@ -199,14 +199,7 @@ func collect_memento() -> void:
# Hide the collectable UI
vanish()
# Check if we have a story_playable to play
if story_playable == null:
push_warning("CollectableUi for scene %s has no story_playable assigned" % Scenes.id.keys()[scene])
if was_skipped:
scene_skipped.emit(-1)
is_collected = true
playback_finished.emit()
return
# Signal that a scene is starting (for music, etc.)
Scenes.begin_sequence(scene)
@ -219,11 +212,12 @@ func collect_memento() -> void:
canvas_layer.show()
# Play the story
await story_playable.play()
await interaction_ui.play()
if interaction_ui is StoryPlayable:
# Pick the cards
var picker := State.room.get_node("%Picker") as CardPicker
await picker.pick_cards(story_playable.scene_id, false)
await picker.pick_cards(interaction_ui.scene_id, false)
# Hide the CanvasLayer when done
canvas_layer.hide()

View File

@ -88,11 +88,10 @@ func _on_allow_skipping_toggled(button_pressed):
State.allow_skipping = button_pressed
func hide():
get_parent().get_child(0).get_ready()
var child_tween = create_tween()
var child_tween := create_tween()
child_tween.tween_property($CenterContainer, "modulate", Color(1, 1, 1, 0), .5)
await child_tween.finished
var self_tween = create_tween()
var self_tween := create_tween()
self_tween.tween_property(self, "modulate", Color(1, 1, 1, 0), .5)
await self_tween.finished
self.visible = false

View File

@ -91,8 +91,8 @@ func _load_room(next_path: String) -> bool:
ResourceLoader.THREAD_LOAD_LOADED:
var next_scene := ResourceLoader.load_threaded_get(youth_room_path) as PackedScene
State.room = next_scene.instantiate() as RoomTemplate
await get_tree().process_frame
get_tree().root.add_child(State.room)
await get_tree().process_frame
await State.room.get_ready()
%Loading.stop()
await curtain.hide()