[gd_scene load_steps=19 format=2]

[ext_resource path="res://image/launcher.png" type="Texture" id=1]
[ext_resource path="res://image/brik.png" type="Texture" id=2]
[ext_resource path="res://scripts/Catcher.gd" type="Script" id=3]
[ext_resource path="res://scripts/Launcher.gd" type="Script" id=4]
[ext_resource path="res://image/visor.png" type="Texture" id=5]
[ext_resource path="res://scripts/Grid.gd" type="Script" id=6]
[ext_resource path="res://scripts/UI.gd" type="Script" id=7]
[ext_resource path="res://scripts/BallCounterLabel.gd" type="Script" id=8]
[ext_resource path="res://scripts/ScoreCounterLabel.gd" type="Script" id=9]
[ext_resource path="res://scripts/LifeContainer.gd" type="Script" id=10]
[ext_resource path="res://scripts/DeadLine.gd" type="Script" id=11]
[ext_resource path="res://scripts/TargetLine.gd" type="Script" id=12]

[sub_resource type="PhysicsMaterial" id=1]
friction = 0.0
bounce = 1.0

[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 50, 300 )

[sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 300, 50 )

[sub_resource type="RectangleShape2D" id=4]
extents = Vector2( 200, 50 )

[sub_resource type="RectangleShape2D" id=5]
extents = Vector2( 20.5, 10.5 )

[sub_resource type="TileSet" id=6]
0/name = "brik.png 0"
0/texture = ExtResource( 2 )
0/tex_offset = Vector2( 0, 0 )
0/modulate = Color( 1, 1, 1, 1 )
0/region = Rect2( 0, 0, 40, 20 )
0/tile_mode = 0
0/occluder_offset = Vector2( 0, 0 )
0/navigation_offset = Vector2( 0, 0 )
0/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 5 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 20, 10 )
} ]
0/z_index = 0

[node name="Root" type="Node"]

[node name="Background" type="Panel" parent="."]
margin_right = 400.0
margin_bottom = 400.0
__meta__ = {
"_edit_use_anchors_": false
}

[node name="Walls" type="StaticBody2D" parent="."]
collision_layer = 2
physics_material_override = SubResource( 1 )

[node name="Left" type="CollisionShape2D" parent="Walls"]
position = Vector2( -50, 200 )
shape = SubResource( 2 )

[node name="Right" type="CollisionShape2D" parent="Walls"]
position = Vector2( 450, 200 )
shape = SubResource( 2 )

[node name="Top" type="CollisionShape2D" parent="Walls"]
position = Vector2( 200, -50 )
shape = SubResource( 3 )

[node name="Catcher" type="Area2D" parent="."]
position = Vector2( 200, 460 )
collision_layer = 8
collision_mask = 5
script = ExtResource( 3 )

[node name="Area" type="CollisionShape2D" parent="Catcher"]
shape = SubResource( 4 )

[node name="Launcher" type="Node2D" parent="."]
script = ExtResource( 4 )
visor_ratio = 1.6

[node name="Grid" type="TileMap" parent="Launcher" groups=[
"grid",
]]
mode = 2
tile_set = SubResource( 6 )
cell_size = Vector2( 40, 20 )
cell_custom_transform = Transform2D( 40, 0, 0, 20, 0, 0 )
collision_layer = 4
collision_mask = 8
format = 1
script = ExtResource( 6 )

[node name="LifeContainer" type="Node2D" parent="Launcher/Grid"]
script = ExtResource( 10 )

[node name="TargetLine" type="RayCast2D" parent="Launcher"]
position = Vector2( 200, 400 )
collision_mask = 6
script = ExtResource( 12 )

[node name="TargetVisor" type="Sprite" parent="Launcher/TargetLine"]
texture = ExtResource( 5 )

[node name="Source" type="Sprite" parent="Launcher"]
position = Vector2( 200, 400 )
texture = ExtResource( 1 )

[node name="ShootDelay" type="Timer" parent="Launcher"]
wait_time = 0.1
one_shot = true

[node name="DeadLine" type="RayCast2D" parent="Launcher"]
position = Vector2( 380, 390 )
cast_to = Vector2( -360, 0 )
collision_mask = 4
script = ExtResource( 11 )

[node name="UI" type="Control" parent="."]
margin_right = 40.0
margin_bottom = 40.0
script = ExtResource( 7 )
__meta__ = {
"_edit_use_anchors_": false
}

[node name="GameOverPanel" type="Panel" parent="UI"]
visible = false
margin_left = 100.0
margin_top = 175.0
margin_right = 300.0
margin_bottom = 225.0
__meta__ = {
"_edit_use_anchors_": false
}

[node name="GameOver" type="Label" parent="UI/GameOverPanel"]
margin_left = -100.0
margin_top = -175.0
margin_right = 300.0
margin_bottom = 225.0
text = "Game Over"
align = 1
valign = 1

[node name="BallCounterPanel" type="Panel" parent="UI"]
margin_left = 10.0
margin_top = 360.0
margin_right = 50.0
margin_bottom = 390.0
__meta__ = {
"_edit_use_anchors_": false
}

[node name="BallLabel" type="Label" parent="UI/BallCounterPanel"]
margin_right = 40.0
margin_bottom = 14.0
text = "Balls"
align = 1
valign = 1
__meta__ = {
"_edit_use_anchors_": false
}

[node name="BallCounterLabel" type="Label" parent="UI/BallCounterPanel"]
margin_top = 15.0
margin_right = 40.0
margin_bottom = 30.0
text = "0"
align = 1
valign = 1
script = ExtResource( 8 )
__meta__ = {
"_edit_use_anchors_": false
}

[node name="ScorePanel" type="Panel" parent="UI"]
margin_left = 350.0
margin_top = 360.0
margin_right = 390.0
margin_bottom = 390.0
__meta__ = {
"_edit_use_anchors_": false
}

[node name="ScoreLabel" type="Label" parent="UI/ScorePanel"]
margin_right = 40.0
margin_bottom = 14.0
text = "Score"
align = 1
valign = 1
__meta__ = {
"_edit_use_anchors_": false
}

[node name="ScoreCounterLabel" type="Label" parent="UI/ScorePanel"]
margin_top = 15.0
margin_right = 40.0
margin_bottom = 30.0
text = "0"
align = 1
valign = 1
script = ExtResource( 9 )
__meta__ = {
"_edit_use_anchors_": false
}
[connection signal="body_entered" from="Catcher" to="Catcher" method="_on_Catcher_body_entered"]
[connection signal="game_over" from="Catcher" to="UI" method="_on_Catcher_game_over"]
[connection signal="gain_new_bullet" from="Launcher" to="UI/BallCounterPanel/BallCounterLabel" method="_on_Launcher_gain_new_bullet"]
[connection signal="get_firing" from="Launcher" to="Launcher" method="_on_Launcher_get_firing"]
[connection signal="is_full" from="Launcher" to="Launcher/Grid" method="_on_Launcher_is_full"]
[connection signal="move_visor" from="Launcher" to="Launcher/TargetLine" method="_on_Launcher_move_visor"]
[connection signal="has_moved" from="Launcher/Grid" to="Launcher" method="_on_Grid_has_moved"]
[connection signal="has_moved" from="Launcher/Grid" to="Launcher/DeadLine" method="_on_Grid_has_moved"]
[connection signal="kace_broken" from="Launcher/Grid" to="Launcher" method="_on_Grid_kace_broken"]
[connection signal="kace_damaged" from="Launcher/Grid" to="UI/ScorePanel/ScoreCounterLabel" method="_on_Grid_kace_damaged"]
[connection signal="timeout" from="Launcher/ShootDelay" to="Launcher" method="_on_ShootDelay_timeout"]
[connection signal="game_lost" from="Launcher/DeadLine" to="Launcher" method="_on_DeadLine_game_lost"]
[connection signal="game_lost" from="Launcher/DeadLine" to="UI" method="_on_DeadLine_game_lost"]