extends Window class_name DragonEditor @onready var hat: AnimatedSprite2D = $CanvasLayer/Dragon/Hat @onready var shirt: AnimatedSprite2D = $CanvasLayer/Dragon/Shirt @onready var decor: AnimatedSprite2D = $CanvasLayer/Dragon/Decor @onready var dragon: AnimatedSprite2D = $CanvasLayer/Dragon @export var hat_outfits: DragonOutfit @export var shirt_outfits: DragonOutfit @export var decor_outfits: DragonOutfit @export var dragon_colors: DragonOutfit var _save_load: SaveLoad @onready var dragon_name: LineEdit = $CanvasLayer/NameLabel/LineEdit @onready var dragger: DraggableWindow = $CanvasLayer/Dragger signal on_create_dragon(properties: DragonProperties) func set_save_load(save_load: SaveLoad): _save_load = save_load func _ready() -> void: hat.visible = false shirt.visible = false decor.visible = false dragon.play('idle') hat_outfits.reset() shirt_outfits.reset() decor_outfits.reset() dragon_colors.reset() dragger.on_drag.connect(_on_drag) func _on_drag(offset: Vector2i): position += offset func _on_next_color_pressed() -> void: _pick_next_animation(dragon, dragon_colors) func _on_previous_color_pressed() -> void: _pick_previous_animation(dragon, dragon_colors) func _on_change_hat_pressed() -> void: _pick_next_animation(hat, hat_outfits) func _on_change_shirt_pressed() -> void: _pick_next_animation(shirt, shirt_outfits) func _on_change_shoes_pressed() -> void: _pick_next_animation(decor, decor_outfits) func _pick_next_animation(sprite: AnimatedSprite2D, outfits: DragonOutfit): var animation: SpriteFrames = outfits.pick_next() if animation == null: sprite.visible = false return sprite.visible = true sprite.set_sprite_frames(animation) _restart_animations() func _restart_animations(): hat.set_frame(0) hat.play('idle') shirt.set_frame(0) shirt.play('idle') decor.set_frame(0) decor.play('idle') dragon.set_frame(0) dragon.play('idle') func _pick_previous_animation(sprite: AnimatedSprite2D, outfits: DragonOutfit): var animation: SpriteFrames = outfits.pick_previous() if animation == null: sprite.visible = false return sprite.visible = true sprite.set_sprite_frames(animation) _restart_animations() func _on_create_pressed() -> void: if dragon_name.text.is_empty(): return var properties = DragonProperties.new(dragon_name.text, _save_load.get_tower_name(), dragon_colors.get_current_index(), hat_outfits.get_current_index(), shirt_outfits.get_current_index(), decor_outfits.get_current_index()) on_create_dragon.emit(properties) queue_free() func _on_close_pressed() -> void: queue_free()