Skip to content

Commit a65e0e0

Browse files
committed
rough beginning of multiple levels
1 parent 552d30d commit a65e0e0

File tree

14 files changed

+282
-63
lines changed

14 files changed

+282
-63
lines changed

autoload/network_events.gd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
extends Node
22

33
signal network_changed
4+
signal circuit_complete
5+
6+
func _ready() -> void:
7+
network_changed.emit()

project.godot

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ AppConfig="*res://addons/maaacks_game_template/base/scenes/Autoloads/AppConfig.t
2424
SceneLoader="*res://addons/maaacks_game_template/base/scenes/Autoloads/SceneLoader.tscn"
2525
ProjectMusicController="*res://addons/maaacks_game_template/base/scenes/Autoloads/ProjectMusicController.tscn"
2626
ProjectUISoundController="*res://addons/maaacks_game_template/base/scenes/Autoloads/ProjectUISoundController.tscn"
27-
NetworkEvents="*res://autoload/network_events.gd"
2827
Dragging="*res://autoload/dragging.gd"
28+
NetworkEvents="*res://autoload/network_events.gd"
2929

3030
[display]
3131

scenes/GameScene/connection_point.gd

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,12 @@ var connected_to:ConnectionPoint= null:
1313
set(new_connection):
1414
connected_to = new_connection
1515
connection_updated.emit()
16-
NetworkEvents.network_changed.emit()
17-
print(new_connection)
1816

1917
# Called when the node enters the scene tree for the first time.
2018
func _ready() -> void:
2119
pass # Replace with function body.
2220

2321

24-
# Called every frame. 'delta' is the elapsed time since the previous frame.
25-
func _physics_process(delta: float) -> void:
26-
pass
27-
2822

2923
func query_connections() -> void:
3024
if monitoring && has_overlapping_areas():
@@ -41,7 +35,6 @@ func provides_positive_charge()->bool:
4135
if disposition == Disposition.PROVIDES_POSITIVE:
4236
return true
4337
if disposition == Disposition.PAIRED:
44-
var partner_connected = partner.connected
4538
if partner.connected:
4639
return partner.connected_to.provides_positive_charge()
4740
else:
@@ -56,9 +49,9 @@ func provides_negative_charge() -> bool:
5649
return false
5750

5851

59-
func _on_area_entered(area: Area2D) -> void:
52+
func _on_area_entered(_area: Area2D) -> void:
6053
query_connections()
6154

6255

63-
func _on_area_exited(area: Area2D) -> void:
56+
func _on_area_exited(_area: Area2D) -> void:
6457
query_connections()

scenes/GameScene/connection_point.tscn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
[sub_resource type="CircleShape2D" id="CircleShape2D_8ybln"]
66

77
[node name="ConnectionPoint" type="Area2D" groups=["connection_points"]]
8-
monitoring = false
98
script = ExtResource("1_43rxn")
109

1110
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]

scenes/GameScene/game.gd

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,26 @@ var current_level = 0
66
var current_level_instance = null
77

88
@onready var piece_spawner = $GamepieceSpawner
9+
@onready var level_container = $LevelContainer
910

1011
# Called when the node enters the scene tree for the first time.
1112
func _ready() -> void:
13+
NetworkEvents.circuit_complete.connect(advance_level)
1214
load_current_level()
1315

14-
15-
# Called every frame. 'delta' is the elapsed time since the previous frame.
16-
func _process(delta: float) -> void:
17-
pass
18-
16+
func advance_level():
17+
current_level_instance.queue_free()
18+
current_level +=1
19+
load_current_level()
1920

2021
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()
22+
current_level_instance = levels[current_level].instantiate()
23+
piece_spawner.prepare()
24+
level_container.add_child(current_level_instance)
25+
piece_spawner.add_segments_to_queue(current_level_instance.get_node("PossibleSolution").get_children())
26+
piece_spawner.reveal_next_piece()
2627

28+
29+
30+
func _on_undo_button_pressed() -> void:
31+
piece_spawner.undo()

scenes/GameScene/game.tscn

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

33
[ext_resource type="PackedScene" uid="uid://j34kskfwf7ku" path="res://scenes/Levels/level_1.tscn" id="1_cw4a4"]
44
[ext_resource type="Script" path="res://scenes/GameScene/game.gd" id="1_y3mbf"]
55
[ext_resource type="Script" path="res://scenes/gamepiece_spawner.gd" id="3_8wmyh"]
6+
[ext_resource type="PackedScene" uid="uid://bg681tt0cdjvg" path="res://scenes/Levels/level_2.tscn" id="3_ld4mu"]
7+
[ext_resource type="PackedScene" uid="uid://clsd2khirk0ty" path="res://scenes/Levels/level_3.tscn" id="4_3vlyd"]
68

79
[node name="Game" type="Node2D"]
8-
position = Vector2(254, 124)
910
script = ExtResource("1_y3mbf")
10-
levels = Array[PackedScene]([ExtResource("1_cw4a4")])
11+
levels = Array[PackedScene]([ExtResource("1_cw4a4"), ExtResource("3_ld4mu"), ExtResource("4_3vlyd")])
1112

1213
[node name="GamepieceSpawner" type="Node2D" parent="."]
1314
top_level = true
14-
position = Vector2(54, 30)
15+
position = Vector2(540, 86)
1516
script = ExtResource("3_8wmyh")
1617

1718
[node name="LevelContainer" type="Node2D" parent="."]
19+
position = Vector2(18, 123)
20+
21+
[node name="HUD" type="CanvasLayer" parent="."]
22+
23+
[node name="UndoButton" type="Button" parent="HUD"]
24+
offset_left = 774.0
25+
offset_top = 60.0
26+
offset_right = 824.0
27+
offset_bottom = 91.0
28+
text = "Undo"
29+
30+
[connection signal="pressed" from="HUD/UndoButton" to="." method="_on_undo_button_pressed"]
Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
@tool
22
extends Node2D
3+
class_name Light
34

45

56
@onready var connection_point1 = $ConnectionPoint1
@@ -10,27 +11,23 @@ var is_on = false:
1011
is_on = status
1112
update_display()
1213

13-
func _ready() -> void:
14-
if not Engine.is_editor_hint():
15-
NetworkEvents.network_changed.connect(update_status)
16-
17-
18-
func _physics_process(delta: float) -> void:
19-
if not Engine.is_editor_hint():
20-
#update_status()
21-
pass
2214

2315
func update_status()-> void:
16+
if Dragging.is_dragging:
17+
return
2418
var cp1_positive = connection_point1.connected && connection_point1.connected_to.provides_positive_charge()
2519
var cp1_negative = connection_point1.connected && connection_point1.connected_to.provides_negative_charge()
2620
var cp2_positive = connection_point2.connected && connection_point2.connected_to.provides_positive_charge()
2721
var cp2_negative = connection_point2.connected && connection_point2.connected_to.provides_negative_charge()
2822
is_on = (cp1_negative && cp2_positive) || (cp1_positive && cp2_negative)
2923

3024
func update_display() -> void:
25+
if Engine.is_editor_hint():
26+
return
3127
if is_on:
3228
$OnSprite.show()
3329
$OffSprite.hide()
30+
NetworkEvents.circuit_complete.emit()
3431
else:
3532
$OnSprite.hide()
3633
$OffSprite.show()

scenes/GameScene/load.tscn

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
[gd_scene load_steps=5 format=3 uid="uid://cy1uuyuh3e44f"]
22

3-
[ext_resource type="Script" path="res://scenes/GameScene/load.gd" id="1_q7yfn"]
3+
[ext_resource type="Script" path="res://scenes/GameScene/light.gd" id="1_q7yfn"]
44
[ext_resource type="PackedScene" uid="uid://7ycpev6cp8qd" path="res://scenes/GameScene/connection_point.tscn" id="2_qtcvc"]
55
[ext_resource type="Texture2D" uid="uid://bp1vld2jiktyq" path="res://assets/images/hex-lamp-off.png" id="3_d4uqo"]
66
[ext_resource type="Texture2D" uid="uid://pcuklcrfui8v" path="res://assets/images/hex-lamp-on.png" id="3_oo3ao"]
77

8-
[node name="Load" type="Node2D"]
8+
[node name="Load" type="Node2D" groups=["lights"]]
99
script = ExtResource("1_q7yfn")
1010

1111
[node name="OnSprite" type="Sprite2D" parent="."]
@@ -20,10 +20,14 @@ centered = false
2020

2121
[node name="ConnectionPoint1" parent="." node_paths=PackedStringArray("partner") instance=ExtResource("2_qtcvc")]
2222
position = Vector2(-25, -34)
23-
monitoring = true
2423
partner = NodePath("../ConnectionPoint2")
2524

2625
[node name="ConnectionPoint2" parent="." node_paths=PackedStringArray("partner") instance=ExtResource("2_qtcvc")]
2726
position = Vector2(-25, 33)
28-
monitoring = true
2927
partner = NodePath("../ConnectionPoint1")
28+
29+
[node name="StatusCheckTimer" type="Timer" parent="."]
30+
wait_time = 0.5
31+
autostart = true
32+
33+
[connection signal="timeout" from="StatusCheckTimer" to="." method="update_status"]

scenes/GameScene/segment.gd

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
extends Node2D
33
class_name Segment
44

5-
signal dropped
5+
signal dropped(segment:Segment)
66

77
var draggable = true
88
var is_inside_dropable = false
@@ -12,11 +12,11 @@ var dragging = false
1212
var drop_target:Area2D
1313

1414
var connection_point_scene=preload("res://scenes/GameScene/connection_point.tscn")
15+
var connection_points = []
1516

1617
@export var connection_pairs:Array[Vector2i]:
1718
set(newpairs):
1819
connection_pairs = newpairs
19-
configure_control_points()
2020
queue_redraw()
2121

2222
const positions = [
@@ -43,17 +43,19 @@ func configure_control_points():
4343

4444

4545

46+
47+
4648
func create_connection_pair(position1, position2):
4749
var connector1:ConnectionPoint = connection_point_scene.instantiate()
4850
var connector2:ConnectionPoint = connection_point_scene.instantiate()
51+
connection_points.append(connector1)
52+
connection_points.append(connector2)
4953
connector1.disposition = ConnectionPoint.Disposition.PAIRED
5054
connector2.disposition = ConnectionPoint.Disposition.PAIRED
5155
connector1.partner = connector2
5256
connector2.partner = connector1
5357
connector1.position = position1 - Vector2i(46,46)
5458
connector2.position = position2 - Vector2i(46,46)
55-
connector1.monitoring = true
56-
connector2.monitoring = true
5759
add_child(connector1)
5860
add_child(connector2)
5961

@@ -63,13 +65,12 @@ func _draw() -> void:
6365
var position2 = positions[pair[1]]
6466
draw_line(position1 - Vector2i(46,46),Vector2.ZERO,Color.BLACK,2.0)
6567
draw_line(position2 - Vector2i(46,46),Vector2.ZERO,Color.BLACK,2.0)
66-
print("drawing!")
6768

6869
# Called when the node enters the scene tree for the first time.
6970
func _ready() -> void:
7071
pass # Replace with function body.
7172

72-
func _process(delta: float) -> void:
73+
func _process(_delta: float) -> void:
7374
if not Engine.is_editor_hint():
7475
if dragging:
7576
global_position = get_global_mouse_position()
@@ -87,7 +88,7 @@ func _on_click_area_mouse_exited() -> void:
8788
#scale = Vector2(1.0,1.0)
8889

8990

90-
func _on_click_area_input_event(viewport: Node, event: InputEvent, shape_idx: int) -> void:
91+
func _on_click_area_input_event(_viewport: Node, event: InputEvent, _shape_idx: int) -> void:
9192
if Engine.is_editor_hint():
9293
return
9394
if event.is_action_pressed("click") and draggable:
@@ -101,18 +102,21 @@ func _on_click_area_input_event(viewport: Node, event: InputEvent, shape_idx: in
101102
if drop_target:
102103
drop_target.monitorable = false
103104
global_position = drop_target.global_position
104-
dropped.emit()
105-
$ClickArea.queue_free()
106-
drop_target = null
105+
dropped.emit(self)
106+
configure_control_points()
107+
NetworkEvents.network_changed.emit()
108+
$ClickArea.hide()
107109
else:
108110
global_position = dragStartPosition
109111

110112

113+
func restore_playable():
114+
drop_target.monitorable = true
115+
$ClickArea.show()
116+
111117
func _on_drop_target_detector_area_entered(area: Area2D) -> void:
112-
print("entered target")
113118
drop_target = area
114119

115120

116-
func _on_drop_target_detector_area_exited(area: Area2D) -> void:
117-
print("exit target")
121+
func _on_drop_target_detector_area_exited(_area: Area2D) -> void:
118122
drop_target = null

scenes/Levels/level_1.tscn

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,37 +19,58 @@ sources/0 = SubResource("TileSetScenesCollectionSource_ie45y")
1919
[node name="Level1" type="Node2D"]
2020

2121
[node name="Tiles" type="TileMapLayer" parent="."]
22-
position = Vector2(-26, -18)
22+
position = Vector2(619, 3)
2323
tile_map_data = PackedByteArray("AAD//wMAAAAAAAAAAQAAAAMAAAAAAAAAAQAAAAIAAAAAAAAAAQD//wIAAAAAAAAAAQD//wEAAAAAAAAAAQD+/wEAAAAAAAAAAQD+/wIAAAAAAAAAAgABAAIAAAAAAAAAAwD+/wMAAAAAAAAAAQD//wQAAAAAAAAAAQAAAAQAAAAAAAAAAQABAAQAAAAAAAAAAQABAAMAAAAAAAAAAQAAAAEAAAAAAAAAAQA=")
2424
tile_set = SubResource("TileSet_f5i1a")
2525

2626
[node name="PossibleSolution" type="Node2D" parent="."]
2727
visible = false
28+
position = Vector2(581, 178)
2829

2930
[node name="Segment" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
30-
position = Vector2(-133, -53)
31+
position = Vector2(-316, 142)
3132
connection_pairs = Array[Vector2i]([Vector2i(2, -2)])
3233

3334
[node name="Segment2" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
34-
position = Vector2(-82, 20)
35+
position = Vector2(-260, 28)
36+
connection_pairs = Array[Vector2i]([Vector2i(5, 2)])
37+
38+
[node name="Segment11" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
39+
position = Vector2(-188, 159)
40+
connection_pairs = Array[Vector2i]([Vector2i(5, 2)])
41+
42+
[node name="Segment12" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
43+
position = Vector2(-88, 334)
3544
connection_pairs = Array[Vector2i]([Vector2i(5, 2)])
3645

3746
[node name="Segment3" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
38-
position = Vector2(63, -54)
47+
position = Vector2(192, 11)
3948
connection_pairs = Array[Vector2i]([Vector2i(5, 3)])
4049

4150
[node name="Segment4" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
42-
position = Vector2(-179, 27)
51+
position = Vector2(-247, 297)
52+
connection_pairs = Array[Vector2i]([Vector2i(0, 1)])
53+
54+
[node name="Segment10" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
55+
position = Vector2(291, 206)
4356
connection_pairs = Array[Vector2i]([Vector2i(0, 1)])
4457

4558
[node name="Segment5" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
46-
position = Vector2(114, 20)
59+
position = Vector2(55, -24)
4760
connection_pairs = Array[Vector2i]([Vector2i(4, 2)])
4861

62+
[node name="Segment8" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
63+
position = Vector2(340, 106)
64+
connection_pairs = Array[Vector2i]([Vector2i(4, 3)])
65+
66+
[node name="Segment9" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
67+
position = Vector2(298, 334)
68+
connection_pairs = Array[Vector2i]([Vector2i(4, 3)])
69+
4970
[node name="Segment6" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
50-
position = Vector2(-34, -55)
71+
position = Vector2(-91, -27)
5172
connection_pairs = Array[Vector2i]([Vector2i(5, 3)])
5273

5374
[node name="Segment7" parent="PossibleSolution" instance=ExtResource("4_c6ir0")]
54-
position = Vector2(17, 19)
75+
position = Vector2(-370, 253)
5576
connection_pairs = Array[Vector2i]([Vector2i(1, 0)])

0 commit comments

Comments
 (0)