69 lines
1.8 KiB
GDScript
69 lines
1.8 KiB
GDScript
@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")
|