xiandie/manager/deploy/entity/entity_loader.gd

45 lines
1.2 KiB
GDScript3
Raw Normal View History

2024-12-24 11:24:55 +00:00
@tool
class_name EntityLoader extends Node2D
@export var entity_config: EntityConfig:
set(value):
entity_config = value
_reload()
@onready var sprite2d = %AnimatedSoundSprite2D as AnimatedSoundSprite2D
2024-12-24 11:24:55 +00:00
2024-12-24 11:54:30 +00:00
2024-12-24 11:24:55 +00:00
func _ready() -> void:
if GlobalConfig.DEBUG:
2024-12-24 11:54:30 +00:00
var label = DebugLabel.new()
add_child(label)
label.name = "DebugLabel"
_reload()
2024-12-24 11:24:55 +00:00
func _reload() -> void:
2024-12-24 11:54:30 +00:00
if not entity_config or not sprite2d:
2024-12-24 11:24:55 +00:00
return
2024-12-25 06:27:47 +00:00
# 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):
2024-12-24 11:24:55 +00:00
sprite2d.scale = entity_config.scale
sprite2d.offset = entity_config.offset
sprite2d.play_with_sound(entity_config.entity_name)
else:
_init_placeholder()
2024-12-24 11:24:55 +00:00
func _init_placeholder():
if not entity_config.placeholder_size:
return
sprite2d.play_with_sound("placeholder")
2024-12-24 11:54:30 +00:00
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
2024-12-24 11:54:30 +00:00
var label = get_node_or_null("DebugLabel")
2024-12-24 11:24:55 +00:00
if label:
2024-12-24 11:54:30 +00:00
label.text = ("[" + entity_config.entity_name + "]" + entity_config.entity_title)
label.modulate = Color.GREEN