162 lines
4.5 KiB
GDScript
162 lines
4.5 KiB
GDScript
@tool
|
|
extends AnimationRoot
|
|
|
|
var wind_blows: AnimatedSprite2D
|
|
var paper_man: Ambush2D
|
|
var music_box: Closeup2D
|
|
var flyer
|
|
|
|
|
|
# 覆盖该方法
|
|
func _default_data() -> Dictionary:
|
|
return {
|
|
"first_enter": false,
|
|
"flyer_shaven": false,
|
|
}
|
|
|
|
|
|
func _ready() -> void:
|
|
super._ready()
|
|
if Engine.is_editor_hint():
|
|
return
|
|
|
|
|
|
func _on_ground_ready() -> void:
|
|
wind_blows = $"../DeployLayer/WindBlows"
|
|
if data.first_enter:
|
|
wind_blows.visible = false
|
|
else:
|
|
_oneshot_wind.call_deferred()
|
|
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
|
|
|
|
$"../DeployLayer/InteractableLeftPortal".interacted.connect(_on_try_exit)
|
|
|
|
if $"../DeployLayer/Ambush小蝉闪现".played:
|
|
$"../DeployLayer/Ambush小蝉闪现/小蝉".visible = false
|
|
|
|
flyer = $"../DeployLayer/Closeup刮海报"
|
|
if data.flyer_shaven:
|
|
flyer.enabled = false
|
|
flyer.visible = false
|
|
$"../DeployLayer/青岛啤酒".enabled = true
|
|
else:
|
|
flyer.exit.connect(_on_flyer_exit)
|
|
music_box = $"../DeployLayer/Closeup八音盒"
|
|
music_box.exit.connect(_on_music_box_exited, CONNECT_ONE_SHOT)
|
|
|
|
|
|
func _oneshot_wind():
|
|
var player = %MainPlayer as MainPlayer
|
|
SceneManager.freeze_player(0)
|
|
player.hide_sprite = true
|
|
player.set_facing_direction(Vector2.RIGHT)
|
|
player.global_position.x = 53.0
|
|
wind_blows.visible = true
|
|
wind_blows.play()
|
|
wind_blows.animation_finished.connect(_on_wind_finished, CONNECT_ONE_SHOT)
|
|
$"冷飕飕Sfx".play()
|
|
|
|
|
|
func xiaochan_disappear():
|
|
var xc = $"../DeployLayer/Ambush小蝉闪现/小蝉" as AnimatedSprite2D
|
|
xc.play()
|
|
create_tween().tween_property(xc, "modulate:a", 0.0, 3.0)
|
|
|
|
|
|
func _on_flyer_exit(arg):
|
|
if arg:
|
|
$"../DeployLayer/青岛啤酒".enabled = true
|
|
set_data("flyer_shaven", true)
|
|
flyer.enabled = false
|
|
flyer.visible = false
|
|
# TODO 发放 steam 成就
|
|
SceneManager.pop_debug_dialog_info("程序", "发放 steam 成就")
|
|
|
|
|
|
func _on_wind_finished():
|
|
set_data("first_enter", true)
|
|
%MainPlayer.hide_sprite = false
|
|
wind_blows.visible = false
|
|
# 使用气泡文字
|
|
SceneManager.pop_os_with_str("c02_冷飕飕的", false, true)
|
|
|
|
|
|
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
|
|
# 不启用
|
|
# paper_man.enabled = true
|
|
if play_sfx:
|
|
paper_man.get_node("Sfx").play()
|
|
paper_man.get_node("wall/CollisionShape2D").disabled = false
|
|
|
|
|
|
func _on_try_exit():
|
|
SceneManager.freeze_player(0)
|
|
# 退出公寓?
|
|
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_纸人互动_离开公寓")
|
|
await DialogueManager.dialogue_ended
|
|
SceneManager.release_player()
|
|
|
|
|
|
func display_music_box():
|
|
# 展示八音盒
|
|
music_box.visible = true
|
|
SceneManager.freeze_player(0)
|
|
# TODO 打开音效
|
|
SceneManager.pop_debug_dialog_info("音效", "显示八音盒")
|
|
|
|
|
|
func check_if_show_shoes():
|
|
# 不论是否推出,都需要 enable 调整为 false
|
|
$"../DeployLayer/Ambush推小鞋子".enabled = false
|
|
# 检查是否显示鞋子
|
|
if not ArchiveManager.get_global_value("c02_s02_mouse_push_shoe1", false):
|
|
return
|
|
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
|