Loading scenes/dragon_editor/dragon_editor.gd +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 Loading @@ -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) Loading Loading @@ -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): Loading @@ -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() Loading scenes/main.gd +19 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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() Loading @@ -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 Loading scenes/main.tscn +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"] Loading @@ -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 Loading scenes/name_setter/name_setter.gd 0 → 100644 +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() scenes/name_setter/name_setter.gd.uid 0 → 100644 +1 −0 Original line number Diff line number Diff line uid://drulv5ptupx2w Loading
scenes/dragon_editor/dragon_editor.gd +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 Loading @@ -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) Loading Loading @@ -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): Loading @@ -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() Loading
scenes/main.gd +19 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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() Loading @@ -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 Loading
scenes/main.tscn +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"] Loading @@ -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 Loading
scenes/name_setter/name_setter.gd 0 → 100644 +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()
scenes/name_setter/name_setter.gd.uid 0 → 100644 +1 −0 Original line number Diff line number Diff line uid://drulv5ptupx2w