Skip to content

Commit 552d30d

Browse files
committed
pieces now spawn one at a time
1 parent 836cebb commit 552d30d

File tree

5 files changed

+124
-50
lines changed

5 files changed

+124
-50
lines changed

scenes/GameScene/game.gd

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
extends Node2D
2+
3+
@export var levels:Array[PackedScene]
4+
5+
var current_level = 0
6+
var current_level_instance = null
7+
8+
@onready var piece_spawner = $GamepieceSpawner
9+
10+
# Called when the node enters the scene tree for the first time.
11+
func _ready() -> void:
12+
load_current_level()
13+
14+
15+
# Called every frame. 'delta' is the elapsed time since the previous frame.
16+
func _process(delta: float) -> void:
17+
pass
18+
19+
20+
func load_current_level():
21+
if not current_level_instance:
22+
current_level_instance = levels[current_level].instantiate()
23+
add_child(current_level_instance)
24+
piece_spawner.add_segments_to_queue(current_level_instance.get_node("PossibleSolution").get_children())
25+
piece_spawner.reveal_next_piece()
26+

scenes/GameScene/game.tscn

Lines changed: 11 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,17 @@
1-
[gd_scene load_steps=7 format=4 uid="uid://drwnwutwrrpb0"]
1+
[gd_scene load_steps=4 format=3 uid="uid://drwnwutwrrpb0"]
22

3-
[ext_resource type="PackedScene" uid="uid://cy1uuyuh3e44f" path="res://scenes/GameScene/load.tscn" id="2_6vgst"]
4-
[ext_resource type="PackedScene" uid="uid://73fcyu51g72" path="res://scenes/power_source.tscn" id="2_efwgb"]
5-
[ext_resource type="PackedScene" uid="uid://cfrdeamt1c5dy" path="res://scenes/GameScene/segment.tscn" id="4_cmlyv"]
6-
[ext_resource type="PackedScene" uid="uid://cp11itxbkl8u2" path="res://scenes/drop_area.tscn" id="6_dvwn4"]
7-
8-
[sub_resource type="TileSetScenesCollectionSource" id="TileSetScenesCollectionSource_0044b"]
9-
resource_name = "Map"
10-
scenes/1/scene = ExtResource("6_dvwn4")
11-
scenes/2/scene = ExtResource("2_efwgb")
12-
scenes/3/scene = ExtResource("2_6vgst")
13-
14-
[sub_resource type="TileSet" id="TileSet_28ise"]
15-
tile_shape = 3
16-
tile_size = Vector2i(94, 94)
17-
sources/0 = SubResource("TileSetScenesCollectionSource_0044b")
3+
[ext_resource type="PackedScene" uid="uid://j34kskfwf7ku" path="res://scenes/Levels/level_1.tscn" id="1_cw4a4"]
4+
[ext_resource type="Script" path="res://scenes/GameScene/game.gd" id="1_y3mbf"]
5+
[ext_resource type="Script" path="res://scenes/gamepiece_spawner.gd" id="3_8wmyh"]
186

197
[node name="Game" type="Node2D"]
208
position = Vector2(254, 124)
9+
script = ExtResource("1_y3mbf")
10+
levels = Array[PackedScene]([ExtResource("1_cw4a4")])
2111

22-
[node name="TileMapLayerHex" type="TileMapLayer" parent="."]
23-
position = Vector2(-26, -18)
24-
tile_map_data = PackedByteArray("AAD//wMAAAAAAAAAAQAAAAMAAAAAAAAAAQAAAAIAAAAAAAAAAQD//wIAAAAAAAAAAQD//wEAAAAAAAAAAQD+/wEAAAAAAAAAAQD+/wIAAAAAAAAAAgABAAIAAAAAAAAAAwD+/wMAAAAAAAAAAQD//wQAAAAAAAAAAQAAAAQAAAAAAAAAAQABAAQAAAAAAAAAAQABAAMAAAAAAAAAAQAAAAEAAAAAAAAAAQA=")
25-
tile_set = SubResource("TileSet_28ise")
26-
27-
[node name="Segment" parent="." instance=ExtResource("4_cmlyv")]
28-
position = Vector2(-133, -53)
29-
connection_pairs = Array[Vector2i]([Vector2i(2, -2)])
30-
31-
[node name="Segment2" parent="." instance=ExtResource("4_cmlyv")]
32-
position = Vector2(-82, 20)
33-
connection_pairs = Array[Vector2i]([Vector2i(5, 2)])
34-
35-
[node name="Segment3" parent="." instance=ExtResource("4_cmlyv")]
36-
position = Vector2(63, -54)
37-
connection_pairs = Array[Vector2i]([Vector2i(5, 3)])
38-
39-
[node name="Segment4" parent="." instance=ExtResource("4_cmlyv")]
40-
position = Vector2(-179, 27)
41-
connection_pairs = Array[Vector2i]([Vector2i(0, 1)])
42-
43-
[node name="Segment5" parent="." instance=ExtResource("4_cmlyv")]
44-
position = Vector2(114, 20)
45-
connection_pairs = Array[Vector2i]([Vector2i(4, 2)])
46-
47-
[node name="Segment6" parent="." instance=ExtResource("4_cmlyv")]
48-
position = Vector2(-34, -55)
49-
connection_pairs = Array[Vector2i]([Vector2i(5, 3)])
12+
[node name="GamepieceSpawner" type="Node2D" parent="."]
13+
top_level = true
14+
position = Vector2(54, 30)
15+
script = ExtResource("3_8wmyh")
5016

51-
[node name="Segment7" parent="." instance=ExtResource("4_cmlyv")]
52-
position = Vector2(17, 19)
53-
connection_pairs = Array[Vector2i]([Vector2i(1, 0)])
17+
[node name="LevelContainer" type="Node2D" parent="."]

scenes/GameScene/segment.gd

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
@tool
22
extends Node2D
3+
class_name Segment
34

4-
var draggable = false
5+
signal dropped
6+
7+
var draggable = true
58
var is_inside_dropable = false
69
var offset: Vector2
710
var dragStartPosition: Vector2
@@ -87,16 +90,19 @@ func _on_click_area_mouse_exited() -> void:
8790
func _on_click_area_input_event(viewport: Node, event: InputEvent, shape_idx: int) -> void:
8891
if Engine.is_editor_hint():
8992
return
90-
if event.is_action_pressed("click"):
93+
if event.is_action_pressed("click") and draggable:
9194
dragging = true
9295
offset = get_global_mouse_position() - global_position
9396
dragStartPosition =global_position
9497
Dragging.is_dragging = true
95-
elif event.is_action_released("click"):
98+
elif event.is_action_released("click") and draggable:
9699
dragging = false
97100
Dragging.is_dragging = false
98101
if drop_target:
102+
drop_target.monitorable = false
99103
global_position = drop_target.global_position
104+
dropped.emit()
105+
$ClickArea.queue_free()
100106
drop_target = null
101107
else:
102108
global_position = dragStartPosition

scenes/Levels/level_1.tscn

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
[gd_scene load_steps=7 format=4 uid="uid://j34kskfwf7ku"]
2+
3+
[ext_resource type="PackedScene" uid="uid://cp11itxbkl8u2" path="res://scenes/drop_area.tscn" id="1_g2nlb"]
4+
[ext_resource type="PackedScene" uid="uid://73fcyu51g72" path="res://scenes/power_source.tscn" id="2_spqev"]
5+
[ext_resource type="PackedScene" uid="uid://cy1uuyuh3e44f" path="res://scenes/GameScene/load.tscn" id="3_gak4n"]
6+
[ext_resource type="PackedScene" uid="uid://cfrdeamt1c5dy" path="res://scenes/GameScene/segment.tscn" id="4_c6ir0"]
7+
8+
[sub_resource type="TileSetScenesCollectionSource" id="TileSetScenesCollectionSource_ie45y"]
9+
resource_name = "Map"
10+
scenes/1/scene = ExtResource("1_g2nlb")
11+
scenes/2/scene = ExtResource("2_spqev")
12+
scenes/3/scene = ExtResource("3_gak4n")
13+
14+
[sub_resource type="TileSet" id="TileSet_f5i1a"]
15+
tile_shape = 3
16+
tile_size = Vector2i(94, 94)
17+
sources/0 = SubResource("TileSetScenesCollectionSource_ie45y")
18+
19+
[node name="Level1" type="Node2D"]
20+
21+
[node name="Tiles" type="TileMapLayer" parent="."]
22+
position = Vector2(-26, -18)
23+
tile_map_data = PackedByteArray("AAD//wMAAAAAAAAAAQAAAAMAAAAAAAAAAQAAAAIAAAAAAAAAAQD//wIAAAAAAAAAAQD//wEAAAAAAAAAAQD+/wEAAAAAAAAAAQD+/wIAAAAAAAAAAgABAAIAAAAAAAAAAwD+/wMAAAAAAAAAAQD//wQAAAAAAAAAAQAAAAQAAAAAAAAAAQABAAQAAAAAAAAAAQABAAMAAAAAAAAAAQAAAAEAAAAAAAAAAQA=")
24+
tile_set = SubResource("TileSet_f5i1a")
25+
26+
[node name="PossibleSolution" type="Node2D" parent="."]
27+
visible = false
28+
29+
[node name="Segment" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
30+
position = Vector2(-133, -53)
31+
connection_pairs = Array[Vector2i]([Vector2i(2, -2)])
32+
33+
[node name="Segment2" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
34+
position = Vector2(-82, 20)
35+
connection_pairs = Array[Vector2i]([Vector2i(5, 2)])
36+
37+
[node name="Segment3" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
38+
position = Vector2(63, -54)
39+
connection_pairs = Array[Vector2i]([Vector2i(5, 3)])
40+
41+
[node name="Segment4" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
42+
position = Vector2(-179, 27)
43+
connection_pairs = Array[Vector2i]([Vector2i(0, 1)])
44+
45+
[node name="Segment5" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
46+
position = Vector2(114, 20)
47+
connection_pairs = Array[Vector2i]([Vector2i(4, 2)])
48+
49+
[node name="Segment6" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
50+
position = Vector2(-34, -55)
51+
connection_pairs = Array[Vector2i]([Vector2i(5, 3)])
52+
53+
[node name="Segment7" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
54+
position = Vector2(17, 19)
55+
connection_pairs = Array[Vector2i]([Vector2i(1, 0)])

scenes/gamepiece_spawner.gd

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
extends Node2D
2+
class_name GamepieceSpawner
3+
4+
5+
@onready var queue = Node2D.new()
6+
7+
8+
func _ready() -> void:
9+
queue.hide()
10+
add_child(queue)
11+
12+
13+
func add_segments_to_queue(pieces:Array[Node]) -> void:
14+
pieces.shuffle()
15+
for piece in pieces:
16+
piece.position=Vector2.ZERO
17+
piece.dropped.connect(reveal_next_piece)
18+
piece.reparent(queue)
19+
20+
func reveal_next_piece() -> void:
21+
var next_piece = queue.get_child(0)
22+
if next_piece:
23+
next_piece.reparent(self)

0 commit comments

Comments
 (0)