extends Sprite2D # @export var title := "" @export var notes := [] as Array[String] @export var dialogs := [] as Array[String] @onready var sign_mark = %Sign as Sprite2D @onready var area2d = %Area2D as Area2D var played_time = 0 var mutex = Mutex.new() func _ready() -> void: area2d.body_entered.connect(_reset) area2d.body_exited.connect(_on_cancel) sign_mark.interacted.connect(_on_interacted) sign_mark.cancel.connect(_on_cancel) func _on_interacted() -> void: if notes.is_empty(): return var note_time = notes.size() * 2.0 # 0.5s 内锁定播放 mutex.lock() if Time.get_ticks_msec() - played_time < note_time * 1000 + 500: mutex.unlock() return # show note played_time = Time.get_ticks_msec() mutex.unlock() %Sfx.play() for note in notes: SceneManager.pop_note(note, "white", 2.0) var player = SceneManager.get_player() # TODO note viewing animation player.freeze_player(note_time, "") func _on_cancel(_body = null): pass func _reset(_body): pass