@tool class_name EntityLoader extends Node2D @export var entity_config: EntityConfig: set(value): entity_config = value _reload() @onready var sprite2d = %AnimatedSoundSprite2D as AnimatedSoundSprite2D func _ready() -> void: 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) 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