extends Sprite2D @export var entity_config: EntityConfig: set(value): entity_config = value @onready var sprite2d = %AnimatedSoundSprite2D as AnimatedSoundSprite2D @onready var sign_mark = %Sign as Sprite2D @onready var area2d = %InteractArea2D as Area2D @onready var collision_shape = %CollisionShape2D as CollisionShape2D var listening = false func _ready() -> void: _relocate_sign() area2d.body_entered.connect(_reset) area2d.body_exited.connect(_on_cancel) area2d.body_entered.connect(sign_mark.activate) area2d.body_exited.connect(sign_mark.disactivate) sign_mark.interacted.connect(_on_interacted) sign_mark.cancel.connect(_on_cancel) # if GlobalConfig.DEBUG: # var label = DebugLabel.new() # add_child(label) # label.name = "DebugLabel" # _reload() # func _reload() -> void: # if not entity_config or not sprite2d: # return # # Load current state according to entity config # var entity_name = entity_config.entity_name # if entity_name and sprite2d.sprite_frames.has_animation(entity_name): # # sprite2d.scale = entity_config.scale # # sprite2d.offset = entity_config.offset # sprite2d.play_with_sound(entity_config.entity_name) # var texture = sprite2d.sprite_frames.get_frame_texture(entity_name, 0) # # set collision shape size # if collision_shape: # collision_shape.shape.size = texture.get_size() # else: # _init_placeholder() # func _init_placeholder(): # if not entity_config.placeholder_size: # return # sprite2d.play_with_sound("placeholder") # var frames = sprite2d.sprite_frames as SpriteFrames # var first_frame_size = frames.get_frame_texture("placeholder", 0).get_size() # sprite2d.scale = entity_config.placeholder_size / first_frame_size # sprite2d.offset = Vector2.ZERO # var label = get_node_or_null("DebugLabel") # if label: # label.text = ("[" + entity_config.entity_name + "]" + entity_config.entity_title) # label.modulate = Color.GREEN func _relocate_sign(): # 根据 sprite 大小,调整位置 pass func _on_interacted() -> void: pass func _on_cancel(): pass func _reset(): pass