xiandie/scene/ground/script/c03/s09_closeup棺材特写.gd

85 lines
2.8 KiB
GDScript3
Raw Normal View History

extends CanvasLayer
@warning_ignore("unused_signal")
signal exit(arg)
2025-07-30 20:48:16 +00:00
@onready var hover_knife = %"Hover刀" as HoverLightClickArea
@onready var hover_note = %"Hover纸条" as HoverLightClickArea
func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
# c03_coffin: 0:初始化 1:拿走刀 2:拿走纸条_棺材怪演出 3:演出完成
var coffin_stage = EventManager.get_stage("c03_coffin")
2025-07-30 20:48:16 +00:00
hover_knife.interacted.connect(_on_knife_interacted)
hover_note.interacted.connect(_on_note_interacted)
if coffin_stage == 0:
SceneManager.pop_center_notification("ui_center_notify_c03粘刀把")
elif coffin_stage == 1:
hover_knife.hide()
hover_note.freezing = false
elif coffin_stage == 2:
hover_knife.hide()
hover_note.hide()
2025-07-30 20:48:16 +00:00
func _on_knife_interacted() -> void:
hover_knife.hide()
hover_note.freezing = false
EventManager.set_stage("c03_coffin", 1)
SceneManager.enable_prop_item("prop_菜刀")
SceneManager.disable_prop_item("prop_浆糊")
SceneManager.disable_prop_item("prop_刀把")
### TODO 读纸条时,开始准备横版的呼吸声(呼吸声与棺材怪爬墙活动分在两个音频文件)
# 退出阅读马上进入横版,出现棺材怪爬墙活动的声音
2025-07-30 20:48:16 +00:00
func _on_note_interacted() -> void:
hover_note.hide()
2025-07-30 21:24:11 +00:00
EventManager.set_stage("c03_coffin", 2)
var node = get_parent() as Closeup2D
if node:
node.hold_cancel_before_exit()
2025-07-30 21:24:11 +00:00
SceneManager.enable_important_item("prop_沾血的纸条")
# 遮住棺材怪
var color_rect = $"ColorRect"
create_tween().tween_property(color_rect, "modulate:a", 1.0, 0.5)
2025-07-30 21:24:11 +00:00
await SceneManager.get_inspector().quit_and_hidden
SceneManager.black_transition(0.7, 0.5)
await Util.wait(0.8)
2025-09-07 06:28:38 +00:00
Util.timer(1.0, SceneManager.pop_os_with_str.bind("c03_s09_刀使用提示"))
2025-07-30 21:24:11 +00:00
exit.emit(true)
2025-07-30 21:24:11 +00:00
# 0: 需要浆糊 1: 需要刀把 2: 已完成
2025-07-30 20:48:16 +00:00
var knife_state := 0
func _unhandled_input(event: InputEvent) -> void:
var coffin_stage = EventManager.get_stage("c03_coffin")
2025-07-30 21:24:11 +00:00
if event.is_action_pressed("cancel") and coffin_stage == 0:
2025-07-30 20:48:16 +00:00
get_viewport().set_input_as_handled()
SceneManager.reset_temp_disabled_props()
2025-07-30 21:24:11 +00:00
exit.emit(false)
if event.is_action_pressed("interact") and coffin_stage == 0:
2025-07-30 20:48:16 +00:00
var prop = SceneManager.get_current_prop()
if knife_state == 0:
2025-07-30 21:24:11 +00:00
get_viewport().set_input_as_handled()
if prop == "prop_浆糊":
2025-07-30 20:48:16 +00:00
knife_state = 1
$"Sfx使用浆糊".play()
%"胶水".show()
SceneManager.disable_prop_item_temp("prop_浆糊")
2025-07-30 21:24:11 +00:00
else:
SceneManager.get_prop_hud().on_toggle_invalid_prop()
2025-07-30 20:48:16 +00:00
elif knife_state == 1:
2025-07-30 21:24:11 +00:00
get_viewport().set_input_as_handled()
if prop == "prop_刀把":
2025-07-30 20:48:16 +00:00
knife_state = 2
2025-08-13 17:15:39 +00:00
%"胶水".hide()
2025-07-30 20:48:16 +00:00
%"刀有柄".show()
2025-08-14 12:15:28 +00:00
$"Sfx安装刀柄".play()
2025-07-30 20:48:16 +00:00
SceneManager.disable_prop_item_temp("prop_刀把")
hover_knife.freezing = false
2025-07-30 21:24:11 +00:00
else:
SceneManager.get_prop_hud().on_toggle_invalid_prop()