68 lines
1.7 KiB
GDScript
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()
|