69 lines
2.0 KiB
GDScript
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
|