[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"]