xiandie/scene/ground/script/c02/敲门游戏.gd
2025-05-22 04:16:27 +08:00

51 lines
1.4 KiB
GDScript

extends CanvasLayer
signal exit(success: bool)
@onready var knock_sfx = $Knock as AudioStreamPlayer
@onready var button = $TextureButton as TextureButton
var dialogue = preload("res://asset/dialogue/c02.dialogue")
func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
button.pressed.connect(_on_button_pressed)
# TODO 对白
SceneManager.pop_debug_dialog_info("对白", "理发上楼,看病上楼")
DialogueManager.show_dialogue_balloon(dialogue, "c02_s03_敲门游戏")
if (
# 未偷听,或已敲门成功,则禁用
not ArchiveManager.get_global_value("c02_eavesdrop_finished", false)
or ArchiveManager.get_global_value("c02_meat_bucket_enabled", false)
):
button.disabled = true
var current_id = 0
var knock_time := 0.0
func _on_button_pressed() -> void:
knock_sfx.play()
current_id += 1
var last_knock_time = knock_time
knock_time = Time.get_ticks_msec()
var diff = knock_time - last_knock_time
# 敲门游戏节奏: 三快(<0.8s)三慢(>1s & <5s)
if current_id > 1 and current_id <= 3:
if diff > 800:
current_id = 0
else:
if diff < 1000 or diff > 5000:
current_id = 0
if current_id == 6:
ArchiveManager.set_global_entry("c02_eavesdrop_finished", true)
SceneManager.pop_debug_dialog_info("音效", "敲门游戏成功!")
current_id = 0
button.disabled = true
exit.emit(true)
else:
SceneManager.pop_debug_dialog_info("音效", "敲门:" + str(current_id))