[gd_scene load_steps=35 format=2]
[ext_resource path="res://ui/scenes/mobile/MobileControls.tscn" type="PackedScene" id=1]
[ext_resource path="res://sounds/thrust.wav" type="AudioStream" id=2]
[ext_resource path="res://effects/Trail.tscn" type="PackedScene" id=3]
[ext_resource path="res://sprites/ship.png" type="Texture" id=4]
[ext_resource path="res://sounds/thrust_start.wav" type="AudioStream" id=5]
[ext_resource path="res://sounds/thrust_end.wav" type="AudioStream" id=6]
[ext_resource path="res://player/scripts/ShipArea2d.gd" type="Script" id=7]
[ext_resource path="res://sounds/ShipHit.wav" type="AudioStream" id=8]
[ext_resource path="res://ui/scenes/mobile/MobileJoystick.tscn" type="PackedScene" id=9]
[ext_resource path="res://effects/Fire.tscn" type="PackedScene" id=10]
[ext_resource path="res://player/scripts/Ship.gd" type="Script" id=11]
[ext_resource path="res://sprites/spot.png" type="Texture" id=12]
[sub_resource type="CanvasItemMaterial" id=42]
blend_mode = 1
[sub_resource type="Animation" id=38]
resource_name = "Die Anim"
length = 0.5
tracks/0/type = "value"
tracks/0/path = NodePath("CPUParticles2D:emitting")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
tracks/2/type = "method"
tracks/2/path = NodePath(".")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0.5 ),
"transitions": PoolRealArray( 1 ),
"values": [ {
"args": [ ],
"method": "queue_free"
} ]
}
[sub_resource type="Animation" id=5]
resource_name = "Down"
length = 0.7
loop = true
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 7, 6, 5, 4, 3, 2, 1 ]
}
[sub_resource type="Animation" id=22]
resource_name = "IdleDown"
length = 0.1
loop = true
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ 0 ]
}
[sub_resource type="Animation" id=23]
resource_name = "IdleRight"
length = 0.1
loop = true
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ 0 ]
}
[sub_resource type="Animation" id=21]
resource_name = "IdleUp"
length = 0.1
loop = true
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ 0 ]
}
[sub_resource type="Animation" id=40]
length = 0.001
[sub_resource type="Animation" id=7]
resource_name = "Right"
length = 0.1
loop = true
tracks/0/type = "value"
tracks/0/path = NodePath(".:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 0.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0.0408909 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ 0 ]
}
[sub_resource type="Animation" id=4]
resource_name = "Up"
length = 0.7
loop = true
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 1, 2, 3, 4, 5, 6, 7, 8 ]
}
[sub_resource type="AnimationNodeAnimation" id=35]
animation = "IdleDown"
[sub_resource type="AnimationNodeAnimation" id=36]
animation = "IdleRight"
[sub_resource type="AnimationNodeAnimation" id=37]
animation = "IdleUp"
[sub_resource type="AnimationNodeBlendSpace2D" id=32]
blend_point_0/node = SubResource( 35 )
blend_point_0/pos = Vector2( 0, 1 )
blend_point_1/node = SubResource( 36 )
blend_point_1/pos = Vector2( 1, 0 )
blend_point_2/node = SubResource( 37 )
blend_point_2/pos = Vector2( 0, -1 )
blend_mode = 1
[sub_resource type="AnimationNodeAnimation" id=29]
animation = "Down"
[sub_resource type="AnimationNodeAnimation" id=30]
animation = "Right"
[sub_resource type="AnimationNodeAnimation" id=31]
animation = "Up"
[sub_resource type="AnimationNodeBlendSpace2D" id=28]
blend_point_0/node = SubResource( 29 )
blend_point_0/pos = Vector2( 0, 1 )
blend_point_1/node = SubResource( 30 )
blend_point_1/pos = Vector2( 1.1, 0 )
blend_point_2/node = SubResource( 31 )
blend_point_2/pos = Vector2( 0, -1 )
max_space = Vector2( 1.1, 1 )
blend_mode = 1
[sub_resource type="AnimationNodeStateMachineTransition" id=33]
[sub_resource type="AnimationNodeStateMachineTransition" id=34]
[sub_resource type="AnimationNodeStateMachine" id=27]
states/Idle/node = SubResource( 32 )
states/Idle/position = Vector2( 402, 81 )
states/Turn/node = SubResource( 28 )
states/Turn/position = Vector2( 248, 81 )
transitions = [ "Turn", "Idle", SubResource( 33 ), "Idle", "Turn", SubResource( 34 ) ]
start_node = "Idle"
[sub_resource type="AnimationNodeStateMachinePlayback" id=3]
[sub_resource type="CircleShape2D" id=39]
radius = 374.065
[node name="Ship" type="KinematicBody2D" groups=["Player"]]
z_index = 2
z_as_relative = false
collision_layer = 17
collision_mask = 8
script = ExtResource( 11 )
[node name="Light" type="Light2D" parent="."]
material = SubResource( 42 )
scale = Vector2( 0.5, 0.5 )
texture = ExtResource( 12 )
texture_scale = 3.0
shadow_enabled = true
shadow_gradient_length = 3.0
shadow_filter = 2
shadow_filter_smooth = 5.0
[node name="Fire" parent="." instance=ExtResource( 10 )]
emitting = false
[node name="Trail" parent="." instance=ExtResource( 3 )]
position = Vector2( -2, -5 )
MAX_LENGTH = 30
[node name="LeftWingtip" type="Position2D" parent="Trail"]
position = Vector2( 0, -4.76837e-07 )
[node name="Trail2" parent="." instance=ExtResource( 3 )]
position = Vector2( -2, 5 )
MAX_LENGTH = 30
[node name="RightWingtip" type="Position2D" parent="Trail2"]
[node name="Collision3" type="CollisionPolygon2D" parent="."]
visible = false
polygon = PoolVector2Array( -7, -4, -4, -4, -4, -6, -1, -6, 2, -2, 5, -2, 7, -1, 7, 1, 5, 2, 2, 2, -1, 6, -4, 6, -4, 4, -7, 4 )
[node name="Sprite" type="Sprite" parent="."]
z_index = 2
z_as_relative = false
texture = ExtResource( 4 )
hframes = 9
[node name="Timer" type="Timer" parent="."]
[node name="thrustsfxin" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 5 )
[node name="thrustsfxloop" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 2 )
volume_db = -8.0
[node name="thrustsfxend" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 6 )
volume_db = -4.0
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
"anims/Die Anim" = SubResource( 38 )
anims/Down = SubResource( 5 )
anims/IdleDown = SubResource( 22 )
anims/IdleRight = SubResource( 23 )
anims/IdleUp = SubResource( 21 )
anims/RESET = SubResource( 40 )
anims/Right = SubResource( 7 )
anims/Up = SubResource( 4 )
[node name="AnimationTree" type="AnimationTree" parent="."]
tree_root = SubResource( 27 )
anim_player = NodePath("../AnimationPlayer")
parameters/playback = SubResource( 3 )
parameters/Idle/blend_position = Vector2( 0, 0 )
parameters/Turn/blend_position = Vector2( 0, 0 )
[node name="CPUParticles2D" type="CPUParticles2D" parent="."]
position = Vector2( -12, -19 )
scale = Vector2( 2, 2 )
emitting = false
amount = 100
lifetime = 0.5
one_shot = true
explosiveness = 0.5
local_coords = false
draw_order = 1
emission_shape = 3
emission_points = PoolVector2Array( 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4, 5, 4, 6, 4, 7, 4, 8, 4, 9, 4, 10, 4, 11, 4, 12, 4, 13, 4, 14, 4, 15, 5, 0, 5, 1, 5, 2, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, 5, 8, 5, 9, 5, 10, 5, 11, 5, 12, 5, 13, 5, 14, 5, 15, 6, 1, 6, 2, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7, 6, 8, 6, 9, 6, 10, 6, 11, 6, 12, 6, 13, 6, 14, 7, 2, 7, 3, 7, 4, 7, 5, 7, 6, 7, 7, 7, 8, 7, 9, 7, 10, 7, 11, 7, 12, 7, 13, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8, 8, 8, 9, 8, 10, 8, 11, 8, 12, 9, 4, 9, 5, 9, 6, 9, 7, 9, 8, 9, 9, 9, 10, 9, 11, 10, 5, 10, 6, 10, 7, 10, 8, 10, 9, 10, 10, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 12, 5, 12, 6, 12, 7, 12, 8, 12, 9, 12, 10, 13, 6, 13, 7, 13, 8, 13, 9, 14, 6, 14, 7, 14, 8, 14, 9, 15, 7, 15, 8 )
emission_colors = PoolColorArray( 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 )
direction = Vector2( 1, -1 )
spread = 100.0
initial_velocity = 90.0
scale_amount = 1.5
scale_amount_random = 0.2
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 8 )
volume_db = -20.0
[node name="MobileControls" type="CanvasLayer" parent="."]
[node name="MobileButtons" parent="MobileControls" instance=ExtResource( 1 )]
[node name="MobileJoystick" parent="MobileControls" groups=["mobile"] instance=ExtResource( 9 )]
[node name="damage" type="Area2D" parent="." groups=["Player", "player"]]
[node name="Collision2" type="CollisionPolygon2D" parent="damage"]
visible = false
polygon = PoolVector2Array( -7, -4, -4, -4, -4, -6, -1, -6, 2, -2, 5, -2, 7, -1, 7, 1, 5, 2, 2, 2, -1, 6, -4, 6, -4, 4, -7, 4 )
[node name="target_getter" type="Area2D" parent="." groups=["Player"]]
z_index = 2
z_as_relative = false
collision_layer = 32
collision_mask = 32
script = ExtResource( 7 )
[node name="Collision" type="CollisionShape2D" parent="target_getter"]
visible = false
shape = SubResource( 39 )
[node name="Muzzles" type="Node2D" parent="."]
visible = false
[node name="LaserMuzzle" type="Node2D" parent="Muzzles"]
[node name="Position2D" type="Position2D" parent="Muzzles/LaserMuzzle"]
position = Vector2( 5, 0 )
[node name="RocketMuzzle" type="Node2D" parent="Muzzles"]
[node name="Position2D" type="Position2D" parent="Muzzles/RocketMuzzle"]
position = Vector2( -2, -5 )
[node name="Position2D2" type="Position2D" parent="Muzzles/RocketMuzzle"]
position = Vector2( -2, 5 )
[node name="SplitMuzzle" type="Node2D" parent="Muzzles"]
[node name="Position2D" type="Position2D" parent="Muzzles/SplitMuzzle"]
position = Vector2( -2, -5 )
[node name="Position2D2" type="Position2D" parent="Muzzles/SplitMuzzle"]
position = Vector2( -2, 5 )
[node name="Position2D3" type="Position2D" parent="Muzzles/SplitMuzzle"]
position = Vector2( 5, 0 )
[node name="FlakMuzzle" type="Node2D" parent="Muzzles"]
[node name="Position2D" type="Position2D" parent="Muzzles/FlakMuzzle"]
position = Vector2( 5, 0 )
[connection signal="finished" from="AudioStreamPlayer" to="." method="_on_AudioStreamPlayer_finished"]
[connection signal="area_entered" from="damage" to="." method="_on_Ship_area_entered"]
[connection signal="body_entered" from="damage" to="." method="_on_Ship_body_entered"]
[connection signal="target" from="target_getter" to="." method="_on_target_getter_target"]