xiandie/scene/ground/scene/c01/s11_黄包车演出.gd

142 lines
3.6 KiB
GDScript

@tool
extends AnimationRoot
var footstep_sfx: Sfx
var chapter_sfx: Sfx
var main_character: AnimatedSprite2D
var duration := 90.0
var target_x := 10750.0
var building_duration := 10.0
var building_y := 350.0
var title_1 = preload("uid://snm3q333tqhl")
var title_2 = preload("uid://d4laekws15ap6")
var title_3 = preload("uid://5oln8axxcfep")
# 覆盖该方法
func _default_data() -> Dictionary:
return {}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
func _on_ground_ready() -> void:
var camera = SceneManager.get_camera_marker()
camera.limit_top = -1000
camera.limit_bottom = 158
await SceneManager.ground_start
# 相机抖动
camera.shake_camera(6.0, 1.5)
# 不显示玩家,锁定玩家移动
SceneManager.lock_player()
main_character = $"../DeployLayer/车夫与吕萍"
footstep_sfx = $"黄包车Sfx"
# 注意第一段 dialog 在鬼差探头阶段播放
play("intro")
# ## test 测试最后运镜 ##
# main_character.global_position.x = target_x
# await get_tree().create_timer(1.0).timeout
# _on_finished()
func sun_fall():
var light = $"../DirectionalLight2D"
create_tween().tween_property(light, "energy", 0.7, 3.0)
func dialog1() -> void:
DialogueManager.dialogue_ended.connect(_start_running, CONNECT_ONE_SHOT)
# 注意第一段 dialog 在鬼差探头阶段播放
if AudioManager.bgm_dict.has("黄包车背景音效"):
$"黄包车背景音效".stop()
return
DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话1")
func pop_title_1():
SceneManager.pop_center_texture(title_1, 6.0)
func pop_title_2():
SceneManager.pop_center_texture(title_2, 10.5)
func pop_title_3():
SceneManager.pop_center_texture(title_3, 10.0)
func _start_running(_res = null):
main_character.play("车夫跑")
footstep_sfx.play()
footstep_sfx.finished.connect(_loop_sfx)
var tween = create_tween()
tween.tween_property(main_character, "global_position:x", target_x, duration)
tween.tween_callback(_on_finished)
func _loop_sfx():
footstep_sfx.play()
# 车夫: “小姐,你这是回家过年是哇?”
# 车夫: “啊?不会是工作吧”
func dialog2() -> void:
DialogueManager.show_dialogue_balloon(
dialogue_c01, "c01_s11_车夫对话2", [GlobalConfig.DIALOG_IGNORE_INPUT]
)
# 6句
# 车夫: “这不行的,你这小年夜还要安排工作啊”
# 吕萍: “......”
func dialog3() -> void:
DialogueManager.show_dialogue_balloon(
dialogue_c01, "c01_s11_车夫对话3", [GlobalConfig.DIALOG_IGNORE_INPUT]
)
func dialog4() -> void:
DialogueManager.show_dialogue_balloon(
dialogue_c01, "c01_s11_车夫对话4", [GlobalConfig.DIALOG_IGNORE_INPUT]
)
func _on_finished():
var camera = SceneManager.get_camera_marker()
footstep_sfx.stop()
# 运镜 marker
var marker = Node2D.new()
get_parent().add_child(marker)
main_character.play("车夫静止")
marker.global_position = main_character.global_position
var target_y = marker.global_position.y - building_y
camera.focus_node(marker, 0.0)
# 运镜,上下打量公寓楼
var tween = create_tween()
tween.tween_interval(1.0)
tween.tween_callback(camera.tween_zoom.bind(0.7, 3.0))
tween.tween_callback(final_dialog)
tween.tween_property(marker, "global_position:y", target_y, building_duration)
tween.tween_callback(_show_chapter)
func final_dialog():
await Util.wait(2.0)
DialogueManager.show_dialogue_balloon(
dialogue_c01, "c01_s11_车夫对话5", [GlobalConfig.DIALOG_IGNORE_INPUT]
)
# 展示章节转场
func _show_chapter():
await SceneManager.pop_chapter_notification(2)
# 转场前停止背景音乐
AudioManager.stop_bgm_music("黄包车背景音效")
SceneManager.get_ground_loader().transition_to_scene("c02_s01", "left")