xiandie/scene/ground/scene/c02/s10_animation.gd

125 lines
3.3 KiB
GDScript

@tool
extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {
"entered": false,
"display_wood_puppet": false,
}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
var xiao_chan_sprite: AnimatedSprite2D
var xiao_chan_interactable: Interactable2D
var counter: Interactable2D
var wood_puppet: Ambush2D
var catty_head: Ambush2D
var portal: Portal2D
func _on_ground_ready() -> void:
if not data["entered"]:
print("第一次进入房间")
#TODO
SceneManager.pop_debug_dialog_info("美术", "第一次进入房间,蔓延的血脚印")
$"../DeployLayer/血脚印".play()
set_data("entered", true)
xiao_chan_sprite = $"../DeployLayer/大头小蝉"
xiao_chan_interactable = $"../DeployLayer/Interactable小蝉"
counter = $"../DeployLayer/Interactable柜子"
wood_puppet = $"../DeployLayer/Ambush木头人偶"
catty_head = $"../DeployLayer/Ambush小猫玩具脑袋"
portal = $"../DeployLayer/portal_1"
wood_puppet.visible = data["display_wood_puppet"]
wood_puppet.enabled = data["display_wood_puppet"]
if xiao_chan_interactable.interacted_times > 0:
catty_head.enabled = true
xiao_chan_sprite.visible = false
counter.enabled = true
else:
counter.enabled = false
xiao_chan_interactable.interacted.connect(_on_xiao_chan_interacted)
if catty_head.played:
catty_head.visible = false
# 捡起猫头后启用传送门
portal.enabled = true
if ArchiveManager.get_global_value("c02_counter_pushed_out"):
counter.visible = false
counter.enabled = false
else:
counter.interacted.connect(_on_counter_interacted)
if counter.interacted_times > 0:
counter.position.x += 50
counter_moved_and_realease_player()
func _on_xiao_chan_interacted() -> void:
#TODO
SceneManager.pop_debug_dialog_info("美术", "小蝉丢下木头人偶并消失")
xiao_chan_sprite.visible = false
counter.enabled = true
await get_tree().create_timer(1.0).timeout
set_data("display_wood_puppet", true)
wood_puppet.visible = true
wood_puppet.enabled = true
func pick_wood_puppet() -> void:
set_data("display_wood_puppet", false)
SceneManager.enable_prop_item("prop_木头人偶")
wood_puppet.visible = false
wood_puppet.enabled = false
func _on_counter_interacted():
if counter.interacted_times == 0:
play("pull_counter")
else:
# TODO 整段逻辑调整
SceneManager.pop_debug_dialog_info("美术", "玩家将箱子推出房间")
ArchiveManager.set_global_entry("c02_counter_pushed_out", true)
SceneManager.freeze_player(0)
SceneManager.get_player().walk_to(Vector2(80, 96.622), 4.0)
create_tween().tween_property(counter, "position:x", 120.0, 4.0)
await get_tree().create_timer(4.5).timeout
SceneManager.get_ground_loader().transition_to_scene("c02_s03", "3")
func walk_to_right_side() -> void:
SceneManager.freeze_player(0)
# 走到右侧
var player = SceneManager.get_player() as MainPlayer
player.walk_to(Vector2(410, 96.622), 1.0)
# TODO 播放动画
SceneManager.pop_debug_dialog_info("美术", "拉动柜子的动画")
func counter_moved_and_realease_player():
if catty_head.played:
portal.enabled = true
catty_head.visible = false
else:
catty_head.enabled = true
SceneManager.release_player()
func pick_catty_head() -> void:
SceneManager.enable_prop_item("prop_小猫玩具的脑袋")
catty_head.visible = false
# 捡起猫头后再启用传送门
portal.enabled = true