La-Torreta-del-Drac/scenes/dragon_editor/dragon_editor.gd
2025-04-12 00:31:52 +02:00

68 lines
1.7 KiB
GDScript

extends Window
class_name DragonEditor
@onready var hat: TextureRect = $CanvasLayer/Dragon/Hat
@onready var shirt: TextureRect = $CanvasLayer/Dragon/Shirt
@onready var shoes: TextureRect = $CanvasLayer/Dragon/Shoes
@onready var dragon: TextureRect = $CanvasLayer/Dragon
@export var hat_outfits: DragonOutfit
@export var shirt_outfits: DragonOutfit
@export var shoes_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.texture = null
shirt.texture = null
shoes.texture = null
dragger.on_drag.connect(_on_drag)
func _on_drag(offset: Vector2i):
position += offset
func _on_next_color_pressed() -> void:
dragon.texture = dragon_colors.pick_next()
func _on_previous_color_pressed() -> void:
dragon.texture = dragon_colors.pick_previous()
func _on_change_hat_pressed() -> void:
hat.texture = hat_outfits.pick_next()
func _on_change_shirt_pressed() -> void:
shirt.texture = shirt_outfits.pick_next()
func _on_change_shoes_pressed() -> void:
shoes.texture = shoes_outfits.pick_next()
func _on_create_pressed() -> void:
if dragon_name.text.is_empty():
return
var hat_index: int = hat_outfits.get_index(hat.texture)
var shirt_index: int = shirt_outfits.get_index(shirt.texture)
var decor_index: int = shoes_outfits.get_index(shoes.texture)
var color_index: int = dragon_colors.get_index(dragon.texture)
var properties = DragonProperties.new(dragon_name.text, "tower", color_index, hat_index, shirt_index, decor_index)
on_create_dragon.emit(properties)
queue_free()
func _on_close_pressed() -> void:
queue_free()