xiandie/scene/ground/script/c03/s04_closeup李氏纸人.gd

134 lines
4.0 KiB
GDScript

extends CanvasLayer
@warning_ignore("unused_signal")
signal exit(arg)
@onready var animation_player = $AnimationPlayer as AnimationPlayer
@onready var hover_key = %"Hover钥匙" as HoverLightClickArea
@onready var hover_scissor = %"Hover剪刀" as HoverLightClickArea
func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
# c03_li_paperwoman: 0:初始化隐藏 1:显示纸人 2:纸舌头完成 3:已拿剪刀 4:给药完成 5:已拿钥匙
var current_stage = EventManager.get_stage("c03_li_paperwoman")
if current_stage >= 2:
$"断舌头粘完整".show()
match current_stage:
1:
await Util.wait(0.5)
_display_label(0)
2:
holding = true
animation_player.play("give_scissor")
await animation_player.animation_finished
holding = false
3:
await Util.wait(0.5)
_display_label(1)
4:
holding = true
animation_player.play("give_key")
await animation_player.animation_finished
holding = false
# 0: 舌头; 1: 药
func _display_label(id: int) -> void:
var label
if id == 0:
label = $"求舌头/RichTextLabel"
elif id == 1:
label = $"求药/RichTextLabel"
EventManager.set_stage_if_greater("handnote_c03_prop_drug", 1)
$"Sfx诡异的哑巴音效".play()
label.show()
label.modulate.a = 0.0
var tween = create_tween()
tween.tween_property(label, "modulate:a", 1.0, 0.7)
tween.tween_interval(3.5)
tween.tween_property(label, "modulate:a", 0.0, 0.7)
tween.tween_callback(label.hide)
var paste_used := false
var holding := false
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("interact"):
get_viewport().set_input_as_handled()
if holding:
return
var current_stage = EventManager.get_stage("c03_li_paperwoman")
var prop = SceneManager.get_current_prop()
var prop_hud = SceneManager.get_prop_hud()
if current_stage == 1:
if not paste_used:
if prop == "prop_浆糊":
$"Sfx使用浆糊".play()
paste_used = true
var sprite = $"断舌头涂胶水"
sprite.show()
sprite.modulate.a = 0.0
create_tween().tween_property(sprite, "modulate:a", 1.0, 1.0)
return
else:
# 浆糊&纸舌头 -> 纸钱
if prop == "prop_纸舌头":
holding = true
$"Sfx使用纸舌头".play()
var sprite = $"断舌头粘完整"
sprite.show()
sprite.modulate.a = 0.0
# 浆糊可以用两次
SceneManager.disable_prop_item("prop_纸舌头")
EventManager.set_stage_if_greater("c03_li_paperwoman", 2)
create_tween().tween_property(sprite, "modulate:a", 1.0, 1.0)
animation_player.play("give_scissor")
await animation_player.animation_finished
holding = false
return
elif current_stage == 3:
if prop == "prop_药包":
holding = true
# 给药 -> 2013 钥匙 (prop_2013钥匙)
$"Sfx使用药包".play()
EventManager.set_stage_if_greater("handnote_c03_prop_drug", 2)
SceneManager.disable_prop_item("prop_药包")
EventManager.set_stage_if_greater("c03_li_paperwoman", 4)
animation_player.play("give_key")
await animation_player.animation_finished
holding = false
return
if GlobalConfig.DEBUG:
print("无效的道具:%s" % prop)
prop_hud.on_toggle_invalid_prop()
# Editor Node connnect
func _on_hover_scissor_interacted() -> void:
hover_scissor.hide()
EventManager.set_stage_if_greater("c03_li_paperwoman", 3)
SceneManager.enable_prop_item("prop_剪刀")
SceneManager.get_inspector().quit_and_hidden.connect(_display_label.bind(1), CONNECT_ONE_SHOT)
holding = true
animation_player.play("after_give_scissor")
await animation_player.animation_finished
holding = false
# Editor Node connnect
func _on_hover_key_interacted() -> void:
hover_key.hide()
EventManager.set_stage_if_greater("c03_li_paperwoman", 5)
EventManager.set_stage_if_greater("c03_pangzi_pull_xchan", 1)
SceneManager.enable_prop_item("prop_2013钥匙")
holding = true
animation_player.play("after_give_key")
await animation_player.animation_finished
holding = false
await Util.wait(1.0)
# 交互完成,退出
exit.emit(true)