xiandie/scene/entity/normal.gd

69 lines
2.0 KiB
GDScript

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