Commit fc177656 authored by Gerard Gascón's avatar Gerard Gascón
Browse files

feat: added town name setting

parent a8b292aa
Loading
Loading
Loading
Loading
+25 −13
Original line number Diff line number Diff line
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
@@ -12,23 +11,25 @@ class_name DragonEditor
@export var decor_outfits: DragonOutfit
@export var dragon_colors: DragonOutfit

@onready var dragon_name: LineEdit = $CanvasLayer/NameLabel/LineEdit
var _save_load: SaveLoad = SaveLoad.new()

@onready var dragon_name: LineEdit = $CanvasLayer/NameLabel/LineEdit
@onready var dragger: DraggableWindow = $CanvasLayer/Dragger

signal on_create_dragon(properties: DragonProperties)


func _ready() -> void:
	_save_load.load()

	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
	hat_outfits.reset()
	shirt_outfits.reset()
	decor_outfits.reset()
	dragon_colors.reset()

	dragger.on_drag.connect(_on_drag)

@@ -64,7 +65,18 @@ func _pick_next_animation(sprite: AnimatedSprite2D, outfits: DragonOutfit):
		return
	sprite.visible = true
	sprite.set_sprite_frames(animation)
	sprite.play('idle')
	_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):
@@ -74,14 +86,14 @@ func _pick_previous_animation(sprite: AnimatedSprite2D, outfits: DragonOutfit):
		return
	sprite.visible = true
	sprite.set_sprite_frames(animation)
	sprite.play('idle')
	_restart_animations()


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)
	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()

+19 −2
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ class_name GameManager

@export var dragon_template: PackedScene
@export var dragon_ingame: PackedScene
@export var name_setter: PackedScene
@export var dragon_spots: Array[Node2D]

@export var clock: PackedScene
@@ -32,14 +33,30 @@ func _ready():
	await get_tree().process_frame
	move_window_to_bottom_right()
	_load_game()
	if _save_load.get_tower_name() == "":
		_show_name_setter_screen()
	_queue_dragon_instantiation()
	
	var clock_window: Window = clock.instantiate()
	add_child(clock_window)


func _show_name_setter_screen():
	var setter: NameSetter = name_setter.instantiate()
	setter.set_save_load(_save_load)
	add_child(setter)
	
	var display_index: int = DisplayServer.window_get_current_screen()
	var work_area_position: Vector2i = DisplayServer.screen_get_usable_rect(display_index).position
	var work_area_size: Vector2i     = DisplayServer.screen_get_usable_rect(display_index).size

	var new_position: Vector2i = work_area_position + Vector2i(work_area_size.x / 2.0 - setter.size.x / 2.0, work_area_size.y / 2.0 - setter.size.y / 2.0)
	setter.position = new_position


func _queue_dragon_instantiation():
	await get_tree().create_timer(rng.randf_range(min_dragon_instantiation_time, max_dragon_instantiation_time)).timeout
	if _save_load.get_tower_name() != "":
		_instantiate_random_dragon()
	_queue_dragon_instantiation()

@@ -50,7 +67,7 @@ func _instantiate_random_dragon():
		return
	
	for i in range(5):
		dragon_sharing.receive("potato")
		dragon_sharing.receive(_save_load.get_tower_name())
		var dragon: DragonProperties = await dragon_sharing.on_dragon_received
		if dragon == null:
			return
+3 −1
Original line number Diff line number Diff line
[gd_scene load_steps=13 format=3 uid="uid://ctytpqaed0yqx"]
[gd_scene load_steps=14 format=3 uid="uid://ctytpqaed0yqx"]

[ext_resource type="Script" uid="uid://3kyt3shje5r1" path="res://scenes/main.gd" id="1_sugp2"]
[ext_resource type="PackedScene" uid="uid://c7nfcgjxqeg7l" path="res://scenes/window/dragon_popup.tscn" id="2_jyhfs"]
[ext_resource type="PackedScene" uid="uid://bj5ptaniasaaj" path="res://scenes/clock/clock.tscn" id="4_a8y0u"]
[ext_resource type="PackedScene" uid="uid://miutbdsgccd1" path="res://scenes/dragons/dragon.tscn" id="4_jyhfs"]
[ext_resource type="Script" uid="uid://cj4l3a6a8ro0r" path="res://scenes/create_button.gd" id="4_tbgi4"]
[ext_resource type="PackedScene" uid="uid://cdlipr8l1k38a" path="res://scenes/name_setter/name_setter.tscn" id="4_trceg"]
[ext_resource type="PackedScene" uid="uid://fut42ruut302" path="res://scenes/dragon_editor/dragon_editor.tscn" id="5_tefeu"]
[ext_resource type="Script" uid="uid://oc6mw86npbii" path="res://scenes/list_button.gd" id="9_choun"]
[ext_resource type="PackedScene" uid="uid://tubxrqxjic6r" path="res://scenes/dragon_list/dragon_list.tscn" id="10_ya4ey"]
@@ -17,6 +18,7 @@
script = ExtResource("1_sugp2")
dragon_template = ExtResource("2_jyhfs")
dragon_ingame = ExtResource("4_jyhfs")
name_setter = ExtResource("4_trceg")
dragon_spots = [NodePath("DragonSpot1"), NodePath("DragonSpot2"), NodePath("DragonSpot3")]
clock = ExtResource("4_a8y0u")
min_dragon_instantiation_time = 2.0
+20 −0
Original line number Diff line number Diff line
extends Window
class_name NameSetter


var save_load: SaveLoad
@onready var name_edit: LineEdit = $Name


func _ready() -> void:
	pass


func set_save_load(save_load: SaveLoad) -> void:
	self.save_load = save_load


func _on_submit_pressed() -> void:
	if not name_edit.text.is_empty():
		save_load.set_tower_name(name_edit.text)
		queue_free()
+1 −0
Original line number Diff line number Diff line
uid://drulv5ptupx2w
Loading