La-Torreta-del-Drac/scenes/dragon_editor/dragon_editor.gd
2025-04-12 20:35:40 +02:00

90 lines
2.2 KiB
GDScript

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
@onready var dragon_name: LineEdit = $CanvasLayer/NameLabel/LineEdit
@onready var dragger: DraggableWindow = $CanvasLayer/Dragger
signal on_create_dragon(properties: DragonProperties)
func _ready() -> void:
hat.visible = false
shirt.visible = false
decor.visible = false
dragon.play('idle')
hat_outfits.index = 0
shirt_outfits.index = 0
decor_outfits.index = 0
dragon_colors.index = 0
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)
sprite.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)
sprite.play('idle')
func _on_create_pressed() -> void:
if dragon_name.text.is_empty():
return
var properties = DragonProperties.new(dragon_name.text, "tower", hat_outfits.index, shirt_outfits.index, decor_outfits.index, dragon_colors.index)
on_create_dragon.emit(properties)
queue_free()
func _on_close_pressed() -> void:
queue_free()