fix: cardboard can now be clicked, still needs a 'play' methid
This commit is contained in:
parent
d29b1d8e78
commit
cc04eea1a8
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
is_collected = true
|
||||
|
||||
# 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()
|
||||
|
||||
# Pick the cards
|
||||
var picker := State.room.get_node("%Picker") as CardPicker
|
||||
await picker.pick_cards(story_playable.scene_id, false)
|
||||
if interaction_ui is StoryPlayable:
|
||||
# Pick the cards
|
||||
var picker := State.room.get_node("%Picker") as CardPicker
|
||||
await picker.pick_cards(interaction_ui.scene_id, false)
|
||||
|
||||
# Hide the CanvasLayer when done
|
||||
canvas_layer.hide()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue