xiandie/scene/ground/scene/c01/s07_animation.gd

69 lines
1.8 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@tool
extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {
# 雾是否已经消失, 第一次进入时为 false
"fog_disappeared": false,
}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
var fog
var seller
var ambush_seller: Ambush2D
func _on_ground_ready() -> void:
fog = $"../ParallaxForeground/BGParallaxLayer/Fog" as Fog2D
if data.fog_disappeared:
# 雾已经消失,直接隐藏
fog.visible = false
else:
fog.visible = true
get_tree().create_timer(5.0).timeout.connect(_on_fog_disappear)
seller = $"../DeployLayer/报童" as AnimatedSprite2D
ambush_seller = $"../DeployLayer/报童/Ambush报童" as Ambush2D
var bookstore_portal = $"../DeployLayer/portal_2" as Portal2D
if ambush_seller.played:
# 已交互,不再 holding 门
bookstore_portal.holding = false
else:
# 第一次进入,等待播放动画
bookstore_portal.pre_transport_wait_time = 3.5
bookstore_portal.before_pre_transport_wait.connect(_knock_door)
SceneManager.pop_debug_dialog_info("音效", "敲门")
func _knock_door():
# 6 号动作:敲门
SceneManager.freeze_player(3.5, 6)
func _on_fog_disappear() -> void:
set_data("fog_disappeared", true)
fog.tween_fog(0, Color.TRANSPARENT, Fog2D.FOG_OFFSET_DEFAULT, 15.0, true)
func seller_interacted():
$"../DeployLayer/portal_2".holding = false
# 报童交互
SceneManager.freeze_player(3.0)
seller.play("报童给报纸")
# 提前写入 prop 中,防止存档 bug稍后播放获得动画
ArchiveManager.archive.prop_inventory.enable_item("prop_信碎片2")
await get_tree().create_timer(1.5).timeout
var msg = tr("c01_s07_获得报纸")
var lines = await DialogueUtil.generate_lines(msg)
SceneManager.pop_os(lines)
# 播放获得动画
await get_tree().create_timer(2.0).timeout
SceneManager.enable_prop_item("prop_信碎片2")