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))