122 lines
3.4 KiB
GDScript
122 lines
3.4 KiB
GDScript
@tool
|
|
extends AnimationRoot
|
|
|
|
var wind_blows: AnimatedSprite2D
|
|
var paper_man: Ambush2D
|
|
var music_box: Closeup2D
|
|
|
|
|
|
# 覆盖该方法
|
|
func _default_data() -> Dictionary:
|
|
return {}
|
|
|
|
|
|
func _ready() -> void:
|
|
super._ready()
|
|
if Engine.is_editor_hint():
|
|
return
|
|
|
|
|
|
func _on_ground_ready() -> void:
|
|
wind_blows = $"../DeployLayer/WindBlows"
|
|
wind_blows.visible = false
|
|
paper_man = $"../DeployLayer/Ambush纸人"
|
|
if 5 <= ArchiveManager.get_global_value("c02_musicbox_stage", 0):
|
|
_display_paper_man(false)
|
|
else:
|
|
paper_man.get_node("wall/CollisionShape2D").disabled = true
|
|
paper_man.enabled = false
|
|
paper_man.visible = false
|
|
music_box = $"../DeployLayer/Closeup八音盒"
|
|
music_box.exit.connect(_on_music_box_exited, CONNECT_ONE_SHOT)
|
|
|
|
|
|
func _oneshot_wind():
|
|
SceneManager.get_player().global_position.x = 53
|
|
SceneManager.get_player().set_facing_direction(Vector2.RIGHT)
|
|
SceneManager.freeze_player(0)
|
|
%MainPlayer.visible = false
|
|
wind_blows.visible = true
|
|
wind_blows.play()
|
|
wind_blows.animation_finished.connect(_on_wind_finished, CONNECT_ONE_SHOT)
|
|
|
|
|
|
func _on_wind_finished():
|
|
%MainPlayer.visible = true
|
|
wind_blows.visible = false
|
|
#TODO 使用气泡文字
|
|
# DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s02_天冷")
|
|
DialogueManager.dialogue_ended.connect(_on_dialogue_ended, CONNECT_ONE_SHOT)
|
|
|
|
|
|
func _on_dialogue_ended(_res):
|
|
SceneManager.release_player()
|
|
|
|
|
|
func lumber_interacted():
|
|
SceneManager.call_deferred("enable_prop_item", "prop_火柴")
|
|
SceneManager.get_inspector().quit_and_hidden.connect(_on_inspector_quit, CONNECT_ONE_SHOT)
|
|
|
|
|
|
func _on_inspector_quit():
|
|
var blink_sprite = $"../DeployLayer/杂物眨眼睛" as AnimatedSprite2D
|
|
blink_sprite.visible = true
|
|
blink_sprite.play()
|
|
blink_sprite.animation_finished.connect(_on_blink_finished.bind(blink_sprite), CONNECT_ONE_SHOT)
|
|
|
|
|
|
func _on_blink_finished(blink_sprite):
|
|
blink_sprite.visible = false
|
|
|
|
|
|
func _on_music_box_exited(_arg):
|
|
SceneManager.release_player()
|
|
if 5 <= ArchiveManager.get_global_value("c02_musicbox_stage"):
|
|
_display_paper_man(false)
|
|
# _display_paper_man(true)
|
|
|
|
|
|
func _display_paper_man(play_sfx := true):
|
|
paper_man.visible = true
|
|
# 不启用 ambush
|
|
# paper_man.enabled = true
|
|
if play_sfx:
|
|
paper_man.get_node("Sfx").play()
|
|
paper_man.get_node("wall/CollisionShape2D").disabled = false
|
|
|
|
|
|
func display_music_box():
|
|
# 展示八音盒
|
|
music_box.visible = true
|
|
SceneManager.freeze_player(0)
|
|
# TODO 打开音效
|
|
SceneManager.pop_debug_dialog_info("音效", "显示八音盒")
|
|
|
|
|
|
var current_checked = false
|
|
|
|
|
|
func check_if_show_shoes():
|
|
# 检查是否显示鞋子
|
|
if not ArchiveManager.get_global_value("c02_s02_mouse_push_shoe1", false) or current_checked:
|
|
return
|
|
current_checked = true
|
|
var interactable = $"../DeployLayer/Interactable小鞋子"
|
|
if interactable.interacted_times > 0:
|
|
# 如果已经交互过,则不再推鞋子
|
|
return
|
|
SceneManager.pop_debug_dialog_info("美术", "推【小鞋子1】的动画待优化")
|
|
SceneManager.freeze_player(2.0)
|
|
$"../DeployLayer/Note老鼠洞".enabled = false
|
|
$"../DeployLayer/老鼠拖鞋".visible = true
|
|
$"../DeployLayer/老鼠拖鞋".frame = 0
|
|
$"../DeployLayer/老鼠拖鞋".play()
|
|
interactable.enabled = true
|
|
interactable.interacted.connect(_on_shoes_interacted, CONNECT_ONE_SHOT)
|
|
|
|
|
|
func _on_shoes_interacted():
|
|
SceneManager.enable_prop_item("prop_小鞋子1")
|
|
$"../DeployLayer/老鼠拖鞋".visible = false
|
|
$"../DeployLayer/Note老鼠洞".enabled = true
|