51 lines
1.4 KiB
GDScript
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))
|