Loading scenes/dragons/dragon.tscn +12 −5 Original line number Diff line number Diff line [gd_scene load_steps=2 format=3 uid="uid://baa8gpicw2yg0"] [gd_scene load_steps=4 format=3 uid="uid://miutbdsgccd1"] [ext_resource type="Texture2D" uid="uid://fdqnc2qrrvn1" path="res://assets/sprites/icon.svg" id="1_ixu8j"] [ext_resource type="Script" uid="uid://csb23v0fr12e0" path="res://scenes/dragons/dragon_entity_dragger.gd" id="1_jccds"] [ext_resource type="PackedScene" uid="uid://baa8gpicw2yg0" path="res://scenes/dragons/dragon_sprite.tscn" id="2_l1h0r"] [node name="Dragon" type="Node2D"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_6eaxg"] size = Vector2(128, 128) [node name="Sprite" type="Sprite2D" parent="."] [node name="Dragon" type="Area2D"] script = ExtResource("1_jccds") [node name="Dragon" parent="." instance=ExtResource("2_l1h0r")] [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(0, 1) texture = ExtResource("1_ixu8j") shape = SubResource("RectangleShape2D_6eaxg") scenes/dragons/dragon_entity_dragger.gd 0 → 100644 +17 −0 Original line number Diff line number Diff line extends Area2D class_name DragonEntity signal on_pick(position) func _ready() -> void: set_process_input(true) func _input_event(viewport, event, shape_idx) -> void: if event is InputEventMouseButton \ and event.button_index == MOUSE_BUTTON_LEFT \ and event.is_pressed(): on_pick.emit(position) queue_free() scenes/dragons/dragon_entity_dragger.gd.uid 0 → 100644 +1 −0 Original line number Diff line number Diff line uid://csb23v0fr12e0 scenes/dragons/dragon_sprite.tscn 0 → 100644 +9 −0 Original line number Diff line number Diff line [gd_scene load_steps=2 format=3 uid="uid://baa8gpicw2yg0"] [ext_resource type="Texture2D" uid="uid://fdqnc2qrrvn1" path="res://assets/sprites/icon.svg" id="1_ixu8j"] [node name="Dragon" type="Node2D"] [node name="Sprite" type="Sprite2D" parent="."] position = Vector2(0, 1) texture = ExtResource("1_ixu8j") scenes/main.gd +19 −6 Original line number Diff line number Diff line Loading @@ -2,13 +2,14 @@ extends Node @export var dragon_template: PackedScene @export var dragon_ingame: PackedScene @export var dragon_spots: Array[Node2D] var _instantiator: DragonInstantiator func _ready(): _instantiator = DragonInstantiator.new(dragon_template, dragon_spots, get_viewport(), get_window()) _instantiator = DragonInstantiator.new(dragon_template, get_viewport(), get_window()) await get_tree().process_frame move_window_to_bottom_right() Loading @@ -28,9 +29,21 @@ func move_window_to_bottom_right(): DisplayServer.window_set_position(new_position) func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed("ui_accept"): var dragon: Dragon = _instantiator.instantiate() func _input(event: InputEvent) -> void: if event.is_pressed() and event.is_action("ui_accept"): _instantiate_dragon_ingame(dragon_spots[0].position) func _instantiate_dragon_ingame(position: Vector2): var dragon: DragonEntity = dragon_ingame.instantiate() add_child(dragon) dragon.position = position dragon.on_pick.connect(_pick_dragon) func _pick_dragon(position: Vector2): print(position) var dragon: Dragon = _instantiator.instantiate(position) dragon.place_back.connect(_dragon_place_back) add_child(dragon) Loading Loading
scenes/dragons/dragon.tscn +12 −5 Original line number Diff line number Diff line [gd_scene load_steps=2 format=3 uid="uid://baa8gpicw2yg0"] [gd_scene load_steps=4 format=3 uid="uid://miutbdsgccd1"] [ext_resource type="Texture2D" uid="uid://fdqnc2qrrvn1" path="res://assets/sprites/icon.svg" id="1_ixu8j"] [ext_resource type="Script" uid="uid://csb23v0fr12e0" path="res://scenes/dragons/dragon_entity_dragger.gd" id="1_jccds"] [ext_resource type="PackedScene" uid="uid://baa8gpicw2yg0" path="res://scenes/dragons/dragon_sprite.tscn" id="2_l1h0r"] [node name="Dragon" type="Node2D"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_6eaxg"] size = Vector2(128, 128) [node name="Sprite" type="Sprite2D" parent="."] [node name="Dragon" type="Area2D"] script = ExtResource("1_jccds") [node name="Dragon" parent="." instance=ExtResource("2_l1h0r")] [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(0, 1) texture = ExtResource("1_ixu8j") shape = SubResource("RectangleShape2D_6eaxg")
scenes/dragons/dragon_entity_dragger.gd 0 → 100644 +17 −0 Original line number Diff line number Diff line extends Area2D class_name DragonEntity signal on_pick(position) func _ready() -> void: set_process_input(true) func _input_event(viewport, event, shape_idx) -> void: if event is InputEventMouseButton \ and event.button_index == MOUSE_BUTTON_LEFT \ and event.is_pressed(): on_pick.emit(position) queue_free()
scenes/dragons/dragon_entity_dragger.gd.uid 0 → 100644 +1 −0 Original line number Diff line number Diff line uid://csb23v0fr12e0
scenes/dragons/dragon_sprite.tscn 0 → 100644 +9 −0 Original line number Diff line number Diff line [gd_scene load_steps=2 format=3 uid="uid://baa8gpicw2yg0"] [ext_resource type="Texture2D" uid="uid://fdqnc2qrrvn1" path="res://assets/sprites/icon.svg" id="1_ixu8j"] [node name="Dragon" type="Node2D"] [node name="Sprite" type="Sprite2D" parent="."] position = Vector2(0, 1) texture = ExtResource("1_ixu8j")
scenes/main.gd +19 −6 Original line number Diff line number Diff line Loading @@ -2,13 +2,14 @@ extends Node @export var dragon_template: PackedScene @export var dragon_ingame: PackedScene @export var dragon_spots: Array[Node2D] var _instantiator: DragonInstantiator func _ready(): _instantiator = DragonInstantiator.new(dragon_template, dragon_spots, get_viewport(), get_window()) _instantiator = DragonInstantiator.new(dragon_template, get_viewport(), get_window()) await get_tree().process_frame move_window_to_bottom_right() Loading @@ -28,9 +29,21 @@ func move_window_to_bottom_right(): DisplayServer.window_set_position(new_position) func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed("ui_accept"): var dragon: Dragon = _instantiator.instantiate() func _input(event: InputEvent) -> void: if event.is_pressed() and event.is_action("ui_accept"): _instantiate_dragon_ingame(dragon_spots[0].position) func _instantiate_dragon_ingame(position: Vector2): var dragon: DragonEntity = dragon_ingame.instantiate() add_child(dragon) dragon.position = position dragon.on_pick.connect(_pick_dragon) func _pick_dragon(position: Vector2): print(position) var dragon: Dragon = _instantiator.instantiate(position) dragon.place_back.connect(_dragon_place_back) add_child(dragon) Loading