125 lines
3.3 KiB
GDScript
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
|