98 lines
2.7 KiB
GDScript
98 lines
2.7 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 luren
|
||
var fog
|
||
var seller
|
||
var ambush_seller: Ambush2D
|
||
var bookstore_portal: Portal2D
|
||
|
||
|
||
func _on_ground_ready() -> void:
|
||
luren = $"../DeployLayer/陆仁舞刀" as ProAnimatedSprite2D
|
||
fog = $"../DeployLayer/portal_1/Fog" as Fog2D
|
||
if data.fog_disappeared:
|
||
# 雾已经消失,直接隐藏
|
||
fog.visible = false
|
||
else:
|
||
fog.visible = true
|
||
# 相机左侧逐渐拉过来
|
||
var camera = SceneManager.get_camera_marker()
|
||
camera.limit_left = -400
|
||
create_tween().tween_property(camera, "limit_left", 0, 5.0)
|
||
Util.timer(5.0, _on_fog_disappear)
|
||
seller = $"../DeployLayer/报童" as AnimatedSprite2D
|
||
ambush_seller = $"../DeployLayer/报童/Ambush报童" as Ambush2D
|
||
bookstore_portal = $"../DeployLayer/portal_2"
|
||
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)
|
||
bookstore_portal.get_node("SfxEnter").stream = null
|
||
|
||
if $"../DeployLayer/Ambush陆仁收刀".played:
|
||
holdback_knife()
|
||
|
||
|
||
func holdback_knife() -> void:
|
||
(luren.sprite_frames as SpriteFrames).set_animation_loop("陆仁舞刀-黄昏带红缨", false)
|
||
luren.animation_finished.connect(_on_luren_animation_finished, CONNECT_ONE_SHOT)
|
||
|
||
|
||
func _on_luren_animation_finished() -> void:
|
||
luren.play("陆仁收刀")
|
||
luren.get_node("Sfx2D").stop()
|
||
# luren.offset = Vector2(-9.5, -0.5)
|
||
luren.offset = Vector2(-19, -1)
|
||
$"../DeployLayer/陆仁舞刀/Npc吉祥话4".enabled = true
|
||
|
||
|
||
func _knock_door():
|
||
# 6 号动作:敲门
|
||
SceneManager.lock_player(3.5, 6)
|
||
await Util.wait(2.2)
|
||
$"敲门音效".play()
|
||
await Util.wait(1.2)
|
||
var stream = preload("res://asset/audio/sfx/交互/序章/03_书店外黄昏_开门.wav")
|
||
AudioManager.play_sfx(stream)
|
||
|
||
|
||
func _on_fog_disappear() -> void:
|
||
set_data("fog_disappeared", true)
|
||
# 显示标题
|
||
SceneManager.pop_chapter_notification(1)
|
||
fog.tween_fog(0, Color.TRANSPARENT, Fog2D.FOG_OFFSET_DEFAULT, 15.0, true)
|
||
|
||
|
||
func seller_interacted():
|
||
bookstore_portal.holding = false
|
||
# 报童交互
|
||
SceneManager.freeze_player(0)
|
||
seller.play("报童给报纸")
|
||
# 提前写入 prop 中,防止存档 bug,稍后播放获得动画
|
||
SceneManager.enable_prop_item_silently("prop_信碎片2")
|
||
await Util.wait(1.5)
|
||
$"报童音效".play()
|
||
await SceneManager.pop_os_with_str("c01_s07_获得报纸")
|
||
# 播放获得动画
|
||
SceneManager.enable_prop_item("prop_信碎片2")
|
||
SceneManager.release_player()
|