add files
221 files changed, 11396 insertions, 85 deletions
diff --git a/.github/banner.png b/.github/banner.png Binary files differnew file mode 100644 index 0000000..30126cb --- /dev/null +++ b/.github/banner.png diff --git a/PowerUp.gd b/PowerUp.gd new file mode 100644 index 0000000..bad37d7 --- /dev/null +++ b/PowerUp.gd @@ -0,0 +1,30 @@ +extends Area2D + + +func _on_PowerUp_area_entered(area): + if area.is_in_group("Player"): + playerstats.power = true + get_tree().current_scene.score += 100 + $AnimationPlayer.play("death") + $confetti.emitting = true + + +const ExplosionEffect = preload("res://effects/ExplosionEffect.tscn") +const HitEffect = preload("res://effects/HitEffect.tscn") + + +func create_hit_effect(): + Game.instance_scene_on_main(HitEffect, global_position) + + +func create_explosion(): + Game.instance_scene_on_main(ExplosionEffect, global_position) + + +func _ready(): + $confetti.emitting = false + $Sprite.visible = true + + +func _on_Timer_timeout(): + $AnimationPlayer.play("death") diff --git a/PowerUp.tscn b/PowerUp.tscn new file mode 100644 index 0000000..0908b85 --- /dev/null +++ b/PowerUp.tscn @@ -0,0 +1,100 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://PowerUp.gd" type="Script" id=1] +[ext_resource path="res://sprites/star.png" type="Texture" id=2] +[ext_resource path="res://sprites/glow.png" type="Texture" id=3] + +[sub_resource type="CanvasItemMaterial" id=3] +blend_mode = 1 + +[sub_resource type="CircleShape2D" id=1] +radius = 13.0384 + +[sub_resource type="Animation" id=2] +resource_name = "death" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:visible") +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": [ false ] +} +tracks/1/type = "method" +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"values": [ { +"args": [ ], +"method": "create_explosion" +}, { +"args": [ ], +"method": "queue_free" +} ] +} + +[node name="PowerUp" type="Area2D" groups=["Player"]] +collision_layer = 0 +script = ExtResource( 1 ) + +[node name="Sprite2" type="Sprite" parent="."] +self_modulate = Color( 1, 0.890196, 0, 1 ) +material = SubResource( 3 ) +texture = ExtResource( 3 ) + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( -1, 0 ) +texture = ExtResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +visible = false +shape = SubResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +playback_speed = 0.5 +anims/death = SubResource( 2 ) + +[node name="confetti" type="CPUParticles2D" parent="."] +show_behind_parent = true +emitting = false +amount = 80 +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 20.0 +linear_accel = 20.0 +scale_amount = 3.0 +scale_amount_random = 1.0 +color = Color( 0.968627, 0, 1, 1 ) +hue_variation = 1.0 +hue_variation_random = 1.0 + +[node name="Timer" type="Timer" parent="."] +wait_time = 10.0 + +[node name="CPUParticles2D" type="CPUParticles2D" parent="."] +show_behind_parent = true +amount = 20 +local_coords = false +direction = Vector2( 0, 0 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 20.0 +scale_amount = 2.0 +scale_amount_random = 0.2 +color = Color( 0.694118, 0.466667, 0.113725, 1 ) +hue_variation = 0.2 +hue_variation_random = 1.0 + +[connection signal="area_entered" from="." to="." method="_on_PowerUp_area_entered"] +[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] @@ -1,51 +1,6 @@ -# godot-template +# spaceshooty + +[](https://bendn.itch.io/spaceshooty "Itch.io page") [](https://godotengine.org "Made with godot") <a href='https://ko-fi.com/bendn' title='Buy me a coffee' target='_blank'><img height='28' src='https://storage.ko-fi.com/cdn/brandasset/kofi_button_red.png' alt='Buy me a coffee'> </a> - -Godot template repository for my programs - ---- - -## How to use - -> **Note** This template uses the [gpm](https://github.com/you-win/godot-package-manager). - -- Click use this template button -- Clone your new repository -- Run install_addons.sh -- Add your files & change `FUNDING.yml` -- Commit & push - -<details> -<summary>For itch.io depoloyment</summary> -<br> - -Add a secret called `BUTLER_CREDENTIALS` with your [butler api key](https://itch.io/user/settings/api-keys). - -</details> - -<details> -<summary>For android builds</summary> -<br> - -> **Note** -> -> The keystore user/alias is found automatically. - -Add two secrets: - -- `ANDROID_KEYSTORE_BASE64` -- `ANDROID_KEYSTORE_PASSWORD` - -</details> - ---- - -### CI Availability - -| windows | ios | linux | android | mac | html | | -| :----------------: | :-: | :----------------: | :----------------: | :----------------: | :----------------: | :-----------: | -| :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | github pages | -| :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | itch.io | -| :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | godot exports | diff --git a/bullets/scenes/EnemyLaser.tscn b/bullets/scenes/EnemyLaser.tscn new file mode 100644 index 0000000..174b1b7 --- /dev/null +++ b/bullets/scenes/EnemyLaser.tscn @@ -0,0 +1,149 @@ +[gd_scene load_steps=25 format=2] + +[ext_resource path="res://sprites/enemylaser-sheet.png" type="Texture" id=1] +[ext_resource path="res://sounds/Laser.wav" type="AudioStream" id=2] +[ext_resource path="res://bullets/scripts/EnemyLaser.gd" type="Script" id=3] +[ext_resource path="res://sprites/blackandwhitefball-Sheet.png" type="Texture" id=4] + +[sub_resource type="AtlasTexture" id=29] +flags = 2 +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 19, 11 ) + +[sub_resource type="AtlasTexture" id=30] +flags = 2 +atlas = ExtResource( 4 ) +region = Rect2( 19, 0, 19, 11 ) + +[sub_resource type="AtlasTexture" id=31] +flags = 2 +atlas = ExtResource( 4 ) +region = Rect2( 38, 0, 19, 11 ) + +[sub_resource type="AtlasTexture" id=32] +flags = 2 +atlas = ExtResource( 4 ) +region = Rect2( 57, 0, 19, 11 ) + +[sub_resource type="AtlasTexture" id=16] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=17] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=18] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 32, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=19] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 48, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=20] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 64, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=21] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 80, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=22] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 96, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=23] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 112, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=24] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 128, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=25] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 144, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=26] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 160, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=27] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 176, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=28] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 192, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=14] +resource_local_to_scene = true +animations = [ { +"frames": [ SubResource( 29 ), SubResource( 30 ), SubResource( 31 ), SubResource( 32 ) ], +"loop": true, +"name": "New Anim 1", +"speed": 15.0 +}, { +"frames": [ SubResource( 16 ), SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ) ], +"loop": true, +"name": "New Anim", +"speed": 25.0 +} ] + +[sub_resource type="RectangleShape2D" id=15] +resource_local_to_scene = true +extents = Vector2( 4, 6 ) + +[sub_resource type="OccluderPolygon2D" id=33] +polygon = PoolVector2Array( -6, -3, -6, 2, -3, 4, 4, 4, 4, -5, -4, -5 ) + +[node name="EnemyLaser" type="RigidBody2D" groups=["ebullet"]] +z_index = 1 +collision_layer = 192 +mass = 20.0 +gravity_scale = 0.0 +linear_damp = 0.0 +angular_damp = 0.0 +script = ExtResource( 3 ) +__meta__ = { +"_edit_group_": true +} + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +frames = SubResource( 14 ) +animation = "New Anim" +frame = 3 +playing = true +flip_h = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 0, -1.19209e-07 ) +shape = SubResource( 15 ) + +[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] +position = Vector2( 2.08616e-07, -2.38419e-07 ) +scale = Vector2( 0.4, 0.4 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 2 ) +volume_db = -30.0 +autoplay = true + +[node name="LightOccluder2D" type="LightOccluder2D" parent="."] +occluder = SubResource( 33 ) + +[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] diff --git a/bullets/scenes/EnemyLaserBig.tscn b/bullets/scenes/EnemyLaserBig.tscn new file mode 100644 index 0000000..9101838 --- /dev/null +++ b/bullets/scenes/EnemyLaserBig.tscn @@ -0,0 +1,175 @@ +[gd_scene load_steps=32 format=2] + +[ext_resource path="res://bullets/scenes/EnemyLaser.tscn" type="PackedScene" id=1] +[ext_resource path="res://sprites/bigenemylasers.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=2] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 64, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=3] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 128, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=4] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 192, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=5] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 256, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=6] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 320, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=7] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 384, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=8] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 448, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=9] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 512, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=10] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 576, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=11] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 640, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=12] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 704, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=13] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 768, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=16] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=17] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 64, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=18] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 128, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=19] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 192, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=20] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 256, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=21] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 320, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=22] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 384, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=23] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 448, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=24] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 512, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=25] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 576, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=26] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 640, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=27] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 704, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=28] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 768, 0, 64, 64 ) + +[sub_resource type="SpriteFrames" id=14] +resource_local_to_scene = true +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ) ], +"loop": true, +"name": "default", +"speed": 25.0 +}, { +"frames": [ SubResource( 16 ), SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ) ], +"loop": true, +"name": "New Anim", +"speed": 25.0 +} ] + +[sub_resource type="RectangleShape2D" id=15] +resource_local_to_scene = true +extents = Vector2( 16, 16 ) + +[sub_resource type="AudioStreamSample" id=29] +resource_local_to_scene = true +data = PoolByteArray( 0, 0, 203, 21, 206, 21, 202, 21, 206, 21, 201, 21, 204, 21, 204, 21, 202, 21, 204, 21, 201, 21, 202, 21, 203, 21, 201, 21, 202, 21, 201, 21, 201, 21, 236, 20, 237, 20, 184, 19, 188, 19, 115, 18, 121, 18, 29, 17, 33, 17, 174, 15, 174, 15, 20, 14, 20, 14, 74, 12, 75, 12, 47, 10, 45, 10, 107, 7, 102, 7, 35, 1, 33, 1, 181, 248, 183, 248, 16, 246, 21, 246, 33, 244, 37, 244, 141, 242, 143, 242, 50, 241, 50, 241, 3, 240, 1, 240, 243, 238, 240, 238, 244, 237, 237, 237, 20, 237, 10, 237, 66, 236, 59, 236, 124, 235, 122, 235, 196, 234, 195, 234, 67, 234, 64, 234, 66, 234, 66, 234, 66, 234, 66, 234, 67, 234, 66, 234, 69, 234, 66, 234, 67, 234, 69, 234, 66, 234, 71, 234, 65, 234, 71, 234, 68, 234, 68, 234, 71, 234, 67, 234, 72, 234, 68, 234, 72, 234, 68, 234, 73, 234, 69, 234, 73, 234, 68, 234, 188, 21, 182, 21, 187, 21, 182, 21, 185, 21, 183, 21, 184, 21, 183, 21, 183, 21, 183, 21, 182, 21, 183, 21, 182, 21, 181, 21, 184, 21, 178, 21, 184, 21, 180, 21, 181, 21, 181, 21, 53, 21, 53, 21, 24, 20, 22, 20, 236, 18, 233, 18, 177, 17, 174, 17, 96, 16, 95, 16, 244, 14, 246, 14, 101, 13, 103, 13, 161, 11, 162, 11, 122, 9, 122, 9, 159, 6, 159, 6, 3, 253, 7, 253, 125, 248, 131, 248, 17, 246, 24, 246, 67, 244, 66, 244, 202, 242, 193, 242, 128, 241, 123, 241, 90, 240, 92, 240, 85, 239, 86, 239, 106, 238, 102, 238, 147, 237, 140, 237, 199, 236, 194, 236, 12, 236, 5, 236, 97, 235, 84, 235, 187, 234, 181, 234, 86, 234, 88, 234, 86, 234, 87, 234, 89, 234, 87, 234, 88, 234, 88, 234, 89, 234, 88, 234, 89, 234, 88, 234, 92, 234, 85, 234, 95, 234, 85, 234, 93, 234, 90, 234, 90, 234, 90, 234, 94, 234, 87, 234, 95, 234, 90, 234, 91, 234, 94, 234, 162, 21, 165, 21, 162, 21, 165, 21, 161, 21, 164, 21, 162, 21, 163, 21, 161, 21, 164, 21, 159, 21, 163, 21, 161, 21, 160, 21, 163, 21, 159, 21, 160, 21, 162, 21, 157, 21, 162, 21, 159, 21, 159, 21, 127, 21, 125, 21, 117, 20, 114, 20, 95, 19, 94, 19, 57, 18, 63, 18, 12, 17, 15, 17, 202, 15, 199, 15, 108, 14, 104, 14, 233, 12, 229, 12, 51, 11, 47, 11, 37, 9, 35, 9, 94, 6, 96, 6, 25, 253, 28, 253, 189, 248, 193, 248, 104, 246, 107, 246, 169, 244, 167, 244, 57, 243, 53, 243, 4, 242, 3, 242, 233, 240, 234, 240, 238, 239, 235, 239, 11, 239, 4, 239, 56, 238, 51, 238, 114, 237, 115, 237, 189, 236, 192, 236, 20, 236, 21, 236, 117, 235, 119, 235, 231, 234, 233, 234, 109, 234, 107, 234, 112, 234, 107, 234, 112, 234, 109, 234, 112, 234, 107, 234, 114, 234, 109, 234, 112, 234, 113, 234, 108, 234, 115, 234, 111, 234, 112, 234, 114, 234, 110, 234, 115, 234, 112, 234, 114, 234, 114, 234, 113, 234, 114, 234, 115, 234, 113, 234, 117, 234, 112, 234, 144, 21, 139, 21, 142, 21, 140, 21, 139, 21, 142, 21, 138, 21, 141, 21, 138, 21, 141, 21, 136, 21, 142, 21, 136, 21, 139, 21, 139, 21, 136, 21, 139, 21, 136, 21, 138, 21, 137, 21, 137, 21, 136, 21, 135, 21, 138, 21, 21, 21, 26, 21, 24, 20, 29, 20, 23, 19, 24, 19, 7, 18, 4, 18, 234, 16, 229, 16, 186, 15, 182, 15, 114, 14, 113, 14, 20, 13, 20, 13, 134, 11, 135, 11, 185, 9, 187, 9, 116, 7, 116, 7, 229, 3, 230, 3, 119, 250, 122, 250, 187, 247, 189, 247, 213, 245, 215, 245, 93, 244, 95, 244, 20, 243, 22, 243, 249, 241, 249, 241, 250, 240, 250, 240, 26, 240, 29, 240, 70, 239, 71, 239, 135, 238, 133, 238, 217, 237, 219, 237, 43, 237, 52, 237, 142, 236, 151, 236, 251, 235, 1, 236, 117, 235, 124, 235, 242, 234, 245, 234, 133, 234, 132, 234, 136, 234, 131, 234, 138, 234, 130, 234, 139, 234, 131, 234, 137, 234, 135, 234, 134, 234, 137, 234, 136, 234, 135, 234, 138, 234, 134, 234, 139, 234, 136, 234, 138, 234, 136, 234, 140, 234, 135, 234, 141, 234, 136, 234, 140, 234, 138, 234, 139, 234, 140, 234, 138, 234, 141, 234, 116, 21, 116, 21, 117, 21, 114, 21, 116, 21, 115, 21, 116, 21, 113, 21, 117, 21, 112, 21, 115, 21, 114, 21, 112, 21, 116, 21, 112, 21, 113, 21, 113, 21, 112, 21, 113, 21, 112, 21, 111, 21, 113, 21, 110, 21, 113, 21, 109, 21, 112, 21, 33, 21, 35, 21, 55, 20, 58, 20, 69, 19, 73, 19, 79, 18, 79, 18, 77, 17, 77, 17, 60, 16, 63, 16, 27, 15, 29, 15, 236, 13, 238, 13, 151, 12, 158, 12, 32, 11, 40, 11, 117, 9, 123, 9, 91, 7, 95, 7, 51, 4, 51, 4, 19, 251, 18, 251, 92, 248, 87, 248, 128, 246, 120, 246, 14, 245, 10, 245, 202, 243, 204, 243, 191, 242, 189, 242, 203, 241, 194, 241, 244, 240, 238, 240, 35, 240, 37, 240, 107, 239, 114, 239, 189, 238, 192, 238, 37, 238, 34, 238, 141, 237, 137, 237, 3, 237, 4, 237, 122, 236, 126, 236, 0, 236, 4, 236, 136, 235, 138, 235, 27, 235, 29, 235, 174, 234, 176, 234, 159, 234, 161, 234, 161, 234, 162, 234, 158, 234, 166, 234, 156, 234, 167, 234, 159, 234, 163, 234, 164, 234, 161, 234, 163, 234, 165, 234, 161, 234, 165, 234, 165, 234, 161, 234, 168, 234, 161, 234, 167, 234, 163, 234, 168, 234, 162, 234, 169, 234, 163, 234, 168, 234, 165, 234, 168, 234, 165, 234, 147, 10, 143, 10, 89, 21, 89, 21, 87, 21, 90, 21, 86, 21, 89, 21, 87, 21, 86, 21, 90, 21, 82, 21, 91, 21, 84, 21, 86, 21, 88, 21, 83, 21, 87, 21, 84, 21, 85, 21, 85, 21, 86, 21, 83, 21, 84, 21, 84, 21, 83, 21, 84, 21, 84, 21, 81, 21, 85, 21, 1, 21, 6, 21, 44, 20, 48, 20, 84, 19, 84, 19, 117, 18, 114, 18, 139, 17, 133, 17, 154, 16, 147, 16, 157, 15, 153, 15, 139, 14, 141, 14, 106, 13, 112, 13, 58, 12, 58, 12, 230, 10, 230, 10, 87, 9, 90, 9, 126, 7, 129, 7, 228, 4, 234, 4, 100, 252, 105, 252, 62, 249, 66, 249, 96, 247, 104, 247, 239, 245, 248, 245, 191, 244, 195, 244, 176, 243, 175, 243, 199, 242, 197, 242, 246, 241, 242, 241, 55, 241, 51, 241, 133, 240, 133, 240, 217, 239, 220, 239, 66, 239, 67, 239, 182, 238, 181, 238, 50, 238, 50, 238, 179, 237, 182, 237, 56, 237, 55, 237, 201, 236, 201, 236, 94, 236, 98, 236, 250, 235, 252, 235, 156, 235, 157, 235, 65, 235, 69, 235, 227, 234, 232, 234, 190, 234, 190, 234, 191, 234, 192, 234, 188, 234, 196, 234, 187, 234, 195, 234, 190, 234, 193, 234, 193, 234, 192, 234, 194, 234, 191, 234, 196, 234, 192, 234, 194, 234, 195, 234, 193, 234, 196, 234, 195, 234, 194, 234, 196, 234, 195, 234, 195, 234, 198, 234, 194, 234, 198, 234, 196, 234, 197, 234, 196, 234, 200, 234, 194, 234, 201, 234, 26, 235, 27, 235, 59, 21, 57, 21, 57, 21, 58, 21, 56, 21, 57, 21, 56, 21, 57, 21, 55, 21, 57, 21, 54, 21, 57, 21, 54, 21, 56, 21, 53, 21, 56, 21, 53, 21, 55, 21, 54, 21, 52, 21, 55, 21, 51, 21, 55, 21, 51, 21, 54, 21, 51, 21, 52, 21, 52, 21, 51, 21, 51, 21, 51, 21, 52, 21, 221, 20, 225, 20, 27, 20, 32, 20, 89, 19, 89, 19, 137, 18, 138, 18, 184, 17, 189, 17, 224, 16, 232, 16, 3, 16, 8, 16, 30, 15, 31, 15, 48, 14, 48, 14, 49, 13, 47, 13, 29, 12, 28, 12, 240, 10, 240, 10, 159, 9, 160, 9, 23, 8, 24, 8, 39, 6, 37, 6, 236, 2, 230, 2, 60, 251, 54, 251, 253, 248, 249, 248, 105, 247, 104, 247, 39, 246, 39, 246, 24, 245, 22, 245, 43, 244, 41, 244, 94, 243, 93, 243, 159, 242, 159, 242, 239, 241, 239, 241, 78, 241, 77, 241, 184, 240, 184, 240, 51, 240, 48, 240, 180, 239, 172, 239, 56, 239, 52, 239, 193, 238, 194, 238, 89, 238, 90, 238, 243, 237, 242, 237, 145, 237, 143, 237, 52, 237, 49, 237, 225, 236, 221, 236, 141, 236, 137, 236, 60, 236, 56, 236, 238, 235, 235, 235, 169, 235, 170, 235, 96, 235, 99, 235, 28, 235, 31, 235, 226, 234, 225, 234, 226, 234, 226, 234, 225, 234, 228, 234, 225, 234, 226, 234, 229, 234, 224, 234, 231, 234, 223, 234, 233, 234, 223, 234, 232, 234, 225, 234, 231, 234, 228, 234, 229, 234, 230, 234, 228, 234, 232, 234, 229, 234, 230, 234, 232, 234, 228, 234, 234, 234, 229, 234, 232, 234, 232, 234, 231, 234, 234, 234, 230, 234, 234, 234, 232, 234, 234, 234, 233, 234, 234, 234, 232, 234, 236, 234, 21, 236, 23, 236, 22, 21, 21, 21, 21, 21, 21, 21, 22, 21, 19, 21, 21, 21, 19, 21, 21, 21, 19, 21, 19, 21, 19, 21, 20, 21, 17, 21, 20, 21, 16, 21, 20, 21, 16, 21, 19, 21, 16, 21, 17, 21, 18, 21, 14, 21, 19, 21, 14, 21, 18, 21, 13, 21, 18, 21, 12, 21, 19, 21, 11, 21, 17, 21, 13, 21, 14, 21, 15, 21, 12, 21, 5, 21, 2, 21, 91, 20, 92, 20, 175, 19, 177, 19, 0, 19, 0, 19, 82, 18, 78, 18, 157, 17, 153, 17, 226, 16, 222, 16, 35, 16, 33, 16, 96, 15, 90, 15, 148, 14, 138, 14, 191, 13, 186, 13, 221, 12, 219, 12, 238, 11, 234, 11, 239, 10, 238, 10, 217, 9, 215, 9, 156, 8, 151, 8, 46, 7, 43, 7, 82, 5, 82, 5, 221, 1, 221, 1, 49, 251, 48, 251, 79, 249, 79, 249, 241, 247, 241, 247, 217, 246, 213, 246, 227, 245, 221, 245, 16, 245, 14, 245, 80, 244, 85, 244, 164, 243, 171, 243, 11, 243, 12, 243, 121, 242, 118, 242, 244, 241, 241, 241, 121, 241, 118, 241, 2, 241, 4, 241, 146, 240, 154, 240, 44, 240, 50, 240, 200, 239, 202, 239, 110, 239, 110, 239, 23, 239, 25, 239, 195, 238, 199, 238, 118, 238, 119, 238, 43, 238, 45, 238, 227, 237, 231, 237, 159, 237, 162, 237, 95, 237, 98, 237, 33, 237, 34, 237, 233, 236, 229, 236, 176, 236, 174, 236, 118, 236, 124, 236, 64, 236, 72, 236, 15, 236, 20, 236, 226, 235, 225, 235, 182, 235, 179, 235, 139, 235, 134, 235, 96, 235, 92, 235, 55, 235, 54, 235, 14, 235, 15, 235, 14, 235, 10, 235, 16, 235, 9, 235, 17, 235, 11, 235, 16, 235, 12, 235, 16, 235, 13, 235, 16, 235, 14, 235, 15, 235, 17, 235, 13, 235, 19, 235, 13, 235, 20, 235, 13, 235, 20, 235, 14, 235, 20, 235, 16, 235, 19, 235, 17, 235, 18, 235, 19, 235, 18, 235, 20, 235, 18, 235, 20, 235, 20, 235, 19, 235, 21, 235, 19, 235, 22, 235, 19, 235, 23, 235, 19, 235, 23, 235, 21, 235, 21, 235, 24, 235, 21, 235, 28, 235, 29, 235, 231, 20, 236, 20, 230, 20, 235, 20, 230, 20, 234, 20, 231, 20, 231, 20, 233, 20, 228, 20, 235, 20, 227, 20, 233, 20, 229, 20, 230, 20, 230, 20, 229, 20, 230, 20, 229, 20, 229, 20, 227, 20, 230, 20, 226, 20, 231, 20, 225, 20, 229, 20, 226, 20, 228, 20, 226, 20, 226, 20, 228, 20, 223, 20, 230, 20, 222, 20, 226, 20, 226, 20, 223, 20, 227, 20, 222, 20, 225, 20, 223, 20, 225, 20, 222, 20, 224, 20, 173, 20, 173, 20, 29, 20, 29, 20, 138, 19, 139, 19, 246, 18, 248, 18, 96, 18, 96, 18, 204, 17, 198, 17, 51, 17, 45, 17, 147, 16, 149, 16, 242, 15, 245, 15, 80, 15, 78, 15, 170, 14, 169, 14, 249, 13, 252, 13, 73, 13, 72, 13, 147, 12, 142, 12, 207, 11, 203, 11, 0, 11, 4, 11, 36, 10, 43, 10, 56, 9, 53, 9, 55, 8, 49, 8, 13, 7, 10, 7, 152, 5, 151, 5, 143, 3, 142, 3, 17, 253, 16, 253, 214, 250, 217, 250, 101, 249, 109, 249, 82, 248, 88, 248, 111, 247, 112, 247, 170, 246, 171, 246, 249, 245, 253, 245, 84, 245, 88, 245, 200, 244, 196, 244, 71, 244, 64, 244, 201, 243, 203, 243, 84, 243, 92, 243, 235, 242, 239, 242, 138, 242, 139, 242, 45, 242, 46, 242, 207, 241, 211, 241, 124, 241, 127, 241, 47, 241, 46, 241, 230, 240, 227, 240, 159, 240, 157, 240, 90, 240, 92, 240, 23, 240, 30, 240, 217, 239, 224, 239, 162, 239, 161, 239, 109, 239, 104, 239, 56, 239, 52, 239, 2, 239, 3, 239, 210, 238, 209, 238, 169, 238, 165, 238, 124, 238, 121, 238, 80, 238, 79, 238, 38, 238, 39, 238, 252, 237, 2, 238, 213, 237, 219, 237, 179, 237, 181, 237, 145, 237, 145, 237, 117, 237, 115, 237, 85, 237, 82, 237, 54, 237, 52, 237, 24, 237, 22, 237, 254, 236, 254, 236, 228, 236, 226, 236, 201, 236, 200, 236, 176, 236, 176, 236, 154, 236, 154, 236, 132, 236, 132, 236, 109, 236, 110, 236, 90, 236, 92, 236, 71, 236, 71, 236, 51, 236, 51, 236, 35, 236, 36, 236, 19, 236, 16, 236, 1, 236, 255, 235, 244, 235, 243, 235, 227, 235, 228, 235, 213, 235, 217, 235, 199, 235, 202, 235, 190, 235, 189, 235, 177, 235, 177, 235, 167, 235, 168, 235, 155, 235, 155, 235, 147, 235, 147, 235, 135, 235, 136, 235, 128, 235, 129, 235, 118, 235, 118, 235, 113, 235, 112, 235, 103, 235, 103, 235, 97, 235, 100, 235, 91, 235, 95, 235, 82, 235, 88, 235, 79, 235, 84, 235, 76, 235, 78, 235, 78, 235, 76, 235, 80, 235, 76, 235, 80, 235, 77, 235, 80, 235, 77, 235, 81, 235, 79, 235, 80, 235, 80, 235, 79, 235, 81, 235, 81, 235, 81, 235, 81, 235, 81, 235, 81, 235, 83, 235, 81, 235, 83, 235, 82, 235, 82, 235, 174, 20, 172, 20, 175, 20, 169, 20, 176, 20, 168, 20, 176, 20, 168, 20, 175, 20, 168, 20, 173, 20, 169, 20, 171, 20, 171, 20, 169, 20, 170, 20, 170, 20, 168, 20, 171, 20, 167, 20, 170, 20, 167, 20, 169, 20, 168, 20, 166, 20, 170, 20, 164, 20, 170, 20, 164, 20, 168, 20, 165, 20, 167, 20, 165, 20, 166, 20, 164, 20, 167, 20, 163, 20, 165, 20, 164, 20, 165, 20, 163, 20, 165, 20, 161, 20, 165, 20, 163, 20, 161, 20, 165, 20, 159, 20, 165, 20, 160, 20, 163, 20, 160, 20, 160, 20, 163, 20, 158, 20, 163, 20, 159, 20, 159, 20, 64, 20, 62, 20, 200, 19, 204, 19, 81, 19, 86, 19, 220, 18, 224, 18, 101, 18, 106, 18, 238, 17, 244, 17, 117, 17, 124, 17, 253, 16, 0, 17, 135, 16, 133, 16, 12, 16, 11, 16, 142, 15, 144, 15, 17, 15, 16, 15, 147, 14, 144, 14, 18, 14, 17, 14, 139, 13, 141, 13, 5, 13, 6, 13, 124, 12, 121, 12, 240, 11, 237, 11, 93, 11, 94, 11, 195, 10, 195, 10, 41, 10, 36, 10, 134, 9, 128, 9, 211, 8, 206, 8, 25, 8, 16, 8, 79, 7, 67, 7, 104, 6, 98, 6, 90, 5, 86, 5, 250, 3, 244, 3, 135, 1, 129, 1, 141, 252, 141, 252, 33, 251, 35, 251, 28, 250, 32, 250, 73, 249, 80, 249, 151, 248, 157, 248, 253, 247, 255, 247, 116, 247, 116, 247, 246, 246, 246, 246, 132, 246, 130, 246, 26, 246, 25, 246, 183, 245, 185, 245, 91, 245, 92, 245, 7, 245, 7, 245, 183, 244, 182, 244, 108, 244, 107, 244, 36, 244, 38, 244, 223, 243, 227, 243, 163, 243, 167, 243, 102, 243, 107, 243, 45, 243, 48, 243, 249, 242, 245, 242, 203, 242, 195, 242, 153, 242, 148, 242, 103, 242, 101, 242, 61, 242, 58, 242, 19, 242, 14, 242, 233, 241, 230, 241, 195, 241, 195, 241, 156, 241, 155, 241, 126, 241, 119, 241, 93, 241, 84, 241, 56, 241, 56, 241, 23, 241, 29, 241, 250, 240, 255, 240, 224, 240, 223, 240, 199, 240, 198, 240, 171, 240, 172, 240, 147, 240, 147, 240, 125, 240, 120, 240, 103, 240, 100, 240, 81, 240, 81, 240, 58, 240, 59, 240, 38, 240, 42, 240, 21, 240, 23, 240, 3, 240, 6, 240, 243, 239, 246, 239, 226, 239, 225, 239, 214, 239, 209, 239, 200, 239, 195, 239, 185, 239, 183, 239, 171, 239, 171, 239, 158, 239, 159, 239, 146, 239, 148, 239, 135, 239, 137, 239, 125, 239, 126, 239, 115, 239, 116, 239, 105, 239, 107, 239, 98, 239, 95, 239, 90, 239, 88, 239, 80, 239, 82, 239, 72, 239, 74, 239, 65, 239, 68, 239, 56, 239, 62, 239, 54, 239, 57, 239, 48, 239, 52, 239, 42, 239, 45, 239, 40, 239, 36, 239, 41, 239, 34, 239, 34, 239, 32, 239, 28, 239, 29, 239, 27, 239, 28, 239, 22, 239, 27, 239, 19, 239, 27, 239, 18, 239, 21, 239, 19, 239, 16, 239, 20, 239, 15, 239, 23, 239, 15, 239, 20, 239, 15, 239, 18, 239, 19, 239, 15, 239, 18, 239, 17, 239, 20, 239, 18, 239, 22, 239, 18, 239, 20, 239, 21, 239, 23, 239, 21, 239, 28, 239, 20, 239, 26, 239, 26, 239, 27, 239, 29, 239, 31, 239, 31, 239, 35, 239, 36, 239, 36, 239, 40, 239, 40, 239, 41, 239, 42, 239, 42, 239, 48, 239, 45, 239, 51, 239, 52, 239, 51, 239, 60, 239, 54, 239, 63, 239, 60, 239, 69, 239, 68, 239, 74, 239, 73, 239, 80, 239, 75, 239, 86, 239, 81, 239, 88, 239, 89, 239, 92, 239, 92, 239, 104, 239, 96, 239, 111, 239, 103, 239, 113, 239, 111, 239, 117, 239, 117, 239, 126, 239, 125, 239, 130, 239, 132, 239, 138, 239, 141, 239, 144, 239, 145, 239, 152, 239, 148, 239, 164, 239, 155, 239, 170, 239, 161, 239, 178, 239, 172, 239, 185, 239, 182, 239, 190, 239, 189, 239, 198, 239, 199, 239, 207, 239, 207, 239, 214, 239, 212, 239, 224, 239, 223, 239, 231, 239, 231, 239, 241, 239, 241, 239, 247, 239, 248, 239, 255, 239, 1, 240, 9, 240, 11, 240, 17, 240, 22, 240, 26, 240, 29, 240, 37, 240, 38, 240, 45, 240, 50, 240, 53, 240, 59, 240, 63, 240, 67, 240, 73, 240, 78, 240, 82, 240, 86, 240, 94, 240, 91, 240, 110, 240, 102, 240, 119, 240, 113, 240, 126, 240, 124, 240, 134, 240, 135, 240, 147, 240, 145, 240, 158, 240, 153, 240, 167, 240, 165, 240, 178, 240, 176, 240, 189, 240, 184, 240, 203, 240, 197, 240, 209, 240, 208, 240, 220, 240, 221, 240, 231, 240, 228, 240, 244, 240, 240, 240, 255, 240, 0, 241, 5, 241, 9, 241, 17, 241, 21, 241, 31, 241, 33, 241, 39, 241, 41, 241, 54, 241, 49, 241, 69, 241, 60, 241, 79, 241, 76, 241, 88, 241, 90, 241, 98, 241, 102, 241, 111, 241, 113, 241, 124, 241, 124, 241, 135, 241, 137, 241, 146, 241, 149, 241, 159, 241, 158, 241, 172, 241, 168, 241, 186, 241, 178, 241, 201, 241, 194, 241, 211, 241, 206, 241, 223, 241, 217, 241, 236, 241, 233, 241, 245, 241, 248, 241, 255, 241, 2, 242, 14, 242, 16, 242, 26, 242, 26, 242, 41, 242, 40, 242, 51, 242, 52, 242, 65, 242, 66, 242, 80, 242, 78, 242, 91, 242, 89, 242, 62, 20, 59, 20, 60, 20, 59, 20, 60, 20, 58, 20, 60, 20, 57, 20, 58, 20, 60, 20, 55, 20, 61, 20, 54, 20, 59, 20, 56, 20, 56, 20, 58, 20, 54, 20, 57, 20, 55, 20, 54, 20, 58, 20, 52, 20, 57, 20, 52, 20, 56, 20, 52, 20, 55, 20, 53, 20, 53, 20, 52, 20, 54, 20, 51, 20, 54, 20, 51, 20, 51, 20, 52, 20, 51, 20, 51, 20, 51, 20, 49, 20, 53, 20, 46, 20, 55, 20, 44, 20, 54, 20, 46, 20, 50, 20, 49, 20, 46, 20, 51, 20, 46, 20, 48, 20, 48, 20, 46, 20, 48, 20, 46, 20, 45, 20, 47, 20, 46, 20, 45, 20, 46, 20, 45, 20, 44, 20, 46, 20, 44, 20, 44, 20, 45, 20, 42, 20, 44, 20, 43, 20, 43, 20, 44, 20, 41, 20, 43, 20, 41, 20, 43, 20, 40, 20, 42, 20, 40, 20, 41, 20, 42, 20, 39, 20, 40, 20, 40, 20, 39, 20, 40, 20, 40, 20, 234, 19, 239, 19, 154, 19, 159, 19, 73, 19, 77, 19, 253, 18, 251, 18, 174, 18, 172, 18, 94, 18, 94, 18, 16, 18, 13, 18, 195, 17, 193, 17, 115, 17, 115, 17, 38, 17, 35, 17, 218, 16, 213, 16, 140, 16, 138, 16, 61, 16, 62, 16, 239, 15, 241, 15, 164, 15, 165, 15, 86, 15, 88, 15, 10, 15, 11, 15, 191, 14, 190, 14, 114, 14, 115, 14, 38, 14, 37, 14, 218, 13, 218, 13, 140, 13, 143, 13, 63, 13, 65, 13, 245, 12, 245, 12, 167, 12, 169, 12, 90, 12, 91, 12, 15, 12, 12, 12, 194, 11, 192, 11, 115, 11, 115, 11, 37, 11, 34, 11, 216, 10, 210, 10, 136, 10, 133, 10, 53, 10, 55, 10, 225, 9, 231, 9, 144, 9, 147, 9, 63, 9, 65, 9, 232, 8, 239, 8, 144, 8, 152, 8, 58, 8, 61, 8, 227, 7, 227, 7, 134, 7, 134, 7, 40, 7, 39, 7, 196, 6, 197, 6, 92, 6, 96, 6, 237, 5, 243, 5, 122, 5, 129, 5, 0, 5, 2, 5, 123, 4, 122, 4, 226, 3, 225, 3, 38, 3, 36, 3, 45, 2, 43, 2, 230, 254, 229, 254, 117, 253, 116, 253, 175, 252, 172, 252, 22, 252, 18, 252, 150, 251, 149, 251, 39, 251, 43, 251, 202, 250, 205, 250, 117, 250, 118, 250, 41, 250, 39, 250, 229, 249, 225, 249, 164, 249, 160, 249, 102, 249, 104, 249, 45, 249, 51, 249, 249, 248, 0, 249, 198, 248, 206, 248, 153, 248, 161, 248, 111, 248, 116, 248, 74, 248, 74, 248, 36, 248, 36, 248, 255, 247, 0, 248, 222, 247, 221, 247, 188, 247, 190, 247, 159, 247, 158, 247, 132, 247, 127, 247, 103, 247, 102, 247, 75, 247, 76, 247, 52, 247, 48, 247, 30, 247, 25, 247, 6, 247, 6, 247, 237, 246, 241, 246, 217, 246, 221, 246, 198, 246, 200, 246, 182, 246, 182, 246, 163, 246, 165, 246, 146, 246, 149, 246, 131, 246, 132, 246, 115, 246, 118, 246, 100, 246, 103, 246, 89, 246, 85, 246, 80, 246, 72, 246, 67, 246, 61, 246, 52, 246, 50, 246, 44, 246, 37, 246, 35, 246, 24, 246, 26, 246, 17, 246, 15, 246, 9, 246, 6, 246, 254, 245, 254, 245, 248, 245, 245, 245, 243, 245, 235, 245, 237, 245, 229, 245, 230, 245, 223, 245, 222, 245, 218, 245, 217, 245, 213, 245, 212, 245, 209, 245, 207, 245, 202, 245, 204, 245, 197, 245, 201, 245, 195, 245, 194, 245, 193, 245, 192, 245, 188, 245, 191, 245, 185, 245, 187, 245, 184, 245, 183, 245, 183, 245, 181, 245, 181, 245, 182, 245, 177, 245, 182, 245, 175, 245, 182, 245, 173, 245, 181, 245, 173, 245, 179, 245, 174, 245, 177, 245, 177, 245, 176, 245, 177, 245, 176, 245, 177, 245, 179, 245, 178, 245, 176, 245, 182, 245, 176, 245, 185, 245, 178, 245, 184, 245, 181, 245, 183, 245, 185, 245, 186, 245, 184, 245, 191, 245, 184, 245, 194, 245, 188, 245, 193, 245, 193, 245, 195, 245, 199, 245, 197, 245, 200, 245, 201, 245, 202, 245, 206, 245, 207, 245, 207, 245, 210, 245, 211, 245, 216, 245, 215, 245, 219, 245, 220, 245, 222, 245, 226, 245, 223, 245, 232, 245, 226, 245, 237, 245, 232, 245, 239, 245, 240, 245, 242, 245, 247, 245, 248, 245, 250, 245, 254, 245, 255, 245, 3, 246, 5, 246, 9, 246, 10, 246, 14, 246, 17, 246, 19, 246, 20, 246, 28, 246, 26, 246, 32, 246, 34, 246, 37, 246, 40, 246, 47, 246, 43, 246, 52, 246, 52, 246, 56, 246, 62, 246, 60, 246, 67, 246, 69, 246, 74, 246, 78, 246, 77, 246, 87, 246, 81, 246, 95, 246, 91, 246, 100, 246, 101, 246, 104, 246, 108, 246, 113, 246, 114, 246, 122, 246, 120, 246, 131, 246, 127, 246, 138, 246, 136, 246, 146, 246, 146, 246, 150, 246, 156, 246, 159, 246, 161, 246, 170, 246, 167, 246, 180, 246, 174, 246, 188, 246, 183, 246, 196, 246, 195, 246, 199, 246, 204, 246, 209, 246, 211, 246, 219, 246, 219, 246, 226, 246, 229, 246, 237, 246, 237, 246, 247, 246, 246, 246, 254, 246, 255, 246, 7, 247, 10, 247, 16, 247, 17, 247, 26, 247, 26, 247, 37, 247, 36, 247, 44, 247, 43, 247, 56, 247, 50, 247, 67, 247, 61, 247, 75, 247, 74, 247, 83, 247, 83, 247, 95, 247, 90, 247, 106, 247, 101, 247, 114, 247, 111, 247, 124, 247, 122, 247, 134, 247, 130, 247, 143, 247, 141, 247, 154, 247, 151, 247, 166, 247, 159, 247, 176, 247, 171, 247, 184, 247, 183, 247, 194, 247, 194, 247, 206, 247, 202, 247, 219, 247, 212, 247, 228, 247, 224, 247, 236, 247, 237, 247, 247, 247, 248, 247, 2, 248, 2, 248, 14, 248, 13, 248, 23, 248, 25, 248, 34, 248, 36, 248, 46, 248, 47, 248, 57, 248, 57, 248, 70, 248, 69, 248, 79, 248, 80, 248, 90, 248, 92, 248, 103, 248, 102, 248, 115, 248, 114, 248, 126, 248, 127, 248, 135, 248, 140, 248, 147, 248, 153, 248, 159, 248, 163, 248, 172, 248, 175, 248, 184, 248, 185, 248, 196, 248, 199, 248, 207, 248, 212, 248, 220, 248, 221, 248, 235, 248, 233, 248, 246, 248, 245, 248, 3, 249, 3, 249, 15, 249, 15, 249, 28, 249, 28, 249, 39, 249, 40, 249, 52, 249, 53, 249, 66, 249, 64, 249, 80, 249, 75, 249, 96, 249, 86, 249, 109, 249, 102, 249, 120, 249, 116, 249, 132, 249, 127, 249, 146, 249, 144, 249, 156, 249, 161, 249, 167, 249, 176, 249, 182, 249, 187, 249, 197, 249, 200, 249, 211, 249, 213, 249, 224, 249, 226, 249, 239, 249, 241, 249, 253, 249, 252, 249, 13, 250, 11, 250, 26, 250, 27, 250, 40, 250, 41, 250, 57, 250, 51, 250, 74, 250, 65, 250, 89, 250, 84, 250, 99, 250, 100, 250, 114, 250, 117, 250, 129, 250, 133, 250, 144, 250, 148, 250, 161, 250, 163, 250, 176, 250, 178, 250, 192, 250, 192, 250, 209, 250, 205, 250, 227, 250, 223, 250, 243, 250, 241, 250, 0, 251, 1, 251, 16, 251, 18, 251, 34, 251, 33, 251, 54, 251, 51, 251, 70, 251, 70, 251, 85, 251, 86, 251, 104, 251, 104, 251, 123, 251, 123, 251, 140, 251, 143, 251, 158, 251, 161, 251, 177, 251, 179, 251, 196, 251, 197, 251, 216, 251, 219, 251, 234, 251, 236, 251, 1, 252, 255, 251, 23, 252, 20, 252, 43, 252, 41, 252, 65, 252, 61, 252, 86, 252, 82, 252, 110, 252, 108, 252, 129, 252, 130, 252, 153, 252, 154, 252, 179, 252, 176, 252, 206, 252, 201, 252, 230, 252, 227, 252, 2, 253, 0, 253, 30, 253, 25, 253, 60, 253, 56, 253, 86, 253, 82, 253, 121, 253, 112, 253, 157, 253, 153, 253, 188, 253, 191, 253, 224, 253, 225, 253, 14, 254, 12, 254, 56, 254, 55, 254, 107, 254, 110, 254, 166, 254, 173, 254, 254, 254, 4, 255, 128, 255, 131, 255, 196, 0, 195, 0, 44, 1, 40, 1, 113, 1, 113, 1, 167, 1, 169, 1, 214, 1, 214, 1, 0, 2, 254, 1, 40, 2, 40, 2, 72, 2, 71, 2, 108, 2, 103, 2, 139, 2, 135, 2, 164, 2, 166, 2, 188, 2, 192, 2, 219, 2, 216, 2, 247, 2, 240, 2, 13, 3, 6, 3, 34, 3, 30, 3, 54, 3, 53, 3, 76, 3, 76, 3, 96, 3, 94, 3, 116, 3, 115, 3, 134, 3, 138, 3, 149, 3, 157, 3, 167, 3, 172, 3, 187, 3, 187, 3, 204, 3, 208, 3, 215, 3, 225, 3, 231, 3, 240, 3, 250, 3, 251, 3, 14, 4, 9, 4, 29, 4, 25, 4, 42, 4, 42, 4, 53, 4, 55, 4, 68, 4, 69, 4, 81, 4, 82, 4, 96, 4, 96, 4, 110, 4, 105, 4, 125, 4, 118, 4, 137, 4, 132, 4, 147, 4, 148, 4, 156, 4, 161, 4, 167, 4, 174, 4, 179, 4, 183, 4, 192, 4, 194, 4, 203, 4, 206, 4, 212, 4, 219, 4, 222, 4, 231, 4, 233, 4, 239, 4, 245, 4, 249, 4, 1, 5, 0, 5, 13, 5, 10, 5, 22, 5, 24, 5, 28, 5, 33, 5, 41, 5, 41, 5, 50, 5, 52, 5, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 0, 0, 254, 255, 3, 0, 252, 255, 5, 0, 252, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 252, 255, 5, 0, 252, 255, 3, 0, 254, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 2, 0, 255, 255, 0, 0, 2, 0, 252, 255, 4, 0, 252, 255, 5, 0, 252, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 255, 255, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 0, 0, 1, 0, 254, 255, 1, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 1, 0, 254, 255, 1, 0, 255, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 255, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 254, 255, 4, 0, 251, 255, 4, 0, 254, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 252, 255, 5, 0, 252, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 5, 0, 251, 255, 4, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 254, 255, 4, 0, 251, 255, 4, 0, 254, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 252, 255, 4, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 2, 0, 252, 255, 5, 0, 252, 255, 3, 0, 254, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 1, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 254, 255, 4, 0, 251, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 251, 255, 4, 0, 253, 255, 1, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 255, 255, 255, 255, 2, 0, 253, 255, 4, 0, 253, 255, 2, 0, 254, 255, 1, 0, 1, 0, 255, 255, 1, 0, 255, 255, 255, 255, 3, 0, 253, 255, 2, 0, 255, 255, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 1, 0, 255, 255, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 4, 0, 251, 255, 4, 0, 253, 255, 2, 0, 255, 255, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 3, 0, 254, 255, 0, 0, 2, 0, 254, 255, 2, 0, 253, 255, 2, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 254, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 251, 255, 5, 0, 252, 255, 3, 0, 253, 255, 3, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 3, 0, 253, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 5, 0, 250, 255, 6, 0, 252, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 3, 0, 252, 255, 5, 0, 251, 255, 4, 0, 254, 255, 255, 255, 4, 0, 251, 255, 4, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 252, 255, 5, 0, 252, 255, 2, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 2, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 0, 0, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 252, 255, 4, 0, 254, 255, 0, 0, 2, 0, 252, 255, 4, 0, 253, 255, 3, 0, 253, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 252, 255, 5, 0, 251, 255, 4, 0, 253, 255, 1, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 4, 0, 254, 255, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 1, 0, 252, 255, 6, 0, 250, 255, 5, 0, 252, 255, 3, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 254, 255, 4, 0, 251, 255, 5, 0, 252, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 2, 0, 0, 0, 254, 255, 4, 0, 252, 255, 3, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 4, 0, 251, 255, 4, 0, 254, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 2, 0, 252, 255, 5, 0, 251, 255, 3, 0, 255, 255, 0, 0, 1, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 3, 0, 253, 255, 2, 0, 255, 255, 255, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 0, 0, 1, 0, 0, 0, 255, 255, 2, 0, 252, 255, 4, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 254, 255, 3, 0, 254, 255, 2, 0, 255, 255, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 1, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 255, 255, 3, 0, 252, 255, 3, 0, 255, 255, 254, 255, 4, 0, 252, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 251, 255, 6, 0, 251, 255, 2, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 251, 255, 5, 0, 251, 255, 4, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 5, 0, 251, 255, 3, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 0, 0, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 251, 255, 5, 0, 252, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 3, 0, 255, 255, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 253, 255, 4, 0, 251, 255, 5, 0, 252, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 255, 255, 1, 0, 255, 255, 255, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 251, 255, 5, 0, 250, 255, 6, 0, 251, 255, 4, 0, 254, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 253, 255, 1, 0, 0, 0, 255, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 254, 255, 4, 0, 252, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 1, 0, 253, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 1, 0, 0, 0, 0, 0, 1, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 1, 0, 253, 255, 3, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 0, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 2, 0, 255, 255, 0, 0, 1, 0, 253, 255, 5, 0, 251, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 251, 255, 4, 0, 253, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 2, 0, 252, 255, 4, 0, 254, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 255, 255, 3, 0, 252, 255, 3, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 4, 0, 252, 255, 2, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 4, 0, 250, 255, 6, 0, 251, 255, 4, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 3, 0, 255, 255, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 250, 255, 7, 0, 249, 255, 6, 0, 251, 255, 4, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 251, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 253, 255, 5, 0, 250, 255, 6, 0, 251, 255, 4, 0, 253, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 4, 0, 253, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 252, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 252, 255, 5, 0, 251, 255, 5, 0, 251, 255, 5, 0, 251, 255, 4, 0, 255, 255, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 1, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 5, 0, 250, 255, 4, 0, 254, 255, 0, 0, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 5, 0, 250, 255, 5, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 254, 255, 4, 0, 251, 255, 4, 0, 254, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 2, 0, 252, 255, 5, 0, 251, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 251, 255, 5, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 3, 0, 253, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 255, 255, 0, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 1, 0, 253, 255, 5, 0, 250, 255, 5, 0, 253, 255, 2, 0, 255, 255, 0, 0, 255, 255, 2, 0, 254, 255, 3, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 2, 0, 252, 255, 5, 0, 252, 255, 2, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 4, 0, 251, 255, 5, 0, 251, 255, 5, 0, 252, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 255, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 254, 255, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 1, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 255, 255, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 252, 255, 3, 0, 255, 255, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 3, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 253, 255, 4, 0, 252, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 253, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 252, 255, 5, 0, 252, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 250, 255, 5, 0, 254, 255, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 3, 0, 253, 255, 2, 0, 255, 255, 255, 255, 3, 0, 252, 255, 5, 0, 251, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 2, 0, 253, 255, 3, 0, 252, 255, 5, 0, 252, 255, 3, 0, 253, 255, 2, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 254, 255, 1, 0, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 252, 255, 5, 0, 251, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 255, 255, 255, 255, 3, 0, 251, 255, 5, 0, 252, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 2, 0, 0, 0, 0, 0, 255, 255, 1, 0, 254, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 2, 0, 253, 255, 3, 0, 252, 255, 5, 0, 252, 255, 3, 0, 254, 255, 0, 0, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 3, 0, 254, 255, 1, 0, 1, 0, 253, 255, 3, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 1, 0, 251, 255, 6, 0, 251, 255, 3, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 253, 255, 4, 0, 253, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 0, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 253, 255, 5, 0, 250, 255, 5, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 2, 0, 252, 255, 4, 0, 254, 255, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 252, 255, 6, 0, 250, 255, 5, 0, 252, 255, 2, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 4, 0, 252, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 255, 255, 0, 0, 2, 0, 252, 255, 6, 0, 250, 255, 4, 0, 254, 255, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 2, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 3, 0, 251, 255, 5, 0, 252, 255, 3, 0, 254, 255, 2, 0, 252, 255, 5, 0, 252, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 4, 0, 252, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 252, 255, 5, 0, 252, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 0, 0, 2, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 252, 255, 4, 0, 253, 255, 2, 0, 0, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 251, 255, 4, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 252, 255, 3, 0, 254, 255, 2, 0, 252, 255, 5, 0, 252, 255, 3, 0, 255, 255, 254, 255, 3, 0, 253, 255, 4, 0, 253, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 251, 255, 7, 0, 249, 255, 5, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 255, 255, 254, 255, 4, 0, 252, 255, 3, 0, 255, 255, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 255, 255, 3, 0, 253, 255, 1, 0, 1, 0, 253, 255, 3, 0, 255, 255, 255, 255, 3, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 2, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 0, 0, 254, 255, 2, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 1, 0, 1, 0, 254, 255, 3, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 253, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 2, 0, 253, 255, 3, 0, 252, 255, 4, 0, 253, 255, 3, 0, 253, 255, 1, 0, 0, 0, 1, 0, 254, 255, 2, 0, 253, 255, 3, 0, 255, 255, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 4, 0, 252, 255, 2, 0, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 3, 0, 251, 255, 5, 0, 252, 255, 3, 0, 254, 255, 0, 0, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 0, 0, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 0, 0, 1, 0, 254, 255, 4, 0, 251, 255, 5, 0, 251, 255, 3, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 253, 255, 5, 0, 251, 255, 5, 0, 250, 255, 6, 0, 252, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 4, 0, 251, 255, 5, 0, 251, 255, 5, 0, 253, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 6, 0, 249, 255, 7, 0, 251, 255, 3, 0, 255, 255, 254, 255, 4, 0, 252, 255, 4, 0, 253, 255, 0, 0, 2, 0, 253, 255, 3, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 255, 255, 3, 0, 252, 255, 5, 0, 251, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 0, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 254, 255, 255, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 4, 0, 252, 255, 2, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 255, 255, 3, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 255, 255, 1, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 2, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 255, 255, 0, 0, 1, 0, 252, 255, 6, 0, 250, 255, 6, 0, 251, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 254, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 2, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 252, 255, 6, 0, 249, 255, 7, 0, 251, 255, 2, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 254, 255, 3, 0, 254, 255, 0, 0, 3, 0, 250, 255, 6, 0, 252, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 0, 0, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 2, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 2, 0, 252, 255, 6, 0, 249, 255, 6, 0, 253, 255, 0, 0, 2, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 2, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 1, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 254, 255, 3, 0, 254, 255, 1, 0, 254, 255, 2, 0, 0, 0, 255, 255, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 0, 0, 255, 255, 1, 0, 254, 255, 2, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 3, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 252, 255, 5, 0, 252, 255, 2, 0, 255, 255, 0, 0, 2, 0, 253, 255, 2, 0, 254, 255, 2, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 1, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 3, 0, 253, 255, 1, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 253, 255, 1, 0, 1, 0, 253, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 2, 0, 252, 255, 5, 0, 250, 255, 5, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 2, 0, 1, 0, 253, 255, 4, 0, 251, 255, 4, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 3, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 253, 255, 1, 0, 1, 0, 253, 255, 3, 0, 254, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 2, 0, 0, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 253, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 252, 255, 5, 0, 252, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 255, 255, 0, 0, 1, 0, 253, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 252, 255, 2, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 255, 255, 255, 255, 3, 0, 252, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 0, 0, 1, 0, 255, 255, 2, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 251, 255, 6, 0, 251, 255, 4, 0, 252, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 4, 0, 252, 255, 2, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 2, 0, 252, 255, 4, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 2, 0, 252, 255, 5, 0, 251, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 1, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 255, 255, 3, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 4, 0, 251, 255, 4, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 3, 0, 254, 255, 1, 0, 1, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 2, 0, 0, 0, 255, 255, 2, 0, 253, 255, 2, 0, 0, 0, 0, 0, 1, 0, 253, 255, 3, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 251, 255, 4, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 2, 0, 0, 0, 254, 255, 4, 0, 251, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 2, 0, 253, 255, 3, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 2, 0, 0, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 3, 0, 252, 255, 3, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 255, 255, 1, 0, 1, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 3, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 3, 0, 252, 255, 3, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 251, 255, 4, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 4, 0, 251, 255, 5, 0, 252, 255, 3, 0, 253, 255, 3, 0, 253, 255, 4, 0, 252, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 252, 255, 4, 0, 254, 255, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 255, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 255, 255, 0, 0, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 252, 255, 6, 0, 250, 255, 4, 0, 254, 255, 0, 0, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 4, 0, 251, 255, 5, 0, 251, 255, 5, 0, 252, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 252, 255, 5, 0, 251, 255, 5, 0, 251, 255, 4, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 4, 0, 251, 255, 4, 0, 254, 255, 1, 0, 0, 0, 255, 255, 0, 0, 2, 0, 252, 255, 6, 0, 250, 255, 4, 0, 255, 255, 254, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 3, 0, 252, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 253, 255, 0, 0, 2, 0, 253, 255, 3, 0, 255, 255, 254, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 1, 0, 1, 0, 255, 255, 0, 0, 2, 0, 252, 255, 4, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 255, 255, 255, 255, 3, 0, 252, 255, 3, 0, 254, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 5, 0, 250, 255, 5, 0, 253, 255, 1, 0, 0, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 253, 255, 4, 0, 253, 255, 2, 0, 255, 255, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 253, 255, 4, 0, 251, 255, 4, 0, 254, 255, 1, 0, 0, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 0, 0, 1, 0, 254, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 255, 255, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 1, 0, 253, 255, 5, 0, 250, 255, 6, 0, 251, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 252, 255, 5, 0, 251, 255, 4, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 3, 0, 252, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 3, 0, 0, 0, 255, 255, 1, 0, 255, 255, 255, 255, 3, 0, 254, 255, 0, 0, 2, 0, 252, 255, 5, 0, 251, 255, 4, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 4, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 251, 255, 4, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 255, 255, 0, 0, 0, 0, 1, 0, 253, 255, 5, 0, 250, 255, 7, 0, 249, 255, 5, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 1, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 254, 255, 0, 0, 2, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 254, 255, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 255, 255, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 4, 0, 251, 255, 6, 0, 250, 255, 4, 0, 253, 255, 2, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 3, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 253, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 4, 0, 252, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 252, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 0, 0, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 4, 0, 254, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 1, 0, 255, 255, 0, 0, 1, 0, 0, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 252, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 254, 255, 4, 0, 251, 255, 5, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 255, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 4, 0, 251, 255, 5, 0, 251, 255, 5, 0, 252, 255, 2, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 254, 255, 0, 0, 2, 0, 252, 255, 5, 0, 252, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 0, 0, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 254, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 254, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 254, 255, 4, 0, 251, 255, 4, 0, 255, 255, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 2, 0, 253, 255, 3, 0, 255, 255, 255, 255, 2, 0, 254, 255, 0, 0, 2, 0, 254, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 1, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 3, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 253, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 0, 0, 2, 0, 253, 255, 3, 0, 253, 255, 2, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 3, 0, 252, 255, 5, 0, 252, 255, 1, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 0, 0, 2, 0, 252, 255, 4, 0, 254, 255, 255, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 255, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 2, 0, 0, 0, 0, 0, 255, 255, 1, 0, 254, 255, 4, 0, 253, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 2, 0, 255, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 1, 0, 254, 255, 1, 0, 255, 255, 0, 0, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 253, 255, 4, 0, 252, 255, 4, 0, 252, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 253, 255, 3, 0, 254, 255, 2, 0, 255, 255, 255, 255, 2, 0, 254, 255, 1, 0, 1, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 255, 255, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 253, 255, 1, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 1, 0, 255, 255, 1, 0, 254, 255, 2, 0, 255, 255, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 4, 0, 251, 255, 5, 0, 252, 255, 4, 0, 253, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 254, 255, 4, 0, 251, 255, 5, 0, 252, 255, 2, 0, 0, 0, 255, 255, 1, 0, 0, 0, 254, 255, 3, 0, 253, 255, 3, 0, 253, 255, 3, 0, 253, 255, 2, 0, 255, 255, 1, 0, 254, 255, 3, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 254, 255, 0, 0, 2, 0, 253, 255, 3, 0, 255, 255, 254, 255, 3, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 3, 0, 252, 255, 4, 0, 252, 255, 4, 0, 252, 255, 3, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 253, 255, 5, 0, 250, 255, 6, 0, 252, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 3, 0, 252, 255, 4, 0, 253, 255, 1, 0, 1, 0, 254, 255, 2, 0, 254, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 2, 0, 254, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 253, 255, 4, 0, 252, 255, 2, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 2, 0, 0, 0, 254, 255, 3, 0, 254, 255, 0, 0, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 0, 0, 255, 255, 1, 0, 255, 255, 2, 0, 253, 255, 4, 0, 252, 255, 2, 0, 0, 0, 255, 255, 2, 0, 254, 255, 1, 0, 255, 255, 1, 0, 255, 255, 1, 0 ) +format = 1 + +[node name="EnemyLaser" instance=ExtResource( 1 )] +z_index = 0 +mass = 400.0 + +[node name="AnimatedSprite" parent="." index="0"] +frames = SubResource( 14 ) +frame = 5 + +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource( 15 ) + +[node name="AudioStreamPlayer" parent="." index="3"] +stream = SubResource( 29 ) + +[node name="LightOccluder2D" parent="." index="4"] +position = Vector2( 0, 2 ) +scale = Vector2( 3, 3 ) diff --git a/bullets/scenes/Fireball.tscn b/bullets/scenes/Fireball.tscn new file mode 100644 index 0000000..e9c6c15 --- /dev/null +++ b/bullets/scenes/Fireball.tscn @@ -0,0 +1,123 @@ +[gd_scene load_steps=23 format=2] + +[ext_resource path="res://bullets/scenes/EnemyLaser.tscn" type="PackedScene" id=1] +[ext_resource path="res://sprites/enemylaser-sheet.png" type="Texture" id=2] +[ext_resource path="res://sprites/blackandwhitefball-Sheet.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=16] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=17] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=18] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 32, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=19] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 48, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=20] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 64, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=21] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 80, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=22] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 96, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=23] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 112, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=24] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 128, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=25] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 144, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=26] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 160, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=27] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 176, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=28] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 192, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=29] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 19, 11 ) + +[sub_resource type="AtlasTexture" id=30] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 19, 0, 19, 11 ) + +[sub_resource type="AtlasTexture" id=31] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 38, 0, 19, 11 ) + +[sub_resource type="AtlasTexture" id=32] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 57, 0, 19, 11 ) + +[sub_resource type="SpriteFrames" id=33] +resource_local_to_scene = true +animations = [ { +"frames": [ SubResource( 16 ), SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ) ], +"loop": true, +"name": "New Anim", +"speed": 25.0 +}, { +"frames": [ SubResource( 29 ), SubResource( 30 ), SubResource( 31 ), SubResource( 32 ) ], +"loop": true, +"name": "New Anim 1", +"speed": 15.0 +} ] + +[sub_resource type="RectangleShape2D" id=34] +resource_local_to_scene = true +extents = Vector2( 6.5, 5 ) + +[node name="Fireball" instance=ExtResource( 1 )] +mass = 1000.0 +linear_velocity = Vector2( -60, 0 ) + +[node name="AnimatedSprite" parent="." index="0"] +frames = SubResource( 33 ) +animation = "New Anim 1" + +[node name="CollisionShape2D" parent="." index="1"] +position = Vector2( -2.5, -1.19209e-07 ) +shape = SubResource( 34 ) + +[node name="LightOccluder2D" parent="." index="4"] +position = Vector2( -3, 0 ) diff --git a/bullets/scenes/Flak.tscn b/bullets/scenes/Flak.tscn new file mode 100644 index 0000000..303a003 --- /dev/null +++ b/bullets/scenes/Flak.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://bullets/scenes/Laser.tscn" type="PackedScene" id=1] +[ext_resource path="res://sprites/smallparticle.png" type="Texture" id=2] + +[sub_resource type="CanvasItemMaterial" id=17] + +[sub_resource type="SpriteFrames" id=18] +animations = [ { +"frames": [ ExtResource( 2 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="RectangleShape2D" id=16] +resource_local_to_scene = true +extents = Vector2( 1, 1 ) + +[node name="Flak" instance=ExtResource( 1 )] +mass = 30.0 +linear_velocity = Vector2( 15, 0 ) +spreadmaxneg = -40 +spreadmaxpos = 40 +scalingrand = true +maxscalingrand = 3 +initial_velocity = 50 +scale_glow = false + +[node name="Laser" parent="." index="0"] +self_modulate = Color( 1, 1, 1, 0.811765 ) +material = SubResource( 17 ) +frames = SubResource( 18 ) + +[node name="Collision" parent="." index="1"] +position = Vector2( 0, 0 ) +shape = SubResource( 16 ) + +[node name="VisibilityNotifier2D" parent="." index="2"] +visible = false + +[node name="Timer2" parent="." index="5"] +wait_time = 2.0 +one_shot = true +autostart = true + +[connection signal="timeout" from="Timer2" to="." method="queue_free"] diff --git a/bullets/scenes/Laser.tscn b/bullets/scenes/Laser.tscn new file mode 100644 index 0000000..4303288 --- /dev/null +++ b/bullets/scenes/Laser.tscn @@ -0,0 +1,147 @@ +[gd_scene load_steps=23 format=2] + +[ext_resource path="res://sounds/Laser.wav" type="AudioStream" id=2] +[ext_resource path="res://sprites/Laser-Sheet.png" type="Texture" id=3] +[ext_resource path="res://sprites/smallparticle.png" type="Texture" id=4] +[ext_resource path="res://sprites/PlayerMissle.png" type="Texture" id=5] +[ext_resource path="res://bullets/scripts/Laser.gd" type="Script" id=6] +[ext_resource path="res://sprites/spot.png" type="Texture" id=7] + +[sub_resource type="AtlasTexture" id=20] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=21] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=22] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 32, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=23] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 48, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=24] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 64, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=25] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 80, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=26] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 96, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=27] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 112, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=28] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 128, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=29] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 144, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=30] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 160, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=31] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 176, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=32] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 192, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=15] +resource_local_to_scene = true +animations = [ { +"frames": [ ExtResource( 5 ) ], +"loop": true, +"name": "New Anim", +"speed": 5.0 +}, { +"frames": [ ExtResource( 4 ) ], +"loop": true, +"name": "New Anim 1", +"speed": 5.0 +}, { +"frames": [ SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ), SubResource( 29 ), SubResource( 30 ), SubResource( 31 ), SubResource( 32 ) ], +"loop": true, +"name": "default", +"speed": 20.0 +} ] + +[sub_resource type="RectangleShape2D" id=1] +resource_local_to_scene = true +extents = Vector2( 4.5, 4 ) + +[sub_resource type="CanvasItemMaterial" id=33] +blend_mode = 1 + +[node name="Laser" type="RigidBody2D" groups=["pbullet"]] +visible = false +show_behind_parent = true +light_mask = 32769 +position = Vector2( 0, 1 ) +collision_layer = 32768 +collision_mask = 130 +mass = 5.0 +gravity_scale = 0.0 +linear_damp = 0.0 +angular_damp = 0.0 +script = ExtResource( 6 ) +spreadmaxneg = -3 +spreadmaxpos = 3 +initial_velocity = 400 +trail_rare = false +rarity_max = 2 + +[node name="Laser" type="AnimatedSprite" parent="."] +frames = SubResource( 15 ) + +[node name="Collision" type="CollisionShape2D" parent="."] +position = Vector2( 0.5, 0 ) +shape = SubResource( 1 ) + +[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] +position = Vector2( -1.19209e-07, 2.98023e-08 ) +scale = Vector2( 0.2, 0.2 ) + +[node name="LaserSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 2 ) +volume_db = -20.0 +autoplay = true + +[node name="Timer" type="Timer" parent="."] + +[node name="Timer2" type="Timer" parent="."] + +[node name="Light" type="Light2D" parent="."] +material = SubResource( 33 ) +scale = Vector2( 0.5, 0.5 ) +texture = ExtResource( 7 ) +color = Color( 0, 0.6, 1, 0.733333 ) +energy = 2.0 +shadow_enabled = true + +[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] diff --git a/bullets/scenes/SplitShot.tscn b/bullets/scenes/SplitShot.tscn new file mode 100644 index 0000000..d7648c6 --- /dev/null +++ b/bullets/scenes/SplitShot.tscn @@ -0,0 +1,101 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://bullets/scenes/Laser.tscn" type="PackedScene" id=1] +[ext_resource path="res://sprites/Laser-Sheet.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=17] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=18] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=19] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 32, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=20] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 48, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=21] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 64, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=22] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 80, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=23] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 96, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=24] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 112, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=25] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 128, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=26] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 144, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=27] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 160, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=28] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 176, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=29] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 192, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=15] +resource_local_to_scene = true +animations = [ { +"frames": [ SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ), SubResource( 29 ) ], +"loop": true, +"name": "New Anim", +"speed": 5.0 +} ] + +[sub_resource type="RectangleShape2D" id=16] +resource_local_to_scene = true +extents = Vector2( 4.5, 4 ) + +[node name="Split" instance=ExtResource( 1 )] +mass = 1.0 +linear_velocity = Vector2( 30, 0 ) +spreadmaxneg = -20 +spreadmaxpos = 20 +initial_velocity = 150 +rarity_max = 10 +modulate_amount = 0.1 +modulate_glow = true + +[node name="Laser" parent="." index="0"] +position = Vector2( -37, -4 ) +frames = SubResource( 15 ) +animation = "New Anim" +offset = Vector2( 37, 4 ) + +[node name="Collision" parent="." index="1"] +shape = SubResource( 16 ) diff --git a/bullets/scenes/missile.tscn b/bullets/scenes/missile.tscn new file mode 100644 index 0000000..6e4d581 --- /dev/null +++ b/bullets/scenes/missile.tscn @@ -0,0 +1,61 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://sounds/missile.wav" type="AudioStream" id=2] +[ext_resource path="res://effects/Trail.tscn" type="PackedScene" id=3] +[ext_resource path="res://sprites/PlayerMissle.png" type="Texture" id=4] +[ext_resource path="res://bullets/scripts/missile.gd" type="Script" id=5] +[ext_resource path="res://sprites/spot.png" type="Texture" id=6] + +[sub_resource type="CanvasItemMaterial" id=2] +blend_mode = 1 + +[node name="missile" type="RigidBody2D"] +collision_layer = 32768 +collision_mask = 130 +mass = 80.0 +gravity_scale = 0.0 +script = ExtResource( 5 ) +TERMINAL_VELOCITY = 200.0 +CONSTANT_THRUST = 100.0 +TURN_STRENGTH = 75.0 + +[node name="Trail" parent="." instance=ExtResource( 3 )] +position = Vector2( -5, 0 ) +THICKNESS = 3.0 + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +rotation = -3.14159 +scale = Vector2( 1, -1 ) +polygon = PoolVector2Array( -7, 1, -6, 2, 3, 2, 3, 3, 4, 4, 5, 4, 7, 2, 7, -2, 5, -4, 4, -4, 3, -3, 3, -2, -6, -2, -7, -1 ) + +[node name="LaserSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 2 ) +volume_db = -20.0 +autoplay = true + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 4 ) + +[node name="Timer" type="Timer" parent="."] +wait_time = 20.0 +one_shot = true +autostart = true + +[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] +position = Vector2( 0.5, -8.9407e-08 ) +scale = Vector2( 0.35, 0.3 ) + +[node name="Light" type="Light2D" parent="."] +material = SubResource( 2 ) +scale = Vector2( 0.5, 0.5 ) +texture = ExtResource( 6 ) +texture_scale = 2.0 +color = Color( 0.145098, 0.658824, 1, 1 ) +energy = 2.0 +shadow_enabled = true +shadow_gradient_length = 3.0 +shadow_filter = 2 +shadow_filter_smooth = 5.0 + +[connection signal="timeout" from="Timer" to="." method="queue_free"] +[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] diff --git a/bullets/scripts/EnemyLaser.gd b/bullets/scripts/EnemyLaser.gd new file mode 100644 index 0000000..01c24c5 --- /dev/null +++ b/bullets/scripts/EnemyLaser.gd @@ -0,0 +1,17 @@ +extends RigidBody2D + +const HitEffect = preload("res://effects/HitEffect.tscn") + + +func _ready(): + randomize() + var animatedSprite = $AnimatedSprite + animatedSprite.frame = rand_range(0, 13) + + +func create_hit_effect(): + Game.instance_scene_on_main(HitEffect, global_position) + + +func _on_VisibilityNotifier2D_screen_exited(): + queue_free() diff --git a/bullets/scripts/Laser.gd b/bullets/scripts/Laser.gd new file mode 100644 index 0000000..de0c1c1 --- /dev/null +++ b/bullets/scripts/Laser.gd @@ -0,0 +1,78 @@ +extends RigidBody2D +class_name Bullet + +export var spreadmaxneg: int +export var spreadmaxpos: int +export var scalingrand = false +export var minscalingrand = 1 +export var maxscalingrand = 1 +export var initial_velocity = 150 +export var particles = false +export var trail = false +export var trail_rare = true +export var rarity_min = 1 +export var rarity_max = 5 +export var scale_glow = true +export var modulate_amount = .2 +export var modulate_glow = false + +var powered_up = false + +const HitEffect = preload("res://effects/HitEffect.tscn") +const Trail = preload("res://effects/Trail.tscn") +var choosing = 0 + + +func _ready(): + yield(get_tree().create_timer(.1), "timeout") + visible = true + var direction = Vector2(initial_velocity, rand_range(spreadmaxneg, spreadmaxpos)) + apply_impulse(Vector2.ZERO, direction) + rotation = direction.angle() + $LaserSound.pitch_scale = randf() + 0.4 + $LaserSound.play() + $Laser.playing = true + + randomize() + var rand = rand_range(minscalingrand, maxscalingrand) + + if powered_up: + scalingrand = true + + if scalingrand: + var to_scale = Vector2(rand, rand) + if powered_up: + to_scale += Vector2(1.5, 1.5) + $Laser.scale = to_scale + $Collision.scale = to_scale + if scale_glow: + $Light.texture_scale += to_scale.x / 3 + var animatedSprite = $Laser + animatedSprite.frame = rand_range(0, 13) + if trail: + if trail_rare: + var chance = rand_range(rarity_min, rarity_max) + chance = round(chance) + if chance == 1: + var trailinstance = Trail.instance() + self.add_child(trailinstance) + if powered_up: + trailinstance.THICKNESS = rand * 2 + else: + var trailinstance = Trail.instance() + self.add_child(trailinstance) + if powered_up: + trailinstance.THICKNESS = rand * 2 + + +func create_hit_effect(): + Game.instance_scene_on_main(HitEffect, global_position) + + +func _on_VisibilityNotifier2D_screen_exited(): + queue_free() + + +func _physics_process(delta): + if modulate_glow: + $Light.colors.a -= modulate_amount * delta diff --git a/bullets/scripts/missile.gd b/bullets/scripts/missile.gd new file mode 100644 index 0000000..32d136d --- /dev/null +++ b/bullets/scripts/missile.gd @@ -0,0 +1,77 @@ +extends RigidBody2D + +export(float) var TERMINAL_VELOCITY := 300.0 +export(float) var CONSTANT_THRUST := 200.0 +export(float) var TURN_STRENGTH := 15.0 +var off_screen = false +onready var target_last_position +var TARGET +var powered_up + + +func start(_target): + TARGET = _target + if is_instance_valid(TARGET): + target_last_position = TARGET.global_position + else: + linear_velocity.x = CONSTANT_THRUST + + +func _physics_process(delta: float) -> void: + if is_instance_valid(TARGET): + var target_position = ( + TARGET.global_position + + (TARGET.global_position - target_last_position) / delta + ) + target_last_position = TARGET.global_position + var direction: Vector2 = global_position.direction_to(target_position - linear_velocity) + var attenuate_turning: float = global_transform.y.dot( + direction.rotated(angular_velocity * delta) + ) + apply_torque_impulse(TURN_STRENGTH * attenuate_turning) + var apply_thrust := Vector2() + if linear_velocity.length() < TERMINAL_VELOCITY: + var attenuate_thrust: float = clamp(global_transform.x.dot(direction), 0, 1) + apply_thrust = global_transform.x * CONSTANT_THRUST * attenuate_thrust + apply_central_impulse(apply_thrust) + + +const ExplosionEffect = preload("res://effects/ExplosionEffect.tscn") +const HitEffect = preload("res://effects/HitEffect.tscn") + + +func create_hit_effect(): + Game.instance_scene_on_main(HitEffect, global_position) + + +func create_explosion(): + Game.instance_scene_on_main(ExplosionEffect, global_position) + + +func _exit_tree(): + if not off_screen: + create_explosion() + + +func _on_VisibilityNotifier2D_screen_exited(): + if randi() % 6 != 5: + off_screen = true + queue_free() + + +func _ready(): + $LaserSound.pitch_scale = randf() + 0.4 + var minscalingrand = 1 + var maxscalingrand = 1 + if powered_up: + CONSTANT_THRUST -= 20 + TURN_STRENGTH += 20 + minscalingrand += 1 + maxscalingrand += 2 + var rand = rand_range(minscalingrand, maxscalingrand) + var to_scale = Vector2(rand, rand) + $Sprite.scale = to_scale + $Light.texture_scale = to_scale.x + $CollisionPolygon2D.scale = to_scale + if powered_up: + $Trail.THICKNESS += rand * 2 diff --git a/effects/ExplosionEffect.tscn b/effects/ExplosionEffect.tscn new file mode 100644 index 0000000..28c3126 --- /dev/null +++ b/effects/ExplosionEffect.tscn @@ -0,0 +1,63 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://sprites/Explosion.png" type="Texture" id=1] +[ext_resource path="res://sounds/Explode.wav" type="AudioStream" id=2] + +[sub_resource type="Animation" id=1] +resource_name = "Explode" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath(".: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 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 4 ] +} +tracks/1/type = "method" +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "queue_free" +} ] +} + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath(".: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": 0, +"values": [ 0 ] +} + +[node name="ExplosionEffect" type="Sprite"] +texture = ExtResource( 1 ) +hframes = 6 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "Explode" +anims/Explode = SubResource( 1 ) +anims/RESET = SubResource( 2 ) + +[node name="ExplodeSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 2 ) +volume_db = -30.0 +autoplay = true diff --git a/effects/Fire.tscn b/effects/Fire.tscn new file mode 100644 index 0000000..c658fc5 --- /dev/null +++ b/effects/Fire.tscn @@ -0,0 +1,41 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://sprites/Flame.png" type="Texture" id=1] + +[sub_resource type="CanvasItemMaterial" id=1] +blend_mode = 1 + +[sub_resource type="Gradient" id=2] +offsets = PoolRealArray( 0, 0.345745, 0.670213, 0.87234, 0.93617 ) +colors = PoolColorArray( 1, 0.831373, 0, 0.317647, 1, 0.356863, 0, 0.388235, 0, 0.431373, 1, 0.207843, 0.341176, 0.623529, 0.996078, 0.392157, 1, 1, 1, 0 ) + +[node name="Fire" type="CPUParticles2D"] +material = SubResource( 1 ) +amount = 64 +lifetime = 0.7 +explosiveness = 0.05 +randomness = 0.2 +lifetime_randomness = 0.1 +local_coords = false +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 0, 2 ) +direction = Vector2( -1, 0 ) +spread = 25.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 40.0 +initial_velocity_random = 0.1 +angular_velocity = 100.0 +angular_velocity_random = 1.0 +linear_accel = 5.0 +radial_accel = 60.0 +radial_accel_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 1.5 +scale_amount_random = 0.41 +color = Color( 0.776471, 0.776471, 0.776471, 1 ) +color_ramp = SubResource( 2 ) +__meta__ = { +"_editor_description_": "" +} diff --git a/effects/Game.gd b/effects/Game.gd new file mode 100644 index 0000000..e9e4526 --- /dev/null +++ b/effects/Game.gd @@ -0,0 +1,78 @@ +extends Node2D + +signal transition_halfway +var just_called = false +var keyboard = true setget set_keyboard +var USE_TOUCH = OS.has_touchscreen_ui_hint() + + +func halfway(): + emit_signal("transition_halfway") + + +func exit(): + get_tree().quit() + + +func transition(to = null): + if just_called == false: + just_called = true + get_tree().paused = true + $transitionAnimation.stop(true) + $transitionAnimation.play("fadeinout") + if to: + yield(Game, "transition_halfway") + # warning-ignore:return_value_discarded + get_tree().change_scene(to) + set_keyboard(keyboard) + if OS.has_touchscreen_ui_hint(): + turn_off() + get_tree().paused = false + just_called = false + + +func _ready(): + if OS.has_touchscreen_ui_hint(): + turn_off() + + +var title = "spaceshooty" + + +func _process(_delta): + if Engine.get_physics_frames() % 30 == 0: + OS.set_window_title(title + " | fps: " + str(Engine.get_frames_per_second())) + + +func turn_off(): + yield(get_tree().create_timer(.3), "timeout") + get_tree().call_group("keyboard", "hide") + get_tree().call_group("gamepad", "hide") + get_tree().call_group("not_mobile", "hide") + + +func _input(event: InputEvent) -> void: + if not USE_TOUCH: + if event is InputEventJoypadButton or event is InputEventJoypadMotion and keyboard == true: + self.keyboard = false + elif event is InputEventKey and keyboard == false: + self.keyboard = true + + +func set_keyboard(new_keyboard): + keyboard = new_keyboard + if new_keyboard == true: + get_tree().call_group("gamepad", "hide") + get_tree().call_group("keyboard", "show") + elif new_keyboard == false: + get_tree().call_group("keyboard", "hide") + get_tree().call_group("gamepad", "show") + + +func instance_scene_on_main(scene, position): + var main = get_tree().current_scene + var instance = scene.instance() + main.call_deferred("add_child", instance) +# main.add_child(instance) + instance.global_position = position + return instance diff --git a/effects/Game.tscn b/effects/Game.tscn new file mode 100644 index 0000000..1292e87 --- /dev/null +++ b/effects/Game.tscn @@ -0,0 +1,70 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://sprites/transition_left.png" type="Texture" id=1] +[ext_resource path="res://effects/Game.gd" type="Script" id=2] +[ext_resource path="res://sprites/transition_right.png" type="Texture" id=3] + +[sub_resource type="Animation" id=3] +resource_name = "fadeinout" +length = 2.0 +tracks/0/type = "method" +tracks/0/path = NodePath(".") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 1 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "halfway" +} ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("transition/TransitionRight:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 320, 0 ), Vector2( 119, 0 ), Vector2( 320, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("transition/TransitionLeft:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -251, 0 ), Vector2( 0, 0 ), Vector2( -251, 0 ) ] +} + +[node name="Game" type="Node2D"] +pause_mode = 2 +script = ExtResource( 2 ) + +[node name="transition" type="CanvasLayer" parent="."] +layer = 10 + +[node name="TransitionLeft" type="Sprite" parent="transition"] +position = Vector2( -251, 0 ) +scale = Vector2( 1.32963, 1.32963 ) +texture = ExtResource( 1 ) +centered = false + +[node name="TransitionRight" type="Sprite" parent="transition"] +position = Vector2( 320, 0 ) +scale = Vector2( 1.32963, 1.32963 ) +texture = ExtResource( 3 ) +centered = false + +[node name="transitionAnimation" type="AnimationPlayer" parent="."] +playback_speed = 2.0 +anims/fadeinout = SubResource( 3 ) diff --git a/effects/Glitch.gd b/effects/Glitch.gd new file mode 100644 index 0000000..fa9d6c1 --- /dev/null +++ b/effects/Glitch.gd @@ -0,0 +1,9 @@ +extends CanvasLayer + + +func apply(length, off = 1): + $shaderholder.visible = true + $shaderholder.get_material().set_shader_param("offset", off) + yield(get_tree().create_timer(length), "timeout") + $shaderholder.visible = false + $shaderholder.get_material().set_shader_param("offset", 1) diff --git a/effects/Glitch.tscn b/effects/Glitch.tscn new file mode 100644 index 0000000..84626b5 --- /dev/null +++ b/effects/Glitch.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://effects/glitch.tres" type="Shader" id=1] +[ext_resource path="res://effects/Glitch.gd" type="Script" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/apply = false +shader_param/offset = 1.0 + +[node name="Glitch" type="CanvasLayer"] +layer = 8 +script = ExtResource( 3 ) + +[node name="shaderholder" type="ColorRect" parent="."] +visible = false +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/effects/HitEffect.tscn b/effects/HitEffect.tscn new file mode 100644 index 0000000..c755452 --- /dev/null +++ b/effects/HitEffect.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://sounds/Hit.wav" type="AudioStream" id=1] + +[sub_resource type="Animation" id=2] +resource_name = "Hit" +length = 0.6 +tracks/0/type = "value" +tracks/0/path = NodePath("Particles2D: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 = "method" +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.6 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "queue_free" +} ] +} + +[node name="HitEffect" type="Node2D"] + +[node name="HitSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 1 ) +volume_db = -30.0 +autoplay = true + +[node name="Particles2D" type="CPUParticles2D" parent="."] +scale = Vector2( 2, 2 ) +emitting = false +amount = 3 +lifetime = 0.5 +one_shot = true +explosiveness = 1.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 60.0 +initial_velocity_random = 0.75 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "Hit" +anims/Hit = SubResource( 2 ) diff --git a/effects/Stars.tscn b/effects/Stars.tscn new file mode 100644 index 0000000..a93db49 --- /dev/null +++ b/effects/Stars.tscn @@ -0,0 +1,15 @@ +[gd_scene format=2] + +[node name="Stars" type="CPUParticles2D"] +pause_mode = 2 +position = Vector2( 320, 90 ) +amount = 100 +lifetime = 6.0 +preprocess = 6.5 +emission_shape = 2 +emission_rect_extents = Vector2( 1, 90 ) +spread = 0.0 +gravity = Vector2( 0, 0 ) +initial_velocity = -100.0 +initial_velocity_random = 0.5 +scale_amount_random = 0.5 diff --git a/effects/Trail.gd b/effects/Trail.gd new file mode 100644 index 0000000..8cf9cd3 --- /dev/null +++ b/effects/Trail.gd @@ -0,0 +1,36 @@ +extends Node2D + +export var MAX_LENGTH = 20 +export var THICKNESS = 2.0 + +var points = [] +var frame = 0 + + +func _physics_process(_delta): + if frame % 3 == 0: + points.push_front(global_position) + if points.size() > MAX_LENGTH: + points.pop_back() + + frame += 1 + update() + + +func _draw(): + if points.size() < 2: + return + + var antialias = false + var c = modulate + var s = float(points.size()) + var adjusted = PoolVector2Array() + var colors = PoolColorArray() + + for i in range(s): + adjusted.append(points[i] - global_position) + c.a = lerp(1.0, 0.0, i / s) + colors.append(c) + + draw_set_transform(Vector2.ZERO, -get_parent().rotation, Vector2(1, 1)) + draw_polyline_colors(adjusted, colors, THICKNESS, antialias) diff --git a/effects/Trail.tscn b/effects/Trail.tscn new file mode 100644 index 0000000..aaf78af --- /dev/null +++ b/effects/Trail.tscn @@ -0,0 +1,7 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://effects/Trail.gd" type="Script" id=1] + +[node name="Trail" type="Node2D"] +show_behind_parent = true +script = ExtResource( 1 ) diff --git a/effects/glitch.tres b/effects/glitch.tres new file mode 100644 index 0000000..0062913 --- /dev/null +++ b/effects/glitch.tres @@ -0,0 +1,14 @@ +[gd_resource type="Shader" format=2] + +[resource] +code = "shader_type canvas_item; + +uniform bool apply = false; +uniform float offset = 1.; + +void fragment(){ + vec4 green_channel = texture(SCREEN_TEXTURE, SCREEN_UV); + vec4 red_channel = texture(SCREEN_TEXTURE, vec2(SCREEN_UV.x + (offset * SCREEN_PIXEL_SIZE.x), SCREEN_UV.y)); + vec4 blue_channel = texture(SCREEN_TEXTURE, vec2(SCREEN_UV.x - (offset * SCREEN_PIXEL_SIZE.x), SCREEN_UV.y)); + COLOR = vec4(red_channel.r, green_channel.g, blue_channel.b, 1.); +}" diff --git a/effects/greyscale.gdshader b/effects/greyscale.gdshader new file mode 100644 index 0000000..cda5892 --- /dev/null +++ b/effects/greyscale.gdshader @@ -0,0 +1,7 @@ +shader_type canvas_item; + +void fragment(){ + vec4 bg = texture(SCREEN_TEXTURE, SCREEN_UV); + float avg = (bg.r + bg.g + bg.b) / 3f; + COLOR = vec4(avg, avg, avg, 1f); +}
\ No newline at end of file diff --git a/effects/shake.gd b/effects/shake.gd new file mode 100644 index 0000000..8492628 --- /dev/null +++ b/effects/shake.gd @@ -0,0 +1,137 @@ +extends Node + +var camera_shake_intensity = 0.0 +var camera_shake_duration = 0.0 + +enum Type { Random, Sine, Noise } +var camera_shake_type = Type.Random + +var noise: OpenSimplexNoise + + +func _ready(): + # Generate noise for noise shake + # + # This is only generated once when the game starts + # and then read over and over again + # + # These parameters change the shape of the noise + # and the feel of the shake6 + noise = OpenSimplexNoise.new() + noise.seed = randi() + noise.octaves = 4 + noise.period = 20 + noise.persistence = 0.8 + + +func shake(intensity, duration, type = Type.Random): + # Set the shake parameters + # + # A good idea here is to add configuration settings that + # allow the player to turn off shake + # + # if player_no_want: + # intensity = 0 + + if intensity > camera_shake_intensity and duration > camera_shake_duration: + camera_shake_intensity = intensity + camera_shake_duration = duration + camera_shake_type = type + + +func _process(delta): + # Get the camera + # + # You'll need to adjust this depending on how you want to + # keep track of the active camera in your game + # + # Maybe your game has two cameras, maybe it has 10, who knows? + # Do what you like + var camera = get_tree().current_scene.get_node("Camera2D") + # Stop shaking if the camera_shake_duration timer is down to zero + if camera_shake_duration <= 0: + # Reset the camera when the shaking is done + camera.offset = Vector2.ZERO + camera_shake_intensity = 0.0 + camera_shake_duration = 0.0 + return + + # Subtract the elapsed time from the camera_shake_duration + # so that it eventually ends + # + # You can do other fun stuff here too like have the intensity + # decay gradually so that the shake tapers off + + # Shake it + + # Random shake + # Chaos + # Madness + # + # Personally, I like this best because players don't notice + # any difference in the thick of battle when the shakes are short + # and because it's dead simple. + + # Sine wave based shake + # + # Play around with the magic numbers to adjust the feel + # + # Basing the sine wave off of get_ticks_msec ensures that + # the returned value is continuous and smooth + + # Noise based shake + # + # Accessing the noise based on get_ticks_msec ensures that + # the returned value is continuous and smooth + camera_shake_duration = camera_shake_duration - delta + + # Shake it + var offset = Vector2.ZERO + + if camera_shake_type == Type.Random: + # Random shake + # Chaos + # Madness + # + # Personally, I like this best because players don't notice + # any difference in the thick of battle when the shakes are short + # and because it's dead simple. + offset = Vector2(randf(), randf()) * camera_shake_intensity + + # Sine wave based shake + # + # Play around with the magic numbers to adjust the feel + # + # Basing the sine wave off of get_ticks_msec ensures that + # the returned value is continuous and smooth + + # Noise based shake + # + # Accessing the noise based on get_ticks_msec ensures that + # the returned value is continuous and smooth + if camera_shake_type == Type.Sine: + # Sine wave based shake + # + # Play around with the magic numbers to adjust the feel + # + # Basing the sine wave off of get_ticks_msec ensures that + # the returned value is continuous and smooth + offset = ( + Vector2(sin(OS.get_ticks_msec() * 0.03), sin(OS.get_ticks_msec() * 0.07)) + * camera_shake_intensity + * 0.5 + ) + + # Noise based shake + # + # Accessing the noise based on get_ticks_msec ensures that + # the returned value is continuous and smooth + if camera_shake_type == Type.Noise: + # Noise based shake + # + # Accessing the noise based on get_ticks_msec ensures that + # the returned value is continuous and smooth + var noise_value_x = noise.get_noise_1d(OS.get_ticks_msec() * 0.1) + var noise_value_y = noise.get_noise_1d(OS.get_ticks_msec() * 0.1 + 100.0) + offset = Vector2(noise_value_x, noise_value_y) * camera_shake_intensity * 2.0 + camera.offset = offset diff --git a/enemy/scenes/Boss.tscn b/enemy/scenes/Boss.tscn new file mode 100644 index 0000000..8850ab3 --- /dev/null +++ b/enemy/scenes/Boss.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://enemy/scenes/Enemy.tscn" type="PackedScene" id=1] +[ext_resource path="res://enemy/scripts/Boss.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +resource_local_to_scene = true +extents = Vector2( 4.5, 4.5 ) + +[node name="squid" instance=ExtResource( 1 )] +script = ExtResource( 2 ) +drop_power_up = true +ARMOR = 75 +score_on_kill = 200 +SPEED = 10 +shootspeed = 0.2 +stop_pos = Vector2( 100, 0 ) + +[node name="Sprite" parent="." index="0"] +rotation = 1.5708 +animation = "New Anim 2" + +[node name="CollisionShape2D" parent="." index="1"] +position = Vector2( -0.5, 0 ) +shape = SubResource( 1 ) + +[node name="Timer" parent="." index="3"] +wait_time = 2.0 diff --git a/enemy/scenes/Boss2.tscn b/enemy/scenes/Boss2.tscn new file mode 100644 index 0000000..3c4612c --- /dev/null +++ b/enemy/scenes/Boss2.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://enemy/scenes/Enemy.tscn" type="PackedScene" id=1] +[ext_resource path="res://bullets/scenes/Fireball.tscn" type="PackedScene" id=2] + +[sub_resource type="RectangleShape2D" id=1] +resource_local_to_scene = true +extents = Vector2( 8, 9 ) + +[node name="bigboi" instance=ExtResource( 1 )] +drop_power_up = true +ARMOR = 300 +score_on_kill = 400 +Laser = ExtResource( 2 ) +SPEED = 5 +shootspeed = 1.0 +stop_pos = Vector2( 300, 0 ) + +[node name="Sprite" parent="." index="0"] +rotation = 1.5708 +animation = "New Anim 3" + +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource( 1 ) diff --git a/enemy/scenes/Difficulty Scaling.tscn b/enemy/scenes/Difficulty Scaling.tscn new file mode 100644 index 0000000..3615297 --- /dev/null +++ b/enemy/scenes/Difficulty Scaling.tscn @@ -0,0 +1,78 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://enemy/scenes/EasyEnemy.tscn" type="PackedScene" id=1] +[ext_resource path="res://enemy/scenes/Enemy.tscn" type="PackedScene" id=2] +[ext_resource path="res://enemy/scenes/HardEnemy.tscn" type="PackedScene" id=3] +[ext_resource path="res://enemy/scenes/Boss.tscn" type="PackedScene" id=5] +[ext_resource path="res://enemy/scenes/UFO.tscn" type="PackedScene" id=7] +[ext_resource path="res://enemy/scenes/Boss2.tscn" type="PackedScene" id=8] +[ext_resource path="res://enemy/scenes/FInalBOss.tscn" type="PackedScene" id=9] + +[node name="Difficulty Scaling" type="Node2D"] + +[node name="Difficulty_Easy" type="Node2D" parent="."] + +[node name="octopus" parent="Difficulty_Easy" instance=ExtResource( 1 )] +stop_pos = Vector2( 200, 0 ) + +[node name="Difficulty_Medium" type="Node2D" parent="."] + +[node name="basicdude" parent="Difficulty_Medium" instance=ExtResource( 2 )] + +[node name="octopus" parent="Difficulty_Medium" instance=ExtResource( 1 )] +stop_pos = Vector2( 200, 0 ) + +[node name="Difficulty_Hard" type="Node2D" parent="."] + +[node name="basicdude" parent="Difficulty_Hard" instance=ExtResource( 2 )] + +[node name="hardenemy" parent="Difficulty_Hard" instance=ExtResource( 3 )] +stop_pos = Vector2( 200, 0 ) + +[node name="ufo" parent="Difficulty_Hard" instance=ExtResource( 7 )] +stop_pos = Vector2( 200, 0 ) + +[node name="Difficulty_Boss" type="Node2D" parent="."] + +[node name="squid" parent="Difficulty_Boss" instance=ExtResource( 5 )] +stop_pos = Vector2( 200, 0 ) + +[node name="Difficulty_Impossible" type="Node2D" parent="."] + +[node name="squid" parent="Difficulty_Impossible" instance=ExtResource( 5 )] +stop_pos = Vector2( 200, 0 ) + +[node name="basicdudestronkened" parent="Difficulty_Impossible" instance=ExtResource( 2 )] +ARMOR = 50 +score_on_kill = 30 +shootspeed = 1.2 +stop_pos = Vector2( 200, 0 ) + +[node name="stronkenedufo" parent="Difficulty_Impossible" instance=ExtResource( 7 )] +ARMOR = 50 +score_on_kill = 150 +shootspeed = 4.0 +stop_pos = Vector2( 190, 0 ) + +[node name="Congrats_you beat the game now die" type="Node2D" parent="."] + +[node name="bigboi" parent="Congrats_you beat the game now die" instance=ExtResource( 8 )] +stop_pos = Vector2( 200, 0 ) + +[node name="fuckyou" type="Node2D" parent="."] + +[node name="bigboi" parent="fuckyou" instance=ExtResource( 8 )] +stop_pos = Vector2( 200, 0 ) + +[node name="squid" parent="fuckyou" instance=ExtResource( 5 )] +stop_pos = Vector2( 200, 0 ) + +[node name="LAST BOSS EVER" type="Node2D" parent="."] + +[node name="finale" parent="LAST BOSS EVER" instance=ExtResource( 9 )] +score_on_kill = 1000 + +[node name="IF YOUR STILL ALIVE, YOU ARENT NOW" type="Node2D" parent="."] + +[node name="finale" parent="IF YOUR STILL ALIVE, YOU ARENT NOW" instance=ExtResource( 9 )] +ARMOR = 2000 diff --git a/enemy/scenes/Drone.tscn b/enemy/scenes/Drone.tscn new file mode 100644 index 0000000..df92f7f --- /dev/null +++ b/enemy/scenes/Drone.tscn @@ -0,0 +1,141 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://enemy/scripts/Drone.gd" type="Script" id=1] +[ext_resource path="res://sprites/drone_base.png" type="Texture" id=2] +[ext_resource path="res://sprites/turret.png" type="Texture" id=3] + +[sub_resource type="CircleShape2D" id=1] +radius = 18.0278 + +[sub_resource type="Animation" id=3] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("turret: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": 0, +"values": [ 1 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "firing" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("shootsfx:playing") +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("turret:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 0 ] +} +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.3 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "spawn_bullet" +} ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("appearFlash:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[node name="Drone" type="RigidBody2D"] +collision_layer = 34 +gravity_scale = 0.0 +script = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[node name="base" type="Sprite" parent="."] +texture = ExtResource( 2 ) + +[node name="turret" type="Sprite" parent="."] +texture = ExtResource( 3 ) +centered = false +offset = Vector2( -1, -4 ) +hframes = 2 +frame = 1 + +[node name="appearFlash" type="Sprite" parent="."] + +[node name="Tween" type="Tween" parent="."] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 3 ) +anims/firing = SubResource( 2 ) + +[node name="shootCooldown" type="Timer" parent="."] + +[node name="rays" type="Node2D" parent="."] + +[node name="RayCast2D" type="RayCast2D" parent="rays"] +position = Vector2( 0, 17 ) +enabled = true +collision_mask = 32777 +collide_with_areas = true + +[node name="RayCast2D2" type="RayCast2D" parent="rays"] +position = Vector2( 17, 0 ) +rotation = -1.5708 +enabled = true +collision_mask = 32777 +collide_with_areas = true + +[node name="RayCast2D3" type="RayCast2D" parent="rays"] +position = Vector2( 0, -17 ) +rotation = 3.14159 +enabled = true +collision_mask = 32777 +collide_with_areas = true + +[node name="RayCast2D4" type="RayCast2D" parent="rays"] +position = Vector2( -17, 0 ) +rotation = 1.5708 +enabled = true +collision_mask = 32777 +collide_with_areas = true + +[node name="Camera2D" type="Camera2D" parent="."] + +[node name="shootsfx" type="AudioStreamPlayer" parent="."] + +[connection signal="body_entered" from="." to="." method="_on_Drone_body_entered"] +[connection signal="timeout" from="shootCooldown" to="." method="shoot"] diff --git a/enemy/scenes/EasyEnemy.tscn b/enemy/scenes/EasyEnemy.tscn new file mode 100644 index 0000000..04ba629 --- /dev/null +++ b/enemy/scenes/EasyEnemy.tscn @@ -0,0 +1,41 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://enemy/scenes/Enemy.tscn" type="PackedScene" id=1] +[ext_resource path="res://enemy/scripts/EasyEnemy.gd" type="Script" id=2] +[ext_resource path="res://sprites/EasyEnemy.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=3] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=4] +flags = 2 +atlas = ExtResource( 3 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=2] +animations = [ { +"frames": [ SubResource( 3 ), SubResource( 4 ) ], +"loop": true, +"name": "default", +"speed": 1.5 +} ] + +[sub_resource type="RectangleShape2D" id=1] +resource_local_to_scene = true +extents = Vector2( 4.5, 7 ) + +[node name="octopus" instance=ExtResource( 1 )] +script = ExtResource( 2 ) +ARMOR = 10 +score_on_kill = 5 +SPEED = 15 +shootspeed = 10.0 + +[node name="Sprite" parent="." index="0"] +frames = SubResource( 2 ) + +[node name="CollisionShape2D" parent="." index="1"] +position = Vector2( 0.5, 0 ) +shape = SubResource( 1 ) diff --git a/enemy/scenes/Enemy.tscn b/enemy/scenes/Enemy.tscn new file mode 100644 index 0000000..fc4b0a2 --- /dev/null +++ b/enemy/scenes/Enemy.tscn @@ -0,0 +1,121 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://sprites/enemy.png" type="Texture" id=1] +[ext_resource path="res://sprites/UFO-export.png" type="Texture" id=2] +[ext_resource path="res://sprites/litableenemy.png" type="Texture" id=3] +[ext_resource path="res://sprites/squid.png" type="Texture" id=4] +[ext_resource path="res://sprites/HardEnemy.png" type="Texture" id=5] +[ext_resource path="res://sprites/boss2.png" type="Texture" id=6] +[ext_resource path="res://enemy/scripts/Enemy.gd" type="Script" id=7] + +[sub_resource type="AtlasTexture" id=5] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=6] +flags = 2 +atlas = ExtResource( 1 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=7] +flags = 2 +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 18, 9 ) + +[sub_resource type="AtlasTexture" id=8] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=9] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=10] +flags = 2 +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 10, 11 ) + +[sub_resource type="AtlasTexture" id=11] +flags = 2 +atlas = ExtResource( 4 ) +region = Rect2( 0, 11, 10, 11 ) + +[sub_resource type="SpriteFrames" id=4] +animations = [ { +"frames": [ SubResource( 5 ), SubResource( 6 ) ], +"loop": true, +"name": "default", +"speed": 1.5 +}, { +"frames": [ SubResource( 7 ) ], +"loop": true, +"name": "New Anim 1", +"speed": 5.0 +}, { +"frames": [ SubResource( 8 ), SubResource( 9 ) ], +"loop": true, +"name": "New Anim", +"speed": 1.5 +}, { +"frames": [ ExtResource( 3 ) ], +"loop": true, +"name": "New Anim 4", +"speed": 5.0 +}, { +"frames": [ ExtResource( 6 ) ], +"loop": true, +"name": "New Anim 3", +"speed": 5.0 +}, { +"frames": [ SubResource( 10 ), SubResource( 11 ) ], +"loop": true, +"name": "New Anim 2", +"speed": 1.5 +} ] + +[sub_resource type="RectangleShape2D" id=1] +resource_local_to_scene = true +extents = Vector2( 5.5, 7 ) + +[sub_resource type="OccluderPolygon2D" id=12] +polygon = PoolVector2Array( -2, -7, -5, -4, -5, 5, -2, 7, 3, 7, 6, 4, 6, -5, 3, -7 ) + +[node name="basicdude" type="Area2D"] +z_index = 1 +collision_layer = 34 +script = ExtResource( 7 ) +stop_pos = Vector2( 220, 0 ) + +[node name="Sprite" type="AnimatedSprite" parent="."] +frames = SubResource( 4 ) +frame = 1 +playing = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] +position = Vector2( -2.38419e-07, 0 ) +scale = Vector2( 0.5, 0.7 ) + +[node name="Timer" type="Timer" parent="."] +wait_time = 1.5 +autostart = true + +[node name="sidestep" type="Timer" parent="."] +wait_time = 2.0 +autostart = true + +[node name="Tween" type="Tween" parent="."] + +[node name="LightOccluder2D" type="LightOccluder2D" parent="."] +occluder = SubResource( 12 ) + +[connection signal="area_entered" from="." to="." method="_on_Enemy_area_entered"] +[connection signal="body_entered" from="." to="." method="_on_Enemy_body_entered"] +[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] +[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] +[connection signal="timeout" from="sidestep" to="." method="_on_sidestep_timeout"] diff --git a/enemy/scenes/EnemySpawner.tscn b/enemy/scenes/EnemySpawner.tscn new file mode 100644 index 0000000..b329333 --- /dev/null +++ b/enemy/scenes/EnemySpawner.tscn @@ -0,0 +1,89 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://enemy/scripts/EnemySpawner.gd" type="Script" id=1] +[ext_resource path="res://sprites/EasyEnemy.png" type="Texture" id=2] +[ext_resource path="res://sprites/icon.png" type="Texture" id=3] +[ext_resource path="res://sprites/squid.png" type="Texture" id=4] +[ext_resource path="res://sprites/UFO-export.png" type="Texture" id=5] +[ext_resource path="res://sprites/boss2.png" type="Texture" id=6] +[ext_resource path="res://fonts/fonty.tres" type="DynamicFont" id=7] +[ext_resource path="res://sprites/HardEnemy.png" type="Texture" id=8] +[ext_resource path="res://sprites/bossfinal.png" type="Texture" id=9] + +[node name="EnemySpawner" type="Node2D"] +script = ExtResource( 1 ) + +[node name="SpawnPoints" type="Node2D" parent="."] + +[node name="Point" type="Position2D" parent="SpawnPoints"] +position = Vector2( 0, 45 ) + +[node name="Point3" type="Position2D" parent="SpawnPoints"] +position = Vector2( 0, 90 ) + +[node name="Point5" type="Position2D" parent="SpawnPoints"] +position = Vector2( 0, 135 ) + +[node name="Sprite Holders" type="Node2D" parent="."] +position = Vector2( -19, -33 ) + +[node name="octopus" type="Sprite" parent="Sprite Holders"] +visible = false +position = Vector2( -24, 176 ) +rotation = -1.5708 +texture = ExtResource( 2 ) +hframes = 2 + +[node name="basicenemy" type="Sprite" parent="Sprite Holders"] +visible = false +position = Vector2( -24, 176 ) +texture = ExtResource( 3 ) + +[node name="squid" type="Sprite" parent="Sprite Holders"] +visible = false +position = Vector2( -24, 176 ) +texture = ExtResource( 4 ) +vframes = 2 + +[node name="ufo" type="Sprite" parent="Sprite Holders"] +visible = false +position = Vector2( 2, 176 ) +texture = ExtResource( 5 ) + +[node name="boss" type="Sprite" parent="Sprite Holders"] +visible = false +position = Vector2( -16, 176 ) +texture = ExtResource( 6 ) + +[node name="hardy" type="Sprite" parent="Sprite Holders"] +visible = false +position = Vector2( -16, 176 ) +rotation = -1.5708 +texture = ExtResource( 8 ) +hframes = 2 + +[node name="finale" type="Sprite" parent="Sprite Holders"] +visible = false +position = Vector2( -16, 176 ) +rotation = -1.5708 +texture = ExtResource( 9 ) + +[node name="Label" type="Label" parent="Sprite Holders"] +visible = false +margin_left = -344.0 +margin_top = 168.0 +margin_right = -32.0 +margin_bottom = 185.0 +custom_fonts/font = ExtResource( 7 ) +text = "Beware of the" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Timer" type="Timer" parent="."] +wait_time = 0.5 +autostart = true + +[connection signal="timeout" from="Timer" to="." method="spawn_enemy_on_current_difficulty"] diff --git a/enemy/scenes/FInalBOss.tscn b/enemy/scenes/FInalBOss.tscn new file mode 100644 index 0000000..e370985 --- /dev/null +++ b/enemy/scenes/FInalBOss.tscn @@ -0,0 +1,45 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://enemy/scripts/FInalBOss.gd" type="Script" id=1] +[ext_resource path="res://sprites/bossfinal.png" type="Texture" id=2] +[ext_resource path="res://bullets/scenes/Fireball.tscn" type="PackedScene" id=3] + +[sub_resource type="CircleShape2D" id=1] +radius = 8.0 + +[node name="FInalBOss" type="Area2D"] +position = Vector2( 270, 73 ) +collision_layer = 34 +script = ExtResource( 1 ) +drop_power_up = true +ARMOR = 500 +score_on_kill = 500 +Laser = ExtResource( 3 ) +shootspeed = 0.3 +stop_pos = Vector2( 300, 0 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[node name="Timer" type="Timer" parent="."] +wait_time = 1.5 +autostart = true + +[node name="sidestep" type="Timer" parent="."] +wait_time = 2.0 +autostart = true + +[node name="Tween" type="Tween" parent="."] + +[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] +position = Vector2( -2.38419e-07, 0 ) +scale = Vector2( 0.5, 0.7 ) + +[connection signal="area_entered" from="." to="." method="_on_Enemy_area_entered"] +[connection signal="body_entered" from="." to="." method="_on_Enemy_body_entered"] +[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] +[connection signal="timeout" from="sidestep" to="." method="_on_sidestep_timeout"] +[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] diff --git a/enemy/scenes/HardEnemy.tscn b/enemy/scenes/HardEnemy.tscn new file mode 100644 index 0000000..d51c51d --- /dev/null +++ b/enemy/scenes/HardEnemy.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://enemy/scenes/Enemy.tscn" type="PackedScene" id=1] +[ext_resource path="res://enemy/scripts/HardEnemy.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +resource_local_to_scene = true +extents = Vector2( 5.5, 7 ) + +[node name="hardenemy" instance=ExtResource( 1 )] +script = ExtResource( 2 ) +score_on_kill = 20 +shootspeed = 0.8 + +[node name="Sprite" parent="." index="0"] +animation = "New Anim" +frame = 1 + +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource( 1 ) diff --git a/enemy/scenes/LastBoss.tscn b/enemy/scenes/LastBoss.tscn new file mode 100644 index 0000000..06c1d83 --- /dev/null +++ b/enemy/scenes/LastBoss.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://enemy/scenes/Enemy.tscn" type="PackedScene" id=1] + +[sub_resource type="RectangleShape2D" id=1] +resource_local_to_scene = true +extents = Vector2( 5.5, 7 ) + +[node name="Enemy" instance=ExtResource( 1 )] +drop_power_up = true + +[node name="Sprite" parent="." index="0"] +frame = 1 + +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource( 1 ) diff --git a/enemy/scenes/UFO.tscn b/enemy/scenes/UFO.tscn new file mode 100644 index 0000000..ffbc294 --- /dev/null +++ b/enemy/scenes/UFO.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://enemy/scenes/Enemy.tscn" type="PackedScene" id=1] +[ext_resource path="res://sprites/UFO-export.png" type="Texture" id=2] +[ext_resource path="res://bullets/scenes/EnemyLaserBig.tscn" type="PackedScene" id=3] + +[sub_resource type="SpriteFrames" id=2] +resource_local_to_scene = true +animations = [ { +"frames": [ ExtResource( 2 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="RectangleShape2D" id=1] +resource_local_to_scene = true +extents = Vector2( 4, 8 ) + +[node name="Enemy" instance=ExtResource( 1 )] +drop_power_up = true +score_on_kill = 100 +Laser = ExtResource( 3 ) +SPEED = 10 +shootspeed = 5.0 + +[node name="Sprite" parent="." index="0"] +rotation = 1.5708 +frames = SubResource( 2 ) + +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource( 1 ) diff --git a/enemy/scripts/Boss.gd b/enemy/scripts/Boss.gd new file mode 100644 index 0000000..37fa047 --- /dev/null +++ b/enemy/scripts/Boss.gd @@ -0,0 +1,2 @@ +extends Enemy +class_name Boss diff --git a/enemy/scripts/Drone.gd b/enemy/scripts/Drone.gd new file mode 100644 index 0000000..76fd812 --- /dev/null +++ b/enemy/scripts/Drone.gd @@ -0,0 +1,112 @@ +extends RigidBody2D + +var alive = true +var asleep = false +var health = 15 +var COOLDOWN = 1 + +var hovering + +export var MAX_SPEED = 50 +export var MAX_THRUST = 25 + + +func _integrate_forces(state): + if not alive: + return + + if asleep: + return + + var delta = state.get_step() + + # Check nearby objects with raycast + var closest_collision = null + $rays.rotation += delta * 11 * PI + for ray in $rays.get_children(): + if ray.is_colliding(): + var collision_point = ray.get_collision_point() - global_position + if closest_collision == null: + closest_collision = collision_point + if collision_point.length() < closest_collision.length(): + closest_collision = collision_point + + # Dodge + if closest_collision: + var normal = -closest_collision.normalized() + var dodge_direction = 1 + if randf() < 0.5: + dodge_direction = -1 + linear_velocity += normal * MAX_THRUST * 2 * delta + linear_velocity += normal.rotated(PI / 2 * dodge_direction) * MAX_THRUST * delta + + # Steer towards player + var distance_to_player = global_position.distance_to($"../../Ship".global_position) + var vector_to_player = ($"../../Ship".global_position - global_position).normalized() + + # Rotate turret + var start = $turret.rotation + var angle_to_target = Vector2(1, 0).rotated(start).angle_to(vector_to_player) + var end = start + angle_to_target + $Tween.interpolate_property( + $turret, "rotation", start, end, 0.1, Tween.TRANS_QUAD, Tween.EASE_OUT + ) + $Tween.start() + + if distance_to_player > 40: + # Move towards player + linear_velocity += vector_to_player * MAX_THRUST * delta + hovering = false + else: + # Move away from player + hovering = false + linear_velocity += -vector_to_player * MAX_THRUST * delta + + # Clamp max speed + if linear_velocity.length() > MAX_SPEED: + linear_velocity = linear_velocity.normalized() * MAX_SPEED + + +func shoot(): + $shootCooldown.wait_time = COOLDOWN * (1 + rand_range(-0.25, 0.25)) + $shootCooldown.start() + + if not alive: + return + + if asleep: + return + + # Start firing animation + $AnimationPlayer.play("firing") + + +const Laser = preload("res://bullets/scenes/EnemyLaser.tscn") + + +func spawn_bullet(): + var laser = Game.instance_scene_on_main(Laser, global_position) + laser.apply_impulse(Vector2.ZERO, Vector2(-50, 0)) + + +const ExplosionEffect = preload("res://effects/ExplosionEffect.tscn") +const HitEffect = preload("res://effects/HitEffect.tscn") + + +func create_hit_effect(): + Game.instance_scene_on_main(HitEffect, global_position) + + +func create_explosion(): + Game.instance_scene_on_main(ExplosionEffect, global_position) + + +func _exit_tree(): + create_explosion() + + +func _on_Drone_body_entered(body): + if body.is_in_group("pbullet"): + health -= 1 + if health <= 0: + queue_free() diff --git a/enemy/scripts/EasyEnemy.gd b/enemy/scripts/EasyEnemy.gd new file mode 100644 index 0000000..c3f1b7f --- /dev/null +++ b/enemy/scripts/EasyEnemy.gd @@ -0,0 +1,2 @@ +extends Enemy +class_name EasyEnemy diff --git a/enemy/scripts/Enemy.gd b/enemy/scripts/Enemy.gd new file mode 100644 index 0000000..434a045 --- /dev/null +++ b/enemy/scripts/Enemy.gd @@ -0,0 +1,2 @@ +extends Enemy +class_name EnemyMedium diff --git a/enemy/scripts/EnemyClass.gd b/enemy/scripts/EnemyClass.gd new file mode 100644 index 0000000..8f08e9d --- /dev/null +++ b/enemy/scripts/EnemyClass.gd @@ -0,0 +1,112 @@ +class_name Enemy +extends Area2D + +var count = 0 +var target +export var drop_power_up = false +export var missile = false +export var ARMOR = 20 +export var score_on_kill = 10 +const ExplosionEffect = preload("res://effects/ExplosionEffect.tscn") +export var Laser = preload("res://bullets/scenes/EnemyLaser.tscn") +export var SPEED = 25 +onready var timer = $Timer +export var shootspeed = 1.5 +var target_destination = Vector2.ZERO +var damagetobesubtracted +export var stop_pos = Vector2(200, 0) +onready var tween = $Tween + + +func _ready(): + target = get_parent().target + timer.wait_time = shootspeed + target_destination = global_position + + +func _process(delta): + if global_position.x > stop_pos.x: + global_position.x -= SPEED * delta + + +func _exit_tree(): + if drop_power_up and randi() % 10 == 2: + var powerUp = preload("res://PowerUp.tscn") + Game.instance_scene_on_main(powerUp, global_position) + + +func damage(): + damagetobesubtracted = rand_range(enemy_damage.min_damage, enemy_damage.max_damage) + damagetobesubtracted = round(damagetobesubtracted) + ARMOR -= damagetobesubtracted + if ARMOR <= 0: + add_to_score() + create_explosion() + queue_free() + + +func _on_Enemy_body_entered(body): + if not body.is_in_group("laser"): + body.create_hit_effect() + if not body.is_in_group("Player"): + body.queue_free() + damage() + + +func _on_Enemy_area_entered(area): + if not area.is_in_group("laser"): + if not area.is_in_group("Player"): + area.create_hit_effect() + area.queue_free() + damage() + + elif area.is_in_group("laser"): + self.visible = true + var beam = get_overlapping_bodies() + if beam != null: + yield(get_tree().create_timer(.4), "timeout") + damage() + + +func add_to_score(): + var main = get_tree().current_scene + if main.is_in_group("World"): + main.score += score_on_kill + + +func create_explosion(): + Game.instance_scene_on_main(ExplosionEffect, global_position) + + +func _on_VisibilityNotifier2D_screen_exited(): + queue_free() + + +func _on_Timer_timeout(): + if not missile: + var laser = Game.instance_scene_on_main(Laser, global_position) + laser.apply_impulse(Vector2.ZERO, Vector2(-50, 0)) + elif missile == true: + var missiles = preload("res://bullets/scenes/missile.tscn") + var m = Game.instance_scene_on_main(missiles, global_position) + m.start(target) + + +func _on_sidestep_timeout(): + var choosing = randi() % 2 + var choice = [30, -30] + target_destination = global_position + Vector2(0, choice[choosing]) + if target_destination.y > 160: + target_destination.y = 160 + elif target_destination.y < 10: + target_destination.y = 10 + tween.interpolate_property( + self, + "position", + global_position, + target_destination, + 1, + Tween.TRANS_LINEAR, + Tween.EASE_IN_OUT + ) + tween.start() diff --git a/enemy/scripts/EnemySpawner.gd b/enemy/scripts/EnemySpawner.gd new file mode 100644 index 0000000..033b351 --- /dev/null +++ b/enemy/scripts/EnemySpawner.gd @@ -0,0 +1,142 @@ +extends Node2D + +var count1 = 0 +var count2 = 0 +var count3 = 0 +var count4 = 0 +var count5 = 0 +var count6 = 0 +var count7 = 0 +var count8 = 0 + +onready var label = $"Sprite Holders/Label" +var nexthing = 0 +#min, max, level +var onscreenmax = 3 +var onscreen = 0 +var announcing = true +var dev_mode = playerstats.dev_mode +var score_ranges: Array = [ + [50, 200, 1], + [200, 749, 2], + [750, 2499, 3], + [2500, 5000, 4], + [5001, 7000, 5], + [5001, 7000, 5], + [7001, 8000, 6], + [8001, 30000, 7], + [30001, 40000, 8] +] +onready var spawnPoints = $SpawnPoints +var difficulty_levels: Array +var current_difficulty_level +onready var main = get_node("../../../EnemyHolder") + + +func _ready(): + visible_then_not($"Sprite Holders/octopus") + difficulty_levels = load("res://enemy/scenes/Difficulty Scaling.tscn").instance().get_children() + current_difficulty_level = difficulty_levels[0] + + +func spawn_enemy_on_current_difficulty(): + if not announcing: + if not dev_mode: + onscreen = main.get_child_count() + if onscreen <= onscreenmax: + var choices = current_difficulty_level.get_children() + var to_spawn = choices[randi() % choices.size()] + if to_spawn.name == "Drone": + if randi() % 6 == 5: + var clone = to_spawn.duplicate() + var spawn_position = get_spawn_position() + main.add_child(clone) + clone.global_position = spawn_position + else: + var clone = to_spawn.duplicate() + var spawn_position = get_spawn_position() + main.add_child(clone) + clone.global_position = spawn_position + + +func get_spawn_position(): + var points = spawnPoints.get_children() + points.shuffle() + return points[0].global_position + + +func _physics_process(_delta): + var world = get_tree().current_scene + for i in score_ranges.size(): + if world.score in range(score_ranges[i][0], score_ranges[i][1], 1): + #set your dificulty to score_ranges[i][2] + diff_levels(score_ranges[i][2]) + match score_ranges[i][2]: + 1: + if not count1 >= 1: + count1 += 1 + visible_then_not($"Sprite Holders/basicenemy") + 2: + if not count2 >= 1: + count2 += 1 + visible_then_not($"Sprite Holders/hardy") + visible_then_not($"Sprite Holders/ufo") + 3: + if not count3 >= 1: + count3 += 1 + onscreenmax = 1 + label.text = "First boss = " + visible_then_not($"Sprite Holders/squid") + yield(get_tree().create_timer(6), "timeout") + label.text = "Next up =" + 4: + if not count4 >= 1: + count4 += 1 + onscreenmax = 4 + label.text = "Hats off to ye!" + label.visible = true + yield(get_tree().create_timer(6), "timeout") + label.visible = false + 5: + if not count5 >= 1: + count5 += 1 + onscreenmax = 1 + label.text = "Second boss = " + visible_then_not($"Sprite Holders/boss") + yield(get_tree().create_timer(6), "timeout") + 6: + if not count6 >= 1: + count6 += 1 + onscreenmax = 9 + label.text = "Random bullshit go!" + label.visible = true + yield(get_tree().create_timer(6), "timeout") + label.visible = false + 7: + if not count7 >= 1: + count7 += 1 + onscreenmax = 0 + label.text = "Last boss = " + visible_then_not($"Sprite Holders/finale") + label.text = "Y r u alive!!!" + 8: + if not count8 >= 1: + count8 += 1 + onscreenmax = 5 + label.visible = true + yield(get_tree().create_timer(6), "timeout") + label.visible = false + + +func diff_levels(value): + current_difficulty_level = difficulty_levels[value] + + +func visible_then_not(sprite): + announcing = true + label.visible = true + sprite.visible = true + yield(get_tree().create_timer(5), "timeout") + sprite.visible = false + label.visible = false + announcing = false diff --git a/enemy/scripts/FInalBOss.gd b/enemy/scripts/FInalBOss.gd new file mode 100644 index 0000000..a8a0739 --- /dev/null +++ b/enemy/scripts/FInalBOss.gd @@ -0,0 +1 @@ +extends Enemy diff --git a/enemy/scripts/HardEnemy.gd b/enemy/scripts/HardEnemy.gd new file mode 100644 index 0000000..1dae827 --- /dev/null +++ b/enemy/scripts/HardEnemy.gd @@ -0,0 +1,2 @@ +extends Enemy +class_name HardEnemy diff --git a/enemy/scripts/UFO.gd b/enemy/scripts/UFO.gd new file mode 100644 index 0000000..fef4638 --- /dev/null +++ b/enemy/scripts/UFO.gd @@ -0,0 +1,2 @@ +extends Enemy +class_name EnemyUfo diff --git a/enemy/scripts/enemy_damage.gd b/enemy/scripts/enemy_damage.gd new file mode 100644 index 0000000..dbf40bb --- /dev/null +++ b/enemy/scripts/enemy_damage.gd @@ -0,0 +1,3 @@ +extends Node +export var min_damage = 1 +export var max_damage = 2 diff --git a/export_presets.cfg b/export_presets.cfg index 9270cf2..b0a6f12 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -83,7 +83,7 @@ script_encryption_key="" custom_template/debug="" custom_template/release="" -variant/export_type=0 +variant/export_type=1 vram_texture_compression/for_desktop=true vram_texture_compression/for_mobile=false html/export_icon=true diff --git a/fonts/(16)04B_30__.TTF b/fonts/(16)04B_30__.TTF Binary files differnew file mode 100644 index 0000000..9c2323b --- /dev/null +++ b/fonts/(16)04B_30__.TTF diff --git a/fonts/04B_19__.TTF b/fonts/04B_19__.TTF Binary files differnew file mode 100644 index 0000000..6338c19 --- /dev/null +++ b/fonts/04B_19__.TTF diff --git a/fonts/04b-19.tres b/fonts/04b-19.tres new file mode 100644 index 0000000..b086942 --- /dev/null +++ b/fonts/04b-19.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/04B_19__.TTF" type="DynamicFontData" id=1] + +[resource] +size = 14 +font_data = ExtResource( 1 ) diff --git a/fonts/Paskowy.ttf b/fonts/Paskowy.ttf Binary files differnew file mode 100644 index 0000000..19a55dc --- /dev/null +++ b/fonts/Paskowy.ttf diff --git a/fonts/cg-pixel-3x5-mono.ttf b/fonts/cg-pixel-3x5-mono.ttf Binary files differnew file mode 100644 index 0000000..5899a29 --- /dev/null +++ b/fonts/cg-pixel-3x5-mono.ttf diff --git a/fonts/fonty.tres b/fonts/fonty.tres new file mode 100644 index 0000000..0bc54b2 --- /dev/null +++ b/fonts/fonty.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/(16)04B_30__.TTF" type="DynamicFontData" id=1] + +[resource] +size = 17 +font_data = ExtResource( 1 ) diff --git a/fonts/tiny.tres b/fonts/tiny.tres new file mode 100644 index 0000000..2241e9b --- /dev/null +++ b/fonts/tiny.tres @@ -0,0 +1,8 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://fonts/cg-pixel-3x5-mono.ttf" type="DynamicFontData" id=1] + +[resource] +size = 5 +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 1 ) diff --git a/godot.lock b/godot.lock deleted file mode 100644 index 51fd93a..0000000 --- a/godot.lock +++ /dev/null @@ -1,6 +0,0 @@ -{ - "@bendn/gdcli": { - "version": "1.2.5", - "integrity": "sha512-/YOAd1+K4JlKvPTmpX8B7VWxGtFrxKq4R0A6u5qOaaVPK6uGsl4dGZaIHpxuqcurEcwPEOabkoShXKZaOXB0lw==" - } -}
\ No newline at end of file diff --git a/godot.package b/godot.package deleted file mode 100644 index 8c2d29a..0000000 --- a/godot.package +++ /dev/null @@ -1,5 +0,0 @@ -{ - "packages": { - "@bendn/gdcli": "1.2.5" - } -}
\ No newline at end of file diff --git a/install_addons.sh b/install_addons.sh deleted file mode 100755 index 98a3ef2..0000000 --- a/install_addons.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -rm -rf addons && mkdir addons -git clone --depth 1 https://github.com/you-win/godot-package-manager -mv godot-package-manager/addons/godot-package-manager addons/ -rm -rf godot-package-manager -godot -s --no-window addons/godot-package-manager/cli.gd update -rm -rf addons/godot-package-manager diff --git a/other/Save&Load.gd b/other/Save&Load.gd new file mode 100644 index 0000000..d3a7729 --- /dev/null +++ b/other/Save&Load.gd @@ -0,0 +1,25 @@ +extends Node + +const SAVE_DATA_PATH = "user://save_data.json" + +var default_save_data = { + highscore = 0, unlocked1 = true, unlocked2 = false, unlocked3 = false, unlocked4 = false +} + + +func save_data_to_file(save_data): + var json_string = to_json(save_data) + var save_file = File.new() + save_file.open(SAVE_DATA_PATH, File.WRITE) + save_file.store_line(json_string) + save_file.close() + + +func load_data_from_file(): + var save_file = File.new() + if not save_file.file_exists(SAVE_DATA_PATH): + return default_save_data + save_file.open(SAVE_DATA_PATH, File.READ) + var save_data = parse_json(save_file.get_as_text()) + save_file.close() + return save_data diff --git a/player/scenes/Ship.tscn b/player/scenes/Ship.tscn new file mode 100644 index 0000000..ba2e288 --- /dev/null +++ b/player/scenes/Ship.tscn @@ -0,0 +1,390 @@ +[gd_scene load_steps=35 format=2] + +[ext_resource path="res://ui/scenes/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/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="KinematicBody2D" 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="MobileJoystick" parent="." instance=ExtResource( 9 )] + +[node name="MobileControls" parent="MobileJoystick" instance=ExtResource( 1 )] + +[node name="Change gun" parent="MobileJoystick/MobileControls" index="1"] +action = "change_gun_1" + +[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"] + +[editable path="MobileJoystick"] +[editable path="MobileJoystick/MobileControls"] diff --git a/player/scripts/Ship.gd b/player/scripts/Ship.gd new file mode 100644 index 0000000..9973944 --- /dev/null +++ b/player/scripts/Ship.gd @@ -0,0 +1,264 @@ +extends KinematicBody2D +class_name playerkinematic + +var counter +var i_am_in_cooldown: bool +var wait_time = .1 +var walled = false +export var id = 1 +export var fireoffset = 2 +onready var animationState = $AnimationTree.get("parameters/playback") +onready var HitEffect = preload("res://effects/HitEffect.tscn") +onready var hitSound = $AudioStreamPlayer +const ExplosionEffect = preload("res://effects/ExplosionEffect.tscn") +var attack = preload("res://bullets/scenes/Laser.tscn") +export(int) var SPEED = 100 +onready var timer = $Timer +var movementpenalty = 20 +var velocity = Vector2.ZERO +signal player_death +var ACCELERATION = 500 +var FRICTION = 20 +var recoil = 40 +var input_vector = Vector2.ZERO +var USE_TOUCH = OS.has_touchscreen_ui_hint() +onready var splitshotu +onready var rocketsu +onready var lasersu +onready var flaku +onready var beamu +onready var fire = $Fire +var amount = 1 +var target = null +var firing = false +var thrusting_last_frame = false +var shake_intensity = .3 +var quant = 30 +var shake_duration = .2 + + +func _ready(): + playerstats.gun = "lasers" + $MobileJoystick/TouchScreenButton.visible = USE_TOUCH + $MobileJoystick/MobileControls/Attack.visible = USE_TOUCH + $"MobileJoystick/MobileControls/Change gun".visible = USE_TOUCH + $AnimationTree.active = true + lasersu = playerstats.lasers + rocketsu = playerstats.rockets + splitshotu = playerstats.splitshot + flaku = playerstats.flak + beamu = playerstats.beam + + +func create_hit_effect(): + Game.instance_scene_on_main(HitEffect, global_position) + + +func _physics_process(delta): + input_vector.x = Input.get_axis("left_%s" % id, "right_%s" % id) + input_vector.y = Input.get_axis("up_%s" % id, "down_%s" % id) + if Game.keyboard: + input_vector = input_vector.normalized() + if $MobileJoystick/TouchScreenButton.in_use: + input_vector = $MobileJoystick/TouchScreenButton.force + #makes a input vector based off of inputs, and supports controllers + # fire particle code + var fire_dir = input_vector * -1 + fire.direction = fire_dir + + if input_vector.x > 0 or input_vector.y != 0: + fire.emitting = true + fire.initial_velocity = input_vector.x * 40 + else: + fire.emitting = false + + if input_vector != Vector2.ZERO: + if not thrusting_last_frame: + $thrustsfxin.playing = true + + if not $thrustsfxloop.playing: + $thrustsfxloop.playing = true + + thrusting_last_frame = true + else: + if thrusting_last_frame: + $thrustsfxloop.playing = false + $thrustsfxend.playing = true + + if $thrustsfxin.playing: + $thrustsfxin.playing = false + + thrusting_last_frame = false + if input_vector != Vector2.ZERO: #moves ya + velocity = velocity.move_toward(input_vector * SPEED, ACCELERATION * delta) + $AnimationTree.set("parameters/Turn/blend_position", input_vector) + animationState.travel("Turn") + else: + #stops you + animationState.travel("Idle") + velocity = velocity.move_toward(Vector2.ZERO, FRICTION * delta) + if firing: + SPEED = movementpenalty + if not i_am_in_cooldown: + if randi() % quant == quant - 1: + Glitch.apply(.1, amount) + else: + SPEED = 100 + if not i_am_in_cooldown and Input.is_action_pressed("shoot_%s" % id): + shoot() + elif not Input.is_action_pressed("shoot_%s" % id): + firing = false + if Input.is_action_just_pressed("change_gun_%s" % id): + match playerstats.gun: + "lasers": + rockets() + "rockets": + lasers() +# "splitshot": +# lasers() +# "flak": +# lasers() + velocity = move_and_slide(velocity) + + +func _on_TouchScreenButton_force(force): + input_vector = force + + +func _on_Ship_area_entered(area): + if not area.is_in_group("pbullet") and not area.is_in_group("Player"): + qfreenplay(area) + + +func qfreenplay(q): + q.queue_free() + play() + + +func _on_Ship_body_entered(body): + if not body.is_in_group("Player") and not body.is_in_group("pbullet"): + qfreenplay(body) + + +func play(): + hitSound.play() + + +func _on_AudioStreamPlayer_finished(): + playerstats.hp -= 1 + if playerstats.hp <= 0: + $AnimationPlayer.play("Die Anim") + + +func _go_into_cooldown(): + i_am_in_cooldown = true + timer.start(wait_time) + yield(timer, "timeout") + i_am_in_cooldown = false + + +func flak(): + if flaku: + wait_time = .001 + shake_intensity = .03 + shake_duration = .04 + enemy_damage.min_damage = 15 + enemy_damage.max_damage = 30 + movementpenalty = 0 + quant = 20 + amount = .5 + recoil = 1 + attack = preload("res://bullets/scenes/Flak.tscn") + playerstats.gun = "flak" + + +func rockets(): + if rocketsu: + shake_intensity = .4 + shake_duration = .3 + wait_time = 1 + amount = 1 + quant = 4 + enemy_damage.min_damage = 10 + enemy_damage.max_damage = 30 + movementpenalty = 60 + recoil = 200 + attack = preload("res://bullets/scenes/missile.tscn") + playerstats.gun = "rockets" + + +func lasers(): + if lasersu: + amount = 1 + shake_intensity = .3 + shake_duration = .2 + wait_time = .1 + quant = 20 + enemy_damage.min_damage = 4 + enemy_damage.max_damage = 9 + movementpenalty = 20 + recoil = 20 + attack = preload("res://bullets/scenes/Laser.tscn") + playerstats.gun = "lasers" + + +func splitshot(): + if splitshotu: + quant = 40 + wait_time = 0.05 + shake_intensity = .2 + amount = .5 + shake_duration = .2 + enemy_damage.min_damage = .5 + enemy_damage.max_damage = 1 + recoil = 12 + movementpenalty = 130 + attack = preload("res://bullets/scenes/SplitShot.tscn") + playerstats.gun = "splitshot" + + +func shoot(): #shoot + _go_into_cooldown() + if !firing: + firing = true + Shake.shake(shake_intensity, shake_duration) + match playerstats.gun: + "rockets": + var muzzles = $Muzzles/RocketMuzzle.get_children() + for muzzle in muzzles: + var bullet = fire(muzzle.global_position, attack) + bullet.start(target) + "lasers": + var muzzles = $Muzzles/LaserMuzzle.get_children() + for muzzle in muzzles: + fire(muzzle.global_position, attack) + "splitshot": + var muzzles = $Muzzles/SplitMuzzle.get_children() + for muzzle in muzzles: + fire(muzzle.global_position, attack) + "flak": + var muzzles = $Muzzles/FlakMuzzle.get_children() + for muzzle in muzzles: + fire(muzzle.global_position, attack) + + +# warning-ignore:function_conflicts_variable +func fire(global_pos, Bullet): + var bullet = Game.instance_scene_on_main(Bullet, global_pos) + if playerstats.power: + bullet.powered_up = true + if not self.is_on_wall(): + velocity.x -= recoil + else: + velocity.x -= recoil / 10 + return bullet + + +func _exit_tree(): + playerstats.alive = false + Game.instance_scene_on_main(ExplosionEffect, global_position) + emit_signal("player_death") + + +func _on_target_getter_target(_target): + target = _target diff --git a/player/scripts/ShipArea2d.gd b/player/scripts/ShipArea2d.gd new file mode 100644 index 0000000..1a53336 --- /dev/null +++ b/player/scripts/ShipArea2d.gd @@ -0,0 +1,29 @@ +extends Area2D + +var target = null setget tar + +signal target + + +func tar(tget): + emit_signal("target", tget) + + +func _physics_process(_delta): + if !target or not is_instance_valid(target): + find_target() + + +func find_target(): + var units = get_overlapping_areas() + if units.size() > 0: + var closest = units[0] + for unit in units: + if ( + position.distance_to(unit.global_position) + < position.distance_to(closest.global_position) + ): + closest = unit + self.target = closest + else: + self.target = null diff --git a/player/scripts/playerstats.gd b/player/scripts/playerstats.gd new file mode 100644 index 0000000..28fc98f --- /dev/null +++ b/player/scripts/playerstats.gd @@ -0,0 +1,43 @@ +extends Node +class_name playerstatz + +var alive = true +var dev_mode = false +var beam = true +var splitshot = true +var multiplayerlocal = false +var rockets = true +var lasers = true +var flak = true +var gun = "lasers" +var power = false setget set_power +export(int) var max_hp = 3 setget set_max_health +var hp = max_hp setget set_health +var recent_score: int + +signal no_hp +signal hp_changed(value) +signal max_hp_changed(value) + + +func set_max_health(value): + max_hp = value + self.hp = min(hp, max_hp) + emit_signal("max_hp_changed", value) + + +func set_health(value): + hp = value + emit_signal("hp_changed", hp) + if hp <= 0: + emit_signal("no_hp") + + +func _ready(): + self.hp = max_hp + + +func set_power(new_power): + power = new_power + yield(get_tree().create_timer(8), "timeout") + power = false diff --git a/project.godot b/project.godot index 663e841..eb755c2 100644 --- a/project.godot +++ b/project.godot @@ -9,55 +9,302 @@ config_version=4 _global_script_classes=[ { -"base": "Reference", -"class": "Arg", +"base": "Enemy", +"class": "Boss", "language": "GDScript", -"path": "res://addons/gdcli/Arg.gd" +"path": "res://enemy/scripts/Boss.gd" }, { -"base": "Reference", -"class": "Parser", +"base": "RigidBody2D", +"class": "Bullet", "language": "GDScript", -"path": "res://addons/gdcli/Parser.gd" +"path": "res://bullets/scripts/Laser.gd" +}, { +"base": "Enemy", +"class": "EasyEnemy", +"language": "GDScript", +"path": "res://enemy/scripts/EasyEnemy.gd" +}, { +"base": "Area2D", +"class": "Enemy", +"language": "GDScript", +"path": "res://enemy/scripts/EnemyClass.gd" +}, { +"base": "Enemy", +"class": "EnemyMedium", +"language": "GDScript", +"path": "res://enemy/scripts/Enemy.gd" +}, { +"base": "Enemy", +"class": "EnemyUfo", +"language": "GDScript", +"path": "res://enemy/scripts/UFO.gd" +}, { +"base": "Enemy", +"class": "HardEnemy", +"language": "GDScript", +"path": "res://enemy/scripts/HardEnemy.gd" +}, { +"base": "KinematicBody2D", +"class": "playerkinematic", +"language": "GDScript", +"path": "res://player/scripts/Ship.gd" +}, { +"base": "Node", +"class": "playerstatz", +"language": "GDScript", +"path": "res://player/scripts/playerstats.gd" } ] _global_script_class_icons={ -"Arg": "", -"Parser": "" +"Boss": "", +"Bullet": "", +"EasyEnemy": "", +"Enemy": "", +"EnemyMedium": "", +"EnemyUfo": "", +"HardEnemy": "", +"playerkinematic": "", +"playerstatz": "" } [application] -config/name="Godot Template" -run/main_scene="res://Main.tscn" -config/use_custom_user_dir=true -config/custom_user_dir_name="GodotTemplate" +config/name="Space Shooter" +run/main_scene="res://ui/scenes/StartMenu.tscn" +boot_splash/image="res://sprites/icon.png" +boot_splash/use_filter=false +boot_splash/bg_color=Color( 0.12549, 0.145098, 0.192157, 0.0509804 ) +config/icon="res://sprites/icon.png" +config/macos_native_icon="res://sprites/icon.png" +config/windows_native_icon="res://sprites/icon.png" [autoload] -CLI="*res://autoloads/CLI.gd" +Music="*res://sounds/Music.tscn" +SaveAndLoad="*res://other/Save&Load.gd" +enemy_damage="*res://enemy/scripts/enemy_damage.gd" +playerstats="*res://player/scripts/playerstats.gd" +Shake="*res://effects/shake.gd" +Game="*res://effects/Game.tscn" +Glitch="*res://effects/Glitch.tscn" -[debug] +[compression] -gdscript/warnings/return_value_discarded=false +formats/zstd/long_distance_matching=true +formats/zstd/compression_level=22 +formats/zlib/compression_level=9 +formats/gzip/compression_level=9 [display] window/size/width=320 window/size/height=180 +window/size/fullscreen=true window/size/test_width=1280 window/size/test_height=720 window/dpi/allow_hidpi=true +window/vsync/use_vsync=false +window/per_pixel_transparency/allowed=true +window/per_pixel_transparency/enabled=true +mouse_cursor/custom_image="res://sprites/cursor.png" window/stretch/mode="2d" window/stretch/aspect="keep" -[logging] +[editor_plugins] + +enabled=PoolStringArray( ) + +[importer_defaults] + +texture={ +"compress/bptc_ldr": 0, +"compress/hdr_mode": 0, +"compress/lossy_quality": 0.7, +"compress/mode": 0, +"compress/normal_map": 0, +"detect_3d": false, +"flags/anisotropic": false, +"flags/filter": false, +"flags/mipmaps": false, +"flags/repeat": 0, +"flags/srgb": 2, +"process/HDR_as_SRGB": false, +"process/fix_alpha_border": true, +"process/invert_color": false, +"process/normal_map_invert_y": false, +"process/premult_alpha": false, +"size_limit": 0, +"stream": false, +"svg/scale": 1.0 +} + +[input] + +ui_accept={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":32,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_select={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_cancel={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_focus_next={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_focus_prev={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_left={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_right={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_up={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_down={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_page_up={ +"deadzone": 0.5, +"events": [ ] +} +ui_page_down={ +"deadzone": 0.5, +"events": [ ] +} +ui_home={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777229,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_end={ +"deadzone": 0.5, +"events": [ ] +} +right_1={ +"deadzone": 0.2, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) + ] +} +left_1={ +"deadzone": 0.2, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) + ] +} +up_1={ +"deadzone": 0.2, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) + ] +} +down_1={ +"deadzone": 0.2, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) + ] +} +shoot_1={ +"deadzone": 0.2, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) + ] +} +change_gun_1={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":3,"pressure":0.0,"pressed":false,"script":null) + ] +} +pause={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) + ] +} +options={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777220,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +spacebar={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +x={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) + ] +} + +[layer_names] + +2d_render/layer_1="player" +2d_physics/layer_1="player" +2d_physics/layer_2="enemy" +2d_physics/layer_3="bullet" +2d_physics/layer_4="world_collisions" +2d_physics/layer_5="player_collide" +2d_physics/layer_6="targeted" +2d_physics/layer_12="ui" +3d_physics/layer_12="ui" + +[physics] -file_logging/enable_file_logging=true +2d/thread_model=2 +2d/time_before_sleep=0.1 +common/physics_interpolation=true +common/enable_object_picking=false [rendering] quality/driver/driver_name="GLES2" +quality/driver/fallback_to_gles2=true 2d/options/use_nvidia_rect_flicker_workaround=true quality/intended_usage/framebuffer_allocation=0 quality/intended_usage/framebuffer_allocation.mobile=0 2d/snapping/use_gpu_pixel_snap=true +threads/thread_model=2 vram_compression/import_etc=true +vram_compression/import_pvrtc=true +quality/shadows/filter_mode=2 +quality/shadows/filter_mode.mobile=2 +quality/filters/anisotropic_filter_level=1 +quality/dynamic_fonts/use_oversampling=false diff --git a/sounds/Explode.wav b/sounds/Explode.wav Binary files differnew file mode 100644 index 0000000..639aa7f --- /dev/null +++ b/sounds/Explode.wav diff --git a/sounds/Explode.wav.import b/sounds/Explode.wav.import new file mode 100644 index 0000000..cc1ba73 --- /dev/null +++ b/sounds/Explode.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/Explode.wav-6c5ca6b4d6e678fe4150686f30c446e2.sample" + +[deps] + +source_file="res://sounds/Explode.wav" +dest_files=[ "res://.import/Explode.wav-6c5ca6b4d6e678fe4150686f30c446e2.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/sounds/Hit.wav b/sounds/Hit.wav Binary files differnew file mode 100644 index 0000000..c3e0bc2 --- /dev/null +++ b/sounds/Hit.wav diff --git a/sounds/Hit.wav.import b/sounds/Hit.wav.import new file mode 100644 index 0000000..55825cd --- /dev/null +++ b/sounds/Hit.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/Hit.wav-5d92a1bbf8d35910f840017082ad1b47.sample" + +[deps] + +source_file="res://sounds/Hit.wav" +dest_files=[ "res://.import/Hit.wav-5d92a1bbf8d35910f840017082ad1b47.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/sounds/Laser.wav b/sounds/Laser.wav Binary files differnew file mode 100644 index 0000000..52693e0 --- /dev/null +++ b/sounds/Laser.wav diff --git a/sounds/Laser.wav.import b/sounds/Laser.wav.import new file mode 100644 index 0000000..92ff681 --- /dev/null +++ b/sounds/Laser.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/Laser.wav-3b820c59a92ec9dba4a9ae4052085250.sample" + +[deps] + +source_file="res://sounds/Laser.wav" +dest_files=[ "res://.import/Laser.wav-3b820c59a92ec9dba4a9ae4052085250.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/sounds/Music.ogg b/sounds/Music.ogg Binary files differnew file mode 100644 index 0000000..f1c5210 --- /dev/null +++ b/sounds/Music.ogg diff --git a/sounds/Music.ogg.import b/sounds/Music.ogg.import new file mode 100644 index 0000000..3196a5b --- /dev/null +++ b/sounds/Music.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/Music.ogg-2b7cf951fddcace049637acc92067a32.oggstr" + +[deps] + +source_file="res://sounds/Music.ogg" +dest_files=[ "res://.import/Music.ogg-2b7cf951fddcace049637acc92067a32.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/sounds/Music.tscn b/sounds/Music.tscn new file mode 100644 index 0000000..c345728 --- /dev/null +++ b/sounds/Music.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://sounds/Music.ogg" type="AudioStream" id=1] + +[node name="Music" type="AudioStreamPlayer"] +pause_mode = 2 +stream = ExtResource( 1 ) +volume_db = -26.0 +autoplay = true diff --git a/sounds/ShipHit.wav b/sounds/ShipHit.wav Binary files differnew file mode 100644 index 0000000..a601c6e --- /dev/null +++ b/sounds/ShipHit.wav diff --git a/sounds/ShipHit.wav.import b/sounds/ShipHit.wav.import new file mode 100644 index 0000000..bc24d6f --- /dev/null +++ b/sounds/ShipHit.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/ShipHit.wav-da3aa0cf6913c89191a963d9dddbbb4c.sample" + +[deps] + +source_file="res://sounds/ShipHit.wav" +dest_files=[ "res://.import/ShipHit.wav-da3aa0cf6913c89191a963d9dddbbb4c.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/sounds/missile.wav b/sounds/missile.wav Binary files differnew file mode 100644 index 0000000..5b1c779 --- /dev/null +++ b/sounds/missile.wav diff --git a/sounds/missile.wav.import b/sounds/missile.wav.import new file mode 100644 index 0000000..765e7d2 --- /dev/null +++ b/sounds/missile.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/missile.wav-1fb8b7a03f647ceb0c0fea9579c6c2b1.sample" + +[deps] + +source_file="res://sounds/missile.wav" +dest_files=[ "res://.import/missile.wav-1fb8b7a03f647ceb0c0fea9579c6c2b1.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/sounds/thrust.wav b/sounds/thrust.wav Binary files differnew file mode 100644 index 0000000..9a6718a --- /dev/null +++ b/sounds/thrust.wav diff --git a/sounds/thrust.wav.import b/sounds/thrust.wav.import new file mode 100644 index 0000000..5fb1a0f --- /dev/null +++ b/sounds/thrust.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/thrust.wav-dcae1f3a027628c87cc049dc3c4ba29d.sample" + +[deps] + +source_file="res://sounds/thrust.wav" +dest_files=[ "res://.import/thrust.wav-dcae1f3a027628c87cc049dc3c4ba29d.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/sounds/thrust_end.wav b/sounds/thrust_end.wav Binary files differnew file mode 100644 index 0000000..1176c09 --- /dev/null +++ b/sounds/thrust_end.wav diff --git a/sounds/thrust_end.wav.import b/sounds/thrust_end.wav.import new file mode 100644 index 0000000..9fa083c --- /dev/null +++ b/sounds/thrust_end.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/thrust_end.wav-db30a56d5fda908540365eb0b4f2f2f1.sample" + +[deps] + +source_file="res://sounds/thrust_end.wav" +dest_files=[ "res://.import/thrust_end.wav-db30a56d5fda908540365eb0b4f2f2f1.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/sounds/thrust_start.wav b/sounds/thrust_start.wav Binary files differnew file mode 100644 index 0000000..f94b7ba --- /dev/null +++ b/sounds/thrust_start.wav diff --git a/sounds/thrust_start.wav.import b/sounds/thrust_start.wav.import new file mode 100644 index 0000000..00db8c5 --- /dev/null +++ b/sounds/thrust_start.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/thrust_start.wav-af3e96bb56c23733c06ce97f5a016d93.sample" + +[deps] + +source_file="res://sounds/thrust_start.wav" +dest_files=[ "res://.import/thrust_start.wav-af3e96bb56c23733c06ce97f5a016d93.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/sprites/EasyEnemy.png b/sprites/EasyEnemy.png Binary files differnew file mode 100644 index 0000000..fbbbc77 --- /dev/null +++ b/sprites/EasyEnemy.png diff --git a/sprites/EasyEnemy.png.import b/sprites/EasyEnemy.png.import new file mode 100644 index 0000000..a3ae461 --- /dev/null +++ b/sprites/EasyEnemy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/EasyEnemy.png-f917d2377d7001e64027cc5e63f7a389.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/EasyEnemy.png" +dest_files=[ "res://.import/EasyEnemy.png-f917d2377d7001e64027cc5e63f7a389.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/EnemyMissile.png b/sprites/EnemyMissile.png Binary files differnew file mode 100644 index 0000000..872e239 --- /dev/null +++ b/sprites/EnemyMissile.png diff --git a/sprites/EnemyMissile.png.import b/sprites/EnemyMissile.png.import new file mode 100644 index 0000000..8f48fd4 --- /dev/null +++ b/sprites/EnemyMissile.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/EnemyMissile.png-cb91e9ffffbb1beb5147fe5507371ab3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/EnemyMissile.png" +dest_files=[ "res://.import/EnemyMissile.png-cb91e9ffffbb1beb5147fe5507371ab3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/Explosion.png b/sprites/Explosion.png Binary files differnew file mode 100644 index 0000000..81086cc --- /dev/null +++ b/sprites/Explosion.png diff --git a/sprites/Explosion.png.import b/sprites/Explosion.png.import new file mode 100644 index 0000000..dc0d22b --- /dev/null +++ b/sprites/Explosion.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Explosion.png-b982da0d38ede858ab3f64ad091769aa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Explosion.png" +dest_files=[ "res://.import/Explosion.png-b982da0d38ede858ab3f64ad091769aa.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/Flame.png b/sprites/Flame.png Binary files differnew file mode 100644 index 0000000..afc392d --- /dev/null +++ b/sprites/Flame.png diff --git a/sprites/Flame.png.import b/sprites/Flame.png.import new file mode 100644 index 0000000..17c2834 --- /dev/null +++ b/sprites/Flame.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Flame.png-398c221346a8409b8dc5c65754ea764a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Flame.png" +dest_files=[ "res://.import/Flame.png-398c221346a8409b8dc5c65754ea764a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/HardEnemy.png b/sprites/HardEnemy.png Binary files differnew file mode 100644 index 0000000..9597d69 --- /dev/null +++ b/sprites/HardEnemy.png diff --git a/sprites/HardEnemy.png.import b/sprites/HardEnemy.png.import new file mode 100644 index 0000000..0f7946a --- /dev/null +++ b/sprites/HardEnemy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/HardEnemy.png-6d215f28ac4c09f90222b2a679f873ed.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/HardEnemy.png" +dest_files=[ "res://.import/HardEnemy.png-6d215f28ac4c09f90222b2a679f873ed.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/Laser-Sheet.png b/sprites/Laser-Sheet.png Binary files differnew file mode 100644 index 0000000..c77f28d --- /dev/null +++ b/sprites/Laser-Sheet.png diff --git a/sprites/Laser-Sheet.png.import b/sprites/Laser-Sheet.png.import new file mode 100644 index 0000000..ad7397a --- /dev/null +++ b/sprites/Laser-Sheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Laser-Sheet.png-432fa97315758bc1cdfa454aa4c558cf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Laser-Sheet.png" +dest_files=[ "res://.import/Laser-Sheet.png-432fa97315758bc1cdfa454aa4c558cf.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/PlayerMissileIcon.png b/sprites/PlayerMissileIcon.png Binary files differnew file mode 100644 index 0000000..60975f5 --- /dev/null +++ b/sprites/PlayerMissileIcon.png diff --git a/sprites/PlayerMissileIcon.png.import b/sprites/PlayerMissileIcon.png.import new file mode 100644 index 0000000..65ce3fa --- /dev/null +++ b/sprites/PlayerMissileIcon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/PlayerMissileIcon.png-d72f6c19ad7c8761d9be1b6ba9822ebf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/PlayerMissileIcon.png" +dest_files=[ "res://.import/PlayerMissileIcon.png-d72f6c19ad7c8761d9be1b6ba9822ebf.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/PlayerMissle.png b/sprites/PlayerMissle.png Binary files differnew file mode 100644 index 0000000..d32103b --- /dev/null +++ b/sprites/PlayerMissle.png diff --git a/sprites/PlayerMissle.png.import b/sprites/PlayerMissle.png.import new file mode 100644 index 0000000..db8654b --- /dev/null +++ b/sprites/PlayerMissle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/PlayerMissle.png-5e06ba395910a9d376541f67b563c833.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/PlayerMissle.png" +dest_files=[ "res://.import/PlayerMissle.png-5e06ba395910a9d376541f67b563c833.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/Ship.png b/sprites/Ship.png Binary files differnew file mode 100644 index 0000000..089df60 --- /dev/null +++ b/sprites/Ship.png diff --git a/sprites/Ship.png.import b/sprites/Ship.png.import new file mode 100644 index 0000000..521e6c2 --- /dev/null +++ b/sprites/Ship.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Ship.png-4d7cc2daf3e5518c76f45438d1a0acb6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Ship.png" +dest_files=[ "res://.import/Ship.png-4d7cc2daf3e5518c76f45438d1a0acb6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/UFO-export.png b/sprites/UFO-export.png Binary files differnew file mode 100644 index 0000000..3eef517 --- /dev/null +++ b/sprites/UFO-export.png diff --git a/sprites/UFO-export.png.import b/sprites/UFO-export.png.import new file mode 100644 index 0000000..2fcc22a --- /dev/null +++ b/sprites/UFO-export.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/UFO-export.png-25de0e03ca0b44b046ff097da56c4c8b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/UFO-export.png" +dest_files=[ "res://.import/UFO-export.png-25de0e03ca0b44b046ff097da56c4c8b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/arrows.png b/sprites/arrows.png Binary files differnew file mode 100644 index 0000000..3318c05 --- /dev/null +++ b/sprites/arrows.png diff --git a/sprites/arrows.png.import b/sprites/arrows.png.import new file mode 100644 index 0000000..06bbef7 --- /dev/null +++ b/sprites/arrows.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrows.png-b1c3a4ded648549751c70b6336bb41dd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/arrows.png" +dest_files=[ "res://.import/arrows.png-b1c3a4ded648549751c70b6336bb41dd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/aseprites/enemylaser.ase b/sprites/aseprites/enemylaser.ase Binary files differnew file mode 100644 index 0000000..d76f0aa --- /dev/null +++ b/sprites/aseprites/enemylaser.ase diff --git a/sprites/aseprites/shipspin.aseprite b/sprites/aseprites/shipspin.aseprite Binary files differnew file mode 100644 index 0000000..e874555 --- /dev/null +++ b/sprites/aseprites/shipspin.aseprite diff --git a/sprites/aseprites/star.ase b/sprites/aseprites/star.ase Binary files differnew file mode 100644 index 0000000..34d970b --- /dev/null +++ b/sprites/aseprites/star.ase diff --git a/sprites/attakbutton.png b/sprites/attakbutton.png Binary files differnew file mode 100644 index 0000000..264dd61 --- /dev/null +++ b/sprites/attakbutton.png diff --git a/sprites/attakbutton.png.import b/sprites/attakbutton.png.import new file mode 100644 index 0000000..2d3a25e --- /dev/null +++ b/sprites/attakbutton.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/attakbutton.png-1e5294f83c0b7adbe439b1db5c72dbe4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/attakbutton.png" +dest_files=[ "res://.import/attakbutton.png-1e5294f83c0b7adbe439b1db5c72dbe4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/bigenemylasers.png b/sprites/bigenemylasers.png Binary files differnew file mode 100644 index 0000000..1c6f727 --- /dev/null +++ b/sprites/bigenemylasers.png diff --git a/sprites/bigenemylasers.png.import b/sprites/bigenemylasers.png.import new file mode 100644 index 0000000..8aac13d --- /dev/null +++ b/sprites/bigenemylasers.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bigenemylasers.png-b0441a2d713d750f0c3a5e63fd6d5453.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/bigenemylasers.png" +dest_files=[ "res://.import/bigenemylasers.png-b0441a2d713d750f0c3a5e63fd6d5453.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/blackandwhitefball-Sheet.png b/sprites/blackandwhitefball-Sheet.png Binary files differnew file mode 100644 index 0000000..1d6761a --- /dev/null +++ b/sprites/blackandwhitefball-Sheet.png diff --git a/sprites/blackandwhitefball-Sheet.png.import b/sprites/blackandwhitefball-Sheet.png.import new file mode 100644 index 0000000..a03a52f --- /dev/null +++ b/sprites/blackandwhitefball-Sheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/blackandwhitefball-Sheet.png-08e5e128020cd9cf6cead95a8ca6474c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/blackandwhitefball-Sheet.png" +dest_files=[ "res://.import/blackandwhitefball-Sheet.png-08e5e128020cd9cf6cead95a8ca6474c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/blackhoole.png b/sprites/blackhoole.png Binary files differnew file mode 100644 index 0000000..bf0df53 --- /dev/null +++ b/sprites/blackhoole.png diff --git a/sprites/blackhoole.png.import b/sprites/blackhoole.png.import new file mode 100644 index 0000000..c4238dd --- /dev/null +++ b/sprites/blackhoole.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/blackhoole.png-55fb4d810fef52208a6d856ff10db673.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/blackhoole.png" +dest_files=[ "res://.import/blackhoole.png-55fb4d810fef52208a6d856ff10db673.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/boss2.png b/sprites/boss2.png Binary files differnew file mode 100644 index 0000000..5301c4f --- /dev/null +++ b/sprites/boss2.png diff --git a/sprites/boss2.png.import b/sprites/boss2.png.import new file mode 100644 index 0000000..f5747b1 --- /dev/null +++ b/sprites/boss2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/boss2.png-2f0cc49c9b95bdf2eb501ba7f374d405.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/boss2.png" +dest_files=[ "res://.import/boss2.png-2f0cc49c9b95bdf2eb501ba7f374d405.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/bossfinal.png b/sprites/bossfinal.png Binary files differnew file mode 100644 index 0000000..07cd59b --- /dev/null +++ b/sprites/bossfinal.png diff --git a/sprites/bossfinal.png.import b/sprites/bossfinal.png.import new file mode 100644 index 0000000..e690375 --- /dev/null +++ b/sprites/bossfinal.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bossfinal.png-0d5bd56da1c481f0e5ea229599f670c8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/bossfinal.png" +dest_files=[ "res://.import/bossfinal.png-0d5bd56da1c481f0e5ea229599f670c8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/boxchecked.png b/sprites/boxchecked.png Binary files differnew file mode 100644 index 0000000..1ddfc54 --- /dev/null +++ b/sprites/boxchecked.png diff --git a/sprites/boxchecked.png.import b/sprites/boxchecked.png.import new file mode 100644 index 0000000..e71d53f --- /dev/null +++ b/sprites/boxchecked.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/boxchecked.png-2bd6744b0657952d32ac6cfc458e9608.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/boxchecked.png" +dest_files=[ "res://.import/boxchecked.png-2bd6744b0657952d32ac6cfc458e9608.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/boxunchecked.png b/sprites/boxunchecked.png Binary files differnew file mode 100644 index 0000000..0291f4e --- /dev/null +++ b/sprites/boxunchecked.png diff --git a/sprites/boxunchecked.png.import b/sprites/boxunchecked.png.import new file mode 100644 index 0000000..80ae6a8 --- /dev/null +++ b/sprites/boxunchecked.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/boxunchecked.png-6b723660cd7f33d892d93c33c83a53de.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/boxunchecked.png" +dest_files=[ "res://.import/boxunchecked.png-6b723660cd7f33d892d93c33c83a53de.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/changegun.png b/sprites/changegun.png Binary files differnew file mode 100644 index 0000000..2b89ade --- /dev/null +++ b/sprites/changegun.png diff --git a/sprites/changegun.png.import b/sprites/changegun.png.import new file mode 100644 index 0000000..2358e91 --- /dev/null +++ b/sprites/changegun.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/changegun.png-c6384e86cdd8ffc830330fc2868a3c09.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/changegun.png" +dest_files=[ "res://.import/changegun.png-c6384e86cdd8ffc830330fc2868a3c09.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/cursor.png b/sprites/cursor.png Binary files differnew file mode 100644 index 0000000..6f51cc5 --- /dev/null +++ b/sprites/cursor.png diff --git a/sprites/cursor.png.import b/sprites/cursor.png.import new file mode 100644 index 0000000..8fbb3d2 --- /dev/null +++ b/sprites/cursor.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cursor.png-ab659432fe95e81e8963a978cc7193a5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/cursor.png" +dest_files=[ "res://.import/cursor.png-ab659432fe95e81e8963a978cc7193a5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/drone_base.png b/sprites/drone_base.png Binary files differnew file mode 100644 index 0000000..2f1fb49 --- /dev/null +++ b/sprites/drone_base.png diff --git a/sprites/drone_base.png.import b/sprites/drone_base.png.import new file mode 100644 index 0000000..2d8c894 --- /dev/null +++ b/sprites/drone_base.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/drone_base.png-bd0c290d7350f2dc9ea19c1f0748a838.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/drone_base.png" +dest_files=[ "res://.import/drone_base.png-bd0c290d7350f2dc9ea19c1f0748a838.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/emptyheart.png b/sprites/emptyheart.png Binary files differnew file mode 100644 index 0000000..2966bfd --- /dev/null +++ b/sprites/emptyheart.png diff --git a/sprites/emptyheart.png.import b/sprites/emptyheart.png.import new file mode 100644 index 0000000..2ff77d3 --- /dev/null +++ b/sprites/emptyheart.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/emptyheart.png-4c570cbae97ad77ee372005e27288e38.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/emptyheart.png" +dest_files=[ "res://.import/emptyheart.png-4c570cbae97ad77ee372005e27288e38.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/enemy.png b/sprites/enemy.png Binary files differnew file mode 100644 index 0000000..e62ed14 --- /dev/null +++ b/sprites/enemy.png diff --git a/sprites/enemy.png.import b/sprites/enemy.png.import new file mode 100644 index 0000000..27b5a2a --- /dev/null +++ b/sprites/enemy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/enemy.png-03f80dfd1208a1b3024d79304d31759f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/enemy.png" +dest_files=[ "res://.import/enemy.png-03f80dfd1208a1b3024d79304d31759f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/enemylaser-sheet.png b/sprites/enemylaser-sheet.png Binary files differnew file mode 100644 index 0000000..a054eea --- /dev/null +++ b/sprites/enemylaser-sheet.png diff --git a/sprites/enemylaser-sheet.png.import b/sprites/enemylaser-sheet.png.import new file mode 100644 index 0000000..a35eebd --- /dev/null +++ b/sprites/enemylaser-sheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/enemylaser-sheet.png-bd9de81a84bcea7c4276a4d6fcd11c5c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/enemylaser-sheet.png" +dest_files=[ "res://.import/enemylaser-sheet.png-bd9de81a84bcea7c4276a4d6fcd11c5c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/finaaleenemy.png b/sprites/finaaleenemy.png Binary files differnew file mode 100644 index 0000000..d081534 --- /dev/null +++ b/sprites/finaaleenemy.png diff --git a/sprites/finaaleenemy.png.import b/sprites/finaaleenemy.png.import new file mode 100644 index 0000000..dbdd18b --- /dev/null +++ b/sprites/finaaleenemy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/finaaleenemy.png-3914590f015fd8c062e5d5e59b945982.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/finaaleenemy.png" +dest_files=[ "res://.import/finaaleenemy.png-3914590f015fd8c062e5d5e59b945982.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/fullhart.png b/sprites/fullhart.png Binary files differnew file mode 100644 index 0000000..4699df5 --- /dev/null +++ b/sprites/fullhart.png diff --git a/sprites/fullhart.png.import b/sprites/fullhart.png.import new file mode 100644 index 0000000..3cc6137 --- /dev/null +++ b/sprites/fullhart.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fullhart.png-8f24bec2083e4f2c371c31d5cb1b9959.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/fullhart.png" +dest_files=[ "res://.import/fullhart.png-8f24bec2083e4f2c371c31d5cb1b9959.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/glow.png b/sprites/glow.png Binary files differnew file mode 100644 index 0000000..92d7524 --- /dev/null +++ b/sprites/glow.png diff --git a/sprites/glow.png.import b/sprites/glow.png.import new file mode 100644 index 0000000..d1bc5dc --- /dev/null +++ b/sprites/glow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/glow.png-bcf9057dcbc868c06794846f57635757.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/glow.png" +dest_files=[ "res://.import/glow.png-bcf9057dcbc868c06794846f57635757.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/icon.png b/sprites/icon.png Binary files differnew file mode 100644 index 0000000..067b40f --- /dev/null +++ b/sprites/icon.png diff --git a/sprites/icon.png.import b/sprites/icon.png.import new file mode 100644 index 0000000..27f3bbc --- /dev/null +++ b/sprites/icon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-82ea131e750a89467e27b5ff9b11ce77.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/icon.png" +dest_files=[ "res://.import/icon.png-82ea131e750a89467e27b5ff9b11ce77.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/innercircle.png b/sprites/innercircle.png Binary files differnew file mode 100644 index 0000000..2166c1c --- /dev/null +++ b/sprites/innercircle.png diff --git a/sprites/innercircle.png.import b/sprites/innercircle.png.import new file mode 100644 index 0000000..2b4fd57 --- /dev/null +++ b/sprites/innercircle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/innercircle.png-084617e048c3f7b9d2d702f198da4990.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/innercircle.png" +dest_files=[ "res://.import/innercircle.png-084617e048c3f7b9d2d702f198da4990.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/inputs.png b/sprites/inputs.png Binary files differnew file mode 100644 index 0000000..fd34ea3 --- /dev/null +++ b/sprites/inputs.png diff --git a/sprites/inputs.png.import b/sprites/inputs.png.import new file mode 100644 index 0000000..a543c23 --- /dev/null +++ b/sprites/inputs.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/inputs.png-9190b397f521c760a8278093462480c6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/inputs.png" +dest_files=[ "res://.import/inputs.png-9190b397f521c760a8278093462480c6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/laser.png b/sprites/laser.png Binary files differnew file mode 100644 index 0000000..cdb99bd --- /dev/null +++ b/sprites/laser.png diff --git a/sprites/laser.png.import b/sprites/laser.png.import new file mode 100644 index 0000000..5b00af4 --- /dev/null +++ b/sprites/laser.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/laser.png-f4ce210a174cac85145e35b68cb78881.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/laser.png" +dest_files=[ "res://.import/laser.png-f4ce210a174cac85145e35b68cb78881.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/litableenemy.png b/sprites/litableenemy.png Binary files differnew file mode 100644 index 0000000..30f509b --- /dev/null +++ b/sprites/litableenemy.png diff --git a/sprites/litableenemy.png.import b/sprites/litableenemy.png.import new file mode 100644 index 0000000..69c0ee6 --- /dev/null +++ b/sprites/litableenemy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/litableenemy.png-f94977cdff6af4a87b2e53a9507e36b8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/litableenemy.png" +dest_files=[ "res://.import/litableenemy.png-f94977cdff6af4a87b2e53a9507e36b8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/localmultiplayer.png b/sprites/localmultiplayer.png Binary files differnew file mode 100644 index 0000000..ea938dc --- /dev/null +++ b/sprites/localmultiplayer.png diff --git a/sprites/localmultiplayer.png.import b/sprites/localmultiplayer.png.import new file mode 100644 index 0000000..011888e --- /dev/null +++ b/sprites/localmultiplayer.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/localmultiplayer.png-e0d1c5835f92b78be08637e2d4bd1417.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/localmultiplayer.png" +dest_files=[ "res://.import/localmultiplayer.png-e0d1c5835f92b78be08637e2d4bd1417.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/lock.png b/sprites/lock.png Binary files differnew file mode 100644 index 0000000..32c9eaa --- /dev/null +++ b/sprites/lock.png diff --git a/sprites/lock.png.import b/sprites/lock.png.import new file mode 100644 index 0000000..96852d7 --- /dev/null +++ b/sprites/lock.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lock.png-3d7affd92f148181b7af83f7cdbe68b8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/lock.png" +dest_files=[ "res://.import/lock.png-3d7affd92f148181b7af83f7cdbe68b8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/planet.png b/sprites/planet.png Binary files differnew file mode 100644 index 0000000..23c8ebf --- /dev/null +++ b/sprites/planet.png diff --git a/sprites/planet.png.import b/sprites/planet.png.import new file mode 100644 index 0000000..540c57a --- /dev/null +++ b/sprites/planet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/planet.png-6a8dbdae4fae92f9943e4dadb3ddb560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/planet.png" +dest_files=[ "res://.import/planet.png-6a8dbdae4fae92f9943e4dadb3ddb560.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/scroll.png b/sprites/scroll.png Binary files differnew file mode 100644 index 0000000..0fe56be --- /dev/null +++ b/sprites/scroll.png diff --git a/sprites/scroll.png.import b/sprites/scroll.png.import new file mode 100644 index 0000000..451878a --- /dev/null +++ b/sprites/scroll.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scroll.png-144fd1f917f813d32f69a6536159b84b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/scroll.png" +dest_files=[ "res://.import/scroll.png-144fd1f917f813d32f69a6536159b84b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/scrollhighlighted.png b/sprites/scrollhighlighted.png Binary files differnew file mode 100644 index 0000000..fe2dddc --- /dev/null +++ b/sprites/scrollhighlighted.png diff --git a/sprites/scrollhighlighted.png.import b/sprites/scrollhighlighted.png.import new file mode 100644 index 0000000..7c08949 --- /dev/null +++ b/sprites/scrollhighlighted.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scrollhighlighted.png-beab887a264a62245ec30f7740960e1a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/scrollhighlighted.png" +dest_files=[ "res://.import/scrollhighlighted.png-beab887a264a62245ec30f7740960e1a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/ship.png b/sprites/ship.png Binary files differnew file mode 100644 index 0000000..089df60 --- /dev/null +++ b/sprites/ship.png diff --git a/sprites/ship.png.import b/sprites/ship.png.import new file mode 100644 index 0000000..45976bf --- /dev/null +++ b/sprites/ship.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ship.png-4d5e64b785005468aa74f7ca14df1341.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/ship.png" +dest_files=[ "res://.import/ship.png-4d5e64b785005468aa74f7ca14df1341.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/smallparticle.png b/sprites/smallparticle.png Binary files differnew file mode 100644 index 0000000..b5900cd --- /dev/null +++ b/sprites/smallparticle.png diff --git a/sprites/smallparticle.png.import b/sprites/smallparticle.png.import new file mode 100644 index 0000000..fcf94d0 --- /dev/null +++ b/sprites/smallparticle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/smallparticle.png-89307b418d826f6e8d01c7bdf25683ec.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/smallparticle.png" +dest_files=[ "res://.import/smallparticle.png-89307b418d826f6e8d01c7bdf25683ec.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/split.png b/sprites/split.png Binary files differnew file mode 100644 index 0000000..99853a2 --- /dev/null +++ b/sprites/split.png diff --git a/sprites/split.png.import b/sprites/split.png.import new file mode 100644 index 0000000..45c34b1 --- /dev/null +++ b/sprites/split.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/split.png-6a39e8e1f7d76edc03b9e7b061f16fbf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/split.png" +dest_files=[ "res://.import/split.png-6a39e8e1f7d76edc03b9e7b061f16fbf.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/spot.png b/sprites/spot.png Binary files differnew file mode 100644 index 0000000..c2b3fa9 --- /dev/null +++ b/sprites/spot.png diff --git a/sprites/spot.png.import b/sprites/spot.png.import new file mode 100644 index 0000000..60712bc --- /dev/null +++ b/sprites/spot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/spot.png-18511fae98530e22feedc606f2824924.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/spot.png" +dest_files=[ "res://.import/spot.png-18511fae98530e22feedc606f2824924.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/squid.png b/sprites/squid.png Binary files differnew file mode 100644 index 0000000..b4234e5 --- /dev/null +++ b/sprites/squid.png diff --git a/sprites/squid.png.import b/sprites/squid.png.import new file mode 100644 index 0000000..9720843 --- /dev/null +++ b/sprites/squid.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/squid.png-6edc593251b96bade5e011ca7a52bf79.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/squid.png" +dest_files=[ "res://.import/squid.png-6edc593251b96bade5e011ca7a52bf79.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/star.png b/sprites/star.png Binary files differnew file mode 100644 index 0000000..d902017 --- /dev/null +++ b/sprites/star.png diff --git a/sprites/star.png.import b/sprites/star.png.import new file mode 100644 index 0000000..cb96557 --- /dev/null +++ b/sprites/star.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/star.png-b168e13ae1f9d03011573f475e49f2fb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/star.png" +dest_files=[ "res://.import/star.png-b168e13ae1f9d03011573f475e49f2fb.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/start.png b/sprites/start.png Binary files differnew file mode 100644 index 0000000..930080e --- /dev/null +++ b/sprites/start.png diff --git a/sprites/start.png.import b/sprites/start.png.import new file mode 100644 index 0000000..bcc018b --- /dev/null +++ b/sprites/start.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/start.png-2ced13661a0339f8c5d524a89b029731.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/start.png" +dest_files=[ "res://.import/start.png-2ced13661a0339f8c5d524a89b029731.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/stop-2.png b/sprites/stop-2.png Binary files differnew file mode 100644 index 0000000..b5e6f66 --- /dev/null +++ b/sprites/stop-2.png diff --git a/sprites/stop-2.png.import b/sprites/stop-2.png.import new file mode 100644 index 0000000..25cfeae --- /dev/null +++ b/sprites/stop-2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stop-2.png-073a576d977cf7eea27d2d5ef902214d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/stop-2.png" +dest_files=[ "res://.import/stop-2.png-073a576d977cf7eea27d2d5ef902214d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/stop-2rotated.png b/sprites/stop-2rotated.png Binary files differnew file mode 100644 index 0000000..935ba3e --- /dev/null +++ b/sprites/stop-2rotated.png diff --git a/sprites/stop-2rotated.png.import b/sprites/stop-2rotated.png.import new file mode 100644 index 0000000..1b03f21 --- /dev/null +++ b/sprites/stop-2rotated.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stop-2rotated.png-62372a671cb7bd5105356093c5345c71.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/stop-2rotated.png" +dest_files=[ "res://.import/stop-2rotated.png-62372a671cb7bd5105356093c5345c71.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/stop.png b/sprites/stop.png Binary files differnew file mode 100644 index 0000000..6e27800 --- /dev/null +++ b/sprites/stop.png diff --git a/sprites/stop.png.import b/sprites/stop.png.import new file mode 100644 index 0000000..2b570c7 --- /dev/null +++ b/sprites/stop.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stop.png-35629ae652483aa7f0d7e4c6de14434f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/stop.png" +dest_files=[ "res://.import/stop.png-35629ae652483aa7f0d7e4c6de14434f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/stoprotated.png b/sprites/stoprotated.png Binary files differnew file mode 100644 index 0000000..9fba754 --- /dev/null +++ b/sprites/stoprotated.png diff --git a/sprites/stoprotated.png.import b/sprites/stoprotated.png.import new file mode 100644 index 0000000..d4a047f --- /dev/null +++ b/sprites/stoprotated.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stoprotated.png-3aa48c3d65249dde550f820e0cf71c6f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/stoprotated.png" +dest_files=[ "res://.import/stoprotated.png-3aa48c3d65249dde550f820e0cf71c6f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/touchbuttonthing.png b/sprites/touchbuttonthing.png Binary files differnew file mode 100644 index 0000000..7307734 --- /dev/null +++ b/sprites/touchbuttonthing.png diff --git a/sprites/touchbuttonthing.png.import b/sprites/touchbuttonthing.png.import new file mode 100644 index 0000000..1b80b95 --- /dev/null +++ b/sprites/touchbuttonthing.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touchbuttonthing.png-0af972ae6ca601611463fec0d93a9968.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/touchbuttonthing.png" +dest_files=[ "res://.import/touchbuttonthing.png-0af972ae6ca601611463fec0d93a9968.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/transition_left.png b/sprites/transition_left.png Binary files differnew file mode 100644 index 0000000..6aad0f9 --- /dev/null +++ b/sprites/transition_left.png diff --git a/sprites/transition_left.png.import b/sprites/transition_left.png.import new file mode 100644 index 0000000..3d0e616 --- /dev/null +++ b/sprites/transition_left.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/transition_left.png-20d359cd1456f6c8daaf674ccde9220b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/transition_left.png" +dest_files=[ "res://.import/transition_left.png-20d359cd1456f6c8daaf674ccde9220b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/transition_right.png b/sprites/transition_right.png Binary files differnew file mode 100644 index 0000000..4e0c130 --- /dev/null +++ b/sprites/transition_right.png diff --git a/sprites/transition_right.png.import b/sprites/transition_right.png.import new file mode 100644 index 0000000..a0811f5 --- /dev/null +++ b/sprites/transition_right.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/transition_right.png-4233bdb6d98451fb921d3d4c3bfaca4a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/transition_right.png" +dest_files=[ "res://.import/transition_right.png-4233bdb6d98451fb921d3d4c3bfaca4a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/sprites/turret.png b/sprites/turret.png Binary files differnew file mode 100644 index 0000000..b1644cd --- /dev/null +++ b/sprites/turret.png diff --git a/sprites/turret.png.import b/sprites/turret.png.import new file mode 100644 index 0000000..5cc6dbb --- /dev/null +++ b/sprites/turret.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turret.png-40695d9cca6c50c87204953ec994d732.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/turret.png" +dest_files=[ "res://.import/turret.png-40695d9cca6c50c87204953ec994d732.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/ui/buttontheme.tres b/ui/buttontheme.tres new file mode 100644 index 0000000..c56ea05 --- /dev/null +++ b/ui/buttontheme.tres @@ -0,0 +1,111 @@ +[gd_resource type="Theme" load_steps=20 format=2] + +[ext_resource path="res://fonts/04b-19.tres" type="DynamicFont" id=1] +[ext_resource path="res://ui/new_styleboxflat.tres" type="StyleBox" id=2] +[ext_resource path="res://sprites/arrows.png" type="Texture" id=3] +[ext_resource path="res://sprites/boxunchecked.png" type="Texture" id=4] +[ext_resource path="res://sprites/boxchecked.png" type="Texture" id=5] +[ext_resource path="res://sprites/stop-2rotated.png" type="Texture" id=6] +[ext_resource path="res://sprites/stoprotated.png" type="Texture" id=7] +[ext_resource path="res://sprites/scroll.png" type="Texture" id=8] +[ext_resource path="res://sprites/scrollhighlighted.png" type="Texture" id=9] + +[sub_resource type="StyleBoxFlat" id=6] +bg_color = Color( 0.0823529, 0.0823529, 0.0745098, 0.588235 ) +corner_radius_top_left = 1 +corner_radius_top_right = 1 +corner_radius_bottom_right = 1 +corner_radius_bottom_left = 1 +corner_detail = 3 +expand_margin_left = 4.0 +expand_margin_right = 4.0 +expand_margin_top = 4.0 +expand_margin_bottom = 4.0 +anti_aliasing = false + +[sub_resource type="StyleBoxEmpty" id=2] + +[sub_resource type="StyleBoxEmpty" id=5] + +[sub_resource type="StyleBoxEmpty" id=1] + +[sub_resource type="StyleBoxEmpty" id=3] + +[sub_resource type="StyleBoxFlat" id=4] +bg_color = Color( 0, 0, 0, 0.588235 ) +corner_radius_top_left = 1 +corner_radius_top_right = 1 +corner_radius_bottom_right = 1 +corner_radius_bottom_left = 1 +expand_margin_left = 4.0 +expand_margin_right = 4.0 +expand_margin_top = 4.0 +expand_margin_bottom = 4.0 +anti_aliasing = false + +[sub_resource type="StyleBoxTexture" id=7] +texture = ExtResource( 7 ) +region_rect = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="StyleBoxTexture" id=8] +texture = ExtResource( 6 ) +region_rect = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="StyleBoxTexture" id=9] +content_margin_top = 0.0 +content_margin_bottom = 0.0 +texture = ExtResource( 8 ) +region_rect = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="StyleBoxTexture" id=10] +texture = ExtResource( 9 ) +region_rect = Rect2( 0, 0, 16, 16 ) + +[resource] +Button/fonts/font = ExtResource( 1 ) +Button/styles/disabled = SubResource( 6 ) +Button/styles/focus = ExtResource( 2 ) +Button/styles/hover = SubResource( 2 ) +Button/styles/normal = SubResource( 2 ) +Button/styles/pressed = SubResource( 2 ) +CheckBox/icons/checked = ExtResource( 5 ) +CheckBox/icons/unchecked = ExtResource( 4 ) +CheckBox/styles/focus = ExtResource( 2 ) +Label/colors/font_color_shadow = Color( 0, 0, 0, 0.345098 ) +Label/fonts/font = ExtResource( 1 ) +Label/styles/normal = SubResource( 5 ) +OptionButton/colors/font_color = Color( 0.88, 0.88, 0.88, 1 ) +OptionButton/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +OptionButton/colors/font_color_focus = Color( 0.94, 0.94, 0.94, 1 ) +OptionButton/colors/font_color_hover = Color( 0.94, 0.94, 0.94, 1 ) +OptionButton/colors/font_color_pressed = Color( 1, 1, 1, 1 ) +OptionButton/constants/arrow_margin = 2 +OptionButton/constants/hseparation = 2 +OptionButton/fonts/font = ExtResource( 1 ) +OptionButton/icons/arrow = ExtResource( 3 ) +OptionButton/styles/disabled = SubResource( 1 ) +OptionButton/styles/focus = ExtResource( 2 ) +OptionButton/styles/hover = SubResource( 1 ) +OptionButton/styles/normal = SubResource( 1 ) +OptionButton/styles/pressed = SubResource( 1 ) +PopupMenu/fonts/font = ExtResource( 1 ) +PopupMenu/icons/radio_checked = ExtResource( 5 ) +PopupMenu/icons/radio_unchecked = ExtResource( 4 ) +PopupMenu/styles/hover = ExtResource( 2 ) +PopupMenu/styles/labeled_separator_left = SubResource( 3 ) +PopupMenu/styles/labeled_separator_right = SubResource( 3 ) +PopupMenu/styles/panel = SubResource( 4 ) +PopupMenu/styles/panel_disabled = SubResource( 3 ) +PopupMenu/styles/separator = SubResource( 3 ) +ScrollContainer/styles/bg = null +VScrollBar/icons/decrement = null +VScrollBar/icons/decrement_highlight = null +VScrollBar/icons/decrement_pressed = null +VScrollBar/icons/increment = null +VScrollBar/icons/increment_highlight = null +VScrollBar/icons/increment_pressed = null +VScrollBar/styles/grabber = SubResource( 7 ) +VScrollBar/styles/grabber_highlight = SubResource( 8 ) +VScrollBar/styles/grabber_pressed = SubResource( 8 ) +VScrollBar/styles/scroll = SubResource( 9 ) +VScrollBar/styles/scroll_focus = SubResource( 10 ) diff --git a/ui/lock.tres b/ui/lock.tres new file mode 100644 index 0000000..a115a9c --- /dev/null +++ b/ui/lock.tres @@ -0,0 +1,7 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://sprites/lock.png" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 18, 24 ) diff --git a/ui/new_styleboxflat.tres b/ui/new_styleboxflat.tres new file mode 100644 index 0000000..02871b3 --- /dev/null +++ b/ui/new_styleboxflat.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +bg_color = Color( 1, 0.85098, 0.054902, 0.588235 ) +corner_radius_top_left = 1 +corner_radius_top_right = 1 +corner_radius_bottom_right = 1 +corner_radius_bottom_left = 1 +expand_margin_left = 4.0 +expand_margin_right = 4.0 +expand_margin_top = 4.0 +expand_margin_bottom = 4.0 +anti_aliasing = false diff --git a/ui/scenes/GameOverScreen.tscn b/ui/scenes/GameOverScreen.tscn new file mode 100644 index 0000000..61b206e --- /dev/null +++ b/ui/scenes/GameOverScreen.tscn @@ -0,0 +1,2108 @@ +[gd_scene load_steps=411 format=2] + +[ext_resource path="res://fonts/fonty.tres" type="DynamicFont" id=1] +[ext_resource path="res://effects/Stars.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/scripts/GameOverScreen.gd" type="Script" id=3] +[ext_resource path="res://fonts/(16)04B_30__.TTF" type="DynamicFontData" id=4] +[ext_resource path="res://sprites/changegun.png" type="Texture" id=5] +[ext_resource path="res://sprites/blackhoole.png" type="Texture" id=6] +[ext_resource path="res://fonts/04b-19.tres" type="DynamicFont" id=7] + +[sub_resource type="AtlasTexture" id=54] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=55] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=56] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=57] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=58] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=59] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=60] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=61] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=62] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=63] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=64] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=65] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=66] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=67] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=68] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=69] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=70] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=71] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=72] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=73] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=74] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=75] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=76] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=77] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=78] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=79] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=80] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=81] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=82] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=83] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=84] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=85] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=86] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=87] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=88] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=89] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=90] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=91] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=92] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=93] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=94] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=95] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=96] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=97] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=98] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=99] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=100] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=101] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=102] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=103] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=104] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=105] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=106] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=107] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=108] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=109] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=110] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=111] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=112] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=113] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=114] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=115] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=116] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=117] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=118] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=119] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=120] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=121] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=122] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=123] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=124] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=125] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=126] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=127] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=128] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=129] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=130] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=131] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=132] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=133] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=134] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=135] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=136] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=137] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=138] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=139] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=140] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=141] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=142] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=143] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=144] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=145] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=146] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=147] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=148] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=149] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=150] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=151] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=152] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=153] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=154] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=155] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=156] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=157] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=158] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=159] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=160] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=161] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=162] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=163] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=164] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=165] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=166] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=167] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=168] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=169] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=170] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=171] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=172] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=173] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=174] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=175] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=176] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=177] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=178] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=179] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=180] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=181] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=182] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=183] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=184] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=185] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=186] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=187] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=188] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=189] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=190] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=191] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=192] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=193] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=194] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=195] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=196] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=197] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=198] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=199] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=200] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=201] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=202] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=203] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=204] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=205] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=206] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=207] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=208] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=209] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=210] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=211] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=212] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=213] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=214] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=215] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=216] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=217] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=218] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=219] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=220] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=221] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=222] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=223] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=224] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=225] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=226] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=227] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=228] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=229] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=230] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=231] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=232] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=233] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=234] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=235] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=236] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=237] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=238] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=239] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=240] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=241] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=242] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=243] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=244] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=245] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=246] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=247] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=248] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=249] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=250] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=251] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=252] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=253] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=254] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=255] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=256] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=257] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=258] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=259] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=260] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=261] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=262] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=263] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=264] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=265] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=266] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=267] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=268] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=269] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=270] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=271] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=272] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=273] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=274] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=275] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=276] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=277] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=278] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=279] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=280] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=281] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=282] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=283] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=284] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=285] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=286] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=287] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=288] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=289] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=290] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=291] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=292] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=293] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=294] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=295] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=296] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=297] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=298] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=299] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=300] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=301] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=302] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=303] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=304] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=305] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=306] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=307] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=308] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=309] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=310] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=311] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=312] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=313] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=314] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=315] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=316] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=317] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=318] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=319] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=320] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=321] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=322] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=323] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=324] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=325] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=326] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=327] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=328] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=329] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=330] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=331] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=332] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=333] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=334] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=335] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=336] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=337] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=338] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=339] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=340] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=341] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=342] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=343] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=344] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=345] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=346] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=347] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=348] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=349] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=350] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=351] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=352] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=353] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=354] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=355] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=356] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=357] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=358] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=359] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=360] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=361] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=362] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=363] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=364] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=365] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=366] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=367] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=368] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=369] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=370] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=371] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=372] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=373] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=374] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=375] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=376] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=377] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=378] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=379] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=380] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=381] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=382] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=383] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=384] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=385] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=386] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=387] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=388] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=389] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=390] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=391] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=392] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=393] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=394] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=395] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=396] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=397] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=398] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=399] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=400] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=401] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=402] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=403] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=404] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=405] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=406] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=407] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=408] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=409] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=410] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=411] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=412] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=413] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=414] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=415] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=416] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=417] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=418] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=419] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=420] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=421] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=422] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=423] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=424] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=425] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=426] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=427] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=428] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=429] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=430] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=431] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=432] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=433] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=434] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 0, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=435] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 200, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=436] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 400, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=437] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 600, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=438] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 800, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=439] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1000, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=440] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1200, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=441] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1400, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=442] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1600, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=443] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 1800, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=444] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2000, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=445] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2200, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=446] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2400, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=447] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2600, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=448] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 2800, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=449] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3000, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=450] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3200, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=451] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3400, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=452] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3600, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=453] +flags = 2 +atlas = ExtResource( 6 ) +region = Rect2( 3800, 3800, 200, 200 ) + +[sub_resource type="SpriteFrames" id=53] +animations = [ { +"frames": [ SubResource( 54 ), SubResource( 55 ), SubResource( 56 ), SubResource( 57 ), SubResource( 58 ), SubResource( 59 ), SubResource( 60 ), SubResource( 61 ), SubResource( 62 ), SubResource( 63 ), SubResource( 64 ), SubResource( 65 ), SubResource( 66 ), SubResource( 67 ), SubResource( 68 ), SubResource( 69 ), SubResource( 70 ), SubResource( 71 ), SubResource( 72 ), SubResource( 73 ), SubResource( 74 ), SubResource( 75 ), SubResource( 76 ), SubResource( 77 ), SubResource( 78 ), SubResource( 79 ), SubResource( 80 ), SubResource( 81 ), SubResource( 82 ), SubResource( 83 ), SubResource( 84 ), SubResource( 85 ), SubResource( 86 ), SubResource( 87 ), SubResource( 88 ), SubResource( 89 ), SubResource( 90 ), SubResource( 91 ), SubResource( 92 ), SubResource( 93 ), SubResource( 94 ), SubResource( 95 ), SubResource( 96 ), SubResource( 97 ), SubResource( 98 ), SubResource( 99 ), SubResource( 100 ), SubResource( 101 ), SubResource( 102 ), SubResource( 103 ), SubResource( 104 ), SubResource( 105 ), SubResource( 106 ), SubResource( 107 ), SubResource( 108 ), SubResource( 109 ), SubResource( 110 ), SubResource( 111 ), SubResource( 112 ), SubResource( 113 ), SubResource( 114 ), SubResource( 115 ), SubResource( 116 ), SubResource( 117 ), SubResource( 118 ), SubResource( 119 ), SubResource( 120 ), SubResource( 121 ), SubResource( 122 ), SubResource( 123 ), SubResource( 124 ), SubResource( 125 ), SubResource( 126 ), SubResource( 127 ), SubResource( 128 ), SubResource( 129 ), SubResource( 130 ), SubResource( 131 ), SubResource( 132 ), SubResource( 133 ), SubResource( 134 ), SubResource( 135 ), SubResource( 136 ), SubResource( 137 ), SubResource( 138 ), SubResource( 139 ), SubResource( 140 ), SubResource( 141 ), SubResource( 142 ), SubResource( 143 ), SubResource( 144 ), SubResource( 145 ), SubResource( 146 ), SubResource( 147 ), SubResource( 148 ), SubResource( 149 ), SubResource( 150 ), SubResource( 151 ), SubResource( 152 ), SubResource( 153 ), SubResource( 154 ), SubResource( 155 ), SubResource( 156 ), SubResource( 157 ), SubResource( 158 ), SubResource( 159 ), SubResource( 160 ), SubResource( 161 ), SubResource( 162 ), SubResource( 163 ), SubResource( 164 ), SubResource( 165 ), SubResource( 166 ), SubResource( 167 ), SubResource( 168 ), SubResource( 169 ), SubResource( 170 ), SubResource( 171 ), SubResource( 172 ), SubResource( 173 ), SubResource( 174 ), SubResource( 175 ), SubResource( 176 ), SubResource( 177 ), SubResource( 178 ), SubResource( 179 ), SubResource( 180 ), SubResource( 181 ), SubResource( 182 ), SubResource( 183 ), SubResource( 184 ), SubResource( 185 ), SubResource( 186 ), SubResource( 187 ), SubResource( 188 ), SubResource( 189 ), SubResource( 190 ), SubResource( 191 ), SubResource( 192 ), SubResource( 193 ), SubResource( 194 ), SubResource( 195 ), SubResource( 196 ), SubResource( 197 ), SubResource( 198 ), SubResource( 199 ), SubResource( 200 ), SubResource( 201 ), SubResource( 202 ), SubResource( 203 ), SubResource( 204 ), SubResource( 205 ), SubResource( 206 ), SubResource( 207 ), SubResource( 208 ), SubResource( 209 ), SubResource( 210 ), SubResource( 211 ), SubResource( 212 ), SubResource( 213 ), SubResource( 214 ), SubResource( 215 ), SubResource( 216 ), SubResource( 217 ), SubResource( 218 ), SubResource( 219 ), SubResource( 220 ), SubResource( 221 ), SubResource( 222 ), SubResource( 223 ), SubResource( 224 ), SubResource( 225 ), SubResource( 226 ), SubResource( 227 ), SubResource( 228 ), SubResource( 229 ), SubResource( 230 ), SubResource( 231 ), SubResource( 232 ), SubResource( 233 ), SubResource( 234 ), SubResource( 235 ), SubResource( 236 ), SubResource( 237 ), SubResource( 238 ), SubResource( 239 ), SubResource( 240 ), SubResource( 241 ), SubResource( 242 ), SubResource( 243 ), SubResource( 244 ), SubResource( 245 ), SubResource( 246 ), SubResource( 247 ), SubResource( 248 ), SubResource( 249 ), SubResource( 250 ), SubResource( 251 ), SubResource( 252 ), SubResource( 253 ), SubResource( 254 ), SubResource( 255 ), SubResource( 256 ), SubResource( 257 ), SubResource( 258 ), SubResource( 259 ), SubResource( 260 ), SubResource( 261 ), SubResource( 262 ), SubResource( 263 ), SubResource( 264 ), SubResource( 265 ), SubResource( 266 ), SubResource( 267 ), SubResource( 268 ), SubResource( 269 ), SubResource( 270 ), SubResource( 271 ), SubResource( 272 ), SubResource( 273 ), SubResource( 274 ), SubResource( 275 ), SubResource( 276 ), SubResource( 277 ), SubResource( 278 ), SubResource( 279 ), SubResource( 280 ), SubResource( 281 ), SubResource( 282 ), SubResource( 283 ), SubResource( 284 ), SubResource( 285 ), SubResource( 286 ), SubResource( 287 ), SubResource( 288 ), SubResource( 289 ), SubResource( 290 ), SubResource( 291 ), SubResource( 292 ), SubResource( 293 ), SubResource( 294 ), SubResource( 295 ), SubResource( 296 ), SubResource( 297 ), SubResource( 298 ), SubResource( 299 ), SubResource( 300 ), SubResource( 301 ), SubResource( 302 ), SubResource( 303 ), SubResource( 304 ), SubResource( 305 ), SubResource( 306 ), SubResource( 307 ), SubResource( 308 ), SubResource( 309 ), SubResource( 310 ), SubResource( 311 ), SubResource( 312 ), SubResource( 313 ), SubResource( 314 ), SubResource( 315 ), SubResource( 316 ), SubResource( 317 ), SubResource( 318 ), SubResource( 319 ), SubResource( 320 ), SubResource( 321 ), SubResource( 322 ), SubResource( 323 ), SubResource( 324 ), SubResource( 325 ), SubResource( 326 ), SubResource( 327 ), SubResource( 328 ), SubResource( 329 ), SubResource( 330 ), SubResource( 331 ), SubResource( 332 ), SubResource( 333 ), SubResource( 334 ), SubResource( 335 ), SubResource( 336 ), SubResource( 337 ), SubResource( 338 ), SubResource( 339 ), SubResource( 340 ), SubResource( 341 ), SubResource( 342 ), SubResource( 343 ), SubResource( 344 ), SubResource( 345 ), SubResource( 346 ), SubResource( 347 ), SubResource( 348 ), SubResource( 349 ), SubResource( 350 ), SubResource( 351 ), SubResource( 352 ), SubResource( 353 ), SubResource( 354 ), SubResource( 355 ), SubResource( 356 ), SubResource( 357 ), SubResource( 358 ), SubResource( 359 ), SubResource( 360 ), SubResource( 361 ), SubResource( 362 ), SubResource( 363 ), SubResource( 364 ), SubResource( 365 ), SubResource( 366 ), SubResource( 367 ), SubResource( 368 ), SubResource( 369 ), SubResource( 370 ), SubResource( 371 ), SubResource( 372 ), SubResource( 373 ), SubResource( 374 ), SubResource( 375 ), SubResource( 376 ), SubResource( 377 ), SubResource( 378 ), SubResource( 379 ), SubResource( 380 ), SubResource( 381 ), SubResource( 382 ), SubResource( 383 ), SubResource( 384 ), SubResource( 385 ), SubResource( 386 ), SubResource( 387 ), SubResource( 388 ), SubResource( 389 ), SubResource( 390 ), SubResource( 391 ), SubResource( 392 ), SubResource( 393 ), SubResource( 394 ), SubResource( 395 ), SubResource( 396 ), SubResource( 397 ), SubResource( 398 ), SubResource( 399 ), SubResource( 400 ), SubResource( 401 ), SubResource( 402 ), SubResource( 403 ), SubResource( 404 ), SubResource( 405 ), SubResource( 406 ), SubResource( 407 ), SubResource( 408 ), SubResource( 409 ), SubResource( 410 ), SubResource( 411 ), SubResource( 412 ), SubResource( 413 ), SubResource( 414 ), SubResource( 415 ), SubResource( 416 ), SubResource( 417 ), SubResource( 418 ), SubResource( 419 ), SubResource( 420 ), SubResource( 421 ), SubResource( 422 ), SubResource( 423 ), SubResource( 424 ), SubResource( 425 ), SubResource( 426 ), SubResource( 427 ), SubResource( 428 ), SubResource( 429 ), SubResource( 430 ), SubResource( 431 ), SubResource( 432 ), SubResource( 433 ), SubResource( 434 ), SubResource( 435 ), SubResource( 436 ), SubResource( 437 ), SubResource( 438 ), SubResource( 439 ), SubResource( 440 ), SubResource( 441 ), SubResource( 442 ), SubResource( 443 ), SubResource( 444 ), SubResource( 445 ), SubResource( 446 ), SubResource( 447 ), SubResource( 448 ), SubResource( 449 ), SubResource( 450 ), SubResource( 451 ), SubResource( 452 ), SubResource( 453 ) ], +"loop": true, +"name": "hole", +"speed": 35.0 +} ] + +[sub_resource type="DynamicFont" id=1] +size = 34 +font_data = ExtResource( 4 ) + +[sub_resource type="CircleShape2D" id=2] +radius = 30.0 + +[node name="GameOverScreen" type="Node"] +script = ExtResource( 3 ) +hole = true + +[node name="Background" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} + +[node name="Stars" parent="." instance=ExtResource( 2 )] + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +position = Vector2( 296, 112 ) +rotation = 1.5708 +frames = SubResource( 53 ) +animation = "hole" + +[node name="GameOverLabel" type="Label" parent="."] +margin_left = 16.0 +margin_top = 96.0 +margin_right = 232.0 +margin_bottom = 129.0 +custom_fonts/font = SubResource( 1 ) +text = "You died." +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HighscoreLabel" type="Label" parent="."] +margin_left = 8.0 +margin_top = 8.0 +margin_right = 312.0 +margin_bottom = 25.0 +custom_fonts/font = ExtResource( 7 ) +text = "Highscore = " +align = 1 +valign = 1 +autowrap = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Score" type="Label" parent="."] +margin_left = -40.0 +margin_top = 30.0 +margin_right = 272.0 +margin_bottom = 47.0 +custom_fonts/font = ExtResource( 1 ) +text = "Score = " +align = 1 +valign = 1 +autowrap = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Esc" type="Label" parent="."] +margin_left = 64.0 +margin_top = 160.0 +margin_right = 256.0 +margin_bottom = 177.0 +custom_fonts/font = ExtResource( 1 ) +text = "esc to return" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TouchScreenButton" type="TouchScreenButton" parent="."] +position = Vector2( 24, 24 ) +normal = ExtResource( 5 ) +shape = SubResource( 2 ) +action = "ui_cancel" + +[node name="Camera2D" type="Camera2D" parent="."] +position = Vector2( 160, 90 ) diff --git a/ui/scenes/HpUi.tscn b/ui/scenes/HpUi.tscn new file mode 100644 index 0000000..7ba46ed --- /dev/null +++ b/ui/scenes/HpUi.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://sprites/emptyheart.png" type="Texture" id=1] +[ext_resource path="res://sprites/fullhart.png" type="Texture" id=2] +[ext_resource path="res://ui/scripts/HpUi.gd" type="Script" id=3] + +[node name="HpUi" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_right = -277.0 +margin_bottom = -169.0 +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="EmptyHarts" type="TextureRect" parent="."] +margin_right = 43.0 +margin_bottom = 11.0 +texture = ExtResource( 1 ) +expand = true +stretch_mode = 2 + +[node name="FullHarts" type="TextureRect" parent="."] +margin_right = 15.0 +margin_bottom = 11.0 +texture = ExtResource( 2 ) +expand = true +stretch_mode = 2 diff --git a/ui/scenes/MobileControls.tscn b/ui/scenes/MobileControls.tscn new file mode 100644 index 0000000..03592f9 --- /dev/null +++ b/ui/scenes/MobileControls.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/scripts/MobileControls.gd" type="Script" id=1] +[ext_resource path="res://sprites/attakbutton.png" type="Texture" id=2] +[ext_resource path="res://sprites/changegun.png" type="Texture" id=3] + +[sub_resource type="CircleShape2D" id=1] +radius = 24.0 + +[node name="MobileControls" type="CanvasLayer"] +script = ExtResource( 1 ) + +[node name="Attack" type="TouchScreenButton" parent="."] +modulate = Color( 1, 1, 1, 0.392157 ) +position = Vector2( 280, 144 ) +normal = ExtResource( 2 ) +shape = SubResource( 1 ) +passby_press = true +action = "shoot_1" + +[node name="Change gun" type="TouchScreenButton" parent="."] +modulate = Color( 1, 1, 1, 0.392157 ) +position = Vector2( 7, 5 ) +normal = ExtResource( 3 ) +shape = SubResource( 1 ) +passby_press = true +action = "ui_focus_next" diff --git a/ui/scenes/MobileJoystick.tscn b/ui/scenes/MobileJoystick.tscn new file mode 100644 index 0000000..b1a94ed --- /dev/null +++ b/ui/scenes/MobileJoystick.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://sprites/touchbuttonthing.png" type="Texture" id=1] +[ext_resource path="res://sprites/innercircle.png" type="Texture" id=3] +[ext_resource path="res://ui/scripts/Joystick.gd" type="Script" id=4] + +[sub_resource type="CircleShape2D" id=1] +radius = 32.0 + +[node name="MobileJoystick" type="CanvasLayer"] + +[node name="TouchScreenButton" type="TouchScreenButton" parent="."] +modulate = Color( 1, 1, 1, 0.392157 ) +position = Vector2( 8, 104 ) +normal = ExtResource( 1 ) +shape = SubResource( 1 ) +passby_press = true +script = ExtResource( 4 ) + +[node name="Button" type="Sprite" parent="TouchScreenButton"] +position = Vector2( 32, 32 ) +texture = ExtResource( 3 ) diff --git a/ui/scenes/StartMenu.tscn b/ui/scenes/StartMenu.tscn new file mode 100644 index 0000000..1b4ae6c --- /dev/null +++ b/ui/scenes/StartMenu.tscn @@ -0,0 +1,2201 @@ +[gd_scene load_steps=414 format=2] + +[ext_resource path="res://fonts/fonty.tres" type="DynamicFont" id=1] +[ext_resource path="res://ui/scripts/StartMenu.gd" type="Script" id=2] +[ext_resource path="res://effects/Stars.tscn" type="PackedScene" id=3] +[ext_resource path="res://ui/scenes/MobileControls.tscn" type="PackedScene" id=4] +[ext_resource path="res://sprites/blackhoole.png" type="Texture" id=5] +[ext_resource path="res://fonts/Paskowy.ttf" type="DynamicFontData" id=6] +[ext_resource path="res://ui/buttontheme.tres" type="Theme" id=7] +[ext_resource path="res://ui/scenes/pause.tscn" type="PackedScene" id=8] +[ext_resource path="res://sprites/inputs.png" type="Texture" id=9] +[ext_resource path="res://fonts/tiny.tres" type="DynamicFont" id=10] + +[sub_resource type="ShaderMaterial" id=403] + +[sub_resource type="AtlasTexture" id=1] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=2] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=3] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=4] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=5] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=6] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=7] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=8] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=9] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=10] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=11] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=12] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=13] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=14] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=15] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=16] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=17] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=18] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=19] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=20] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 0, 200, 200 ) + +[sub_resource type="AtlasTexture" id=21] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=22] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=23] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=24] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=25] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=26] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=27] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=28] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=29] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=30] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=31] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=32] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=33] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=34] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=35] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=36] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=37] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=38] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=39] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=40] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=41] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=42] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=43] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=44] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=45] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=46] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=47] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=48] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=49] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=50] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=51] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=52] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=53] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=54] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=55] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=56] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=57] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=58] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=59] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=60] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=61] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=62] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=63] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=64] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=65] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=66] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=67] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=68] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=69] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=70] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=71] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=72] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=73] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=74] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=75] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=76] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=77] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=78] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=79] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=80] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=81] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=82] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=83] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=84] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=85] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=86] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=87] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=88] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=89] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=90] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=91] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=92] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=93] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=94] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=95] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=96] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=97] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=98] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=99] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=100] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=101] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=102] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=103] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=104] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=105] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=106] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=107] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=108] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=109] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=110] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=111] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=112] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=113] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=114] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=115] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=116] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=117] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=118] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=119] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=120] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 1000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=121] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=122] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=123] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=124] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=125] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=126] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=127] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=128] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=129] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=130] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=131] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=132] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=133] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=134] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=135] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=136] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=137] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=138] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=139] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=140] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 1200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=141] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=142] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=143] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=144] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=145] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=146] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=147] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=148] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=149] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=150] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=151] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=152] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=153] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=154] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=155] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=156] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=157] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=158] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=159] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=160] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 1400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=161] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=162] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=163] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=164] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=165] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=166] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=167] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=168] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=169] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=170] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=171] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=172] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=173] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=174] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=175] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=176] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=177] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=178] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=179] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=180] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 1600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=181] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=182] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=183] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=184] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=185] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=186] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=187] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=188] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=189] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=190] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=191] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=192] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=193] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=194] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=195] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=196] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=197] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=198] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=199] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=200] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 1800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=201] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=202] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=203] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=204] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=205] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=206] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=207] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=208] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=209] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=210] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=211] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=212] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=213] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=214] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=215] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=216] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=217] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=218] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=219] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=220] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 2000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=221] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=222] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=223] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=224] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=225] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=226] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=227] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=228] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=229] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=230] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=231] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=232] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=233] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=234] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=235] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=236] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=237] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=238] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=239] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=240] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 2200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=241] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=242] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=243] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=244] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=245] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=246] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=247] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=248] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=249] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=250] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=251] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=252] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=253] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=254] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=255] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=256] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=257] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=258] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=259] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=260] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 2400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=261] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=262] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=263] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=264] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=265] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=266] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=267] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=268] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=269] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=270] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=271] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=272] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=273] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=274] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=275] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=276] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=277] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=278] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=279] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=280] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 2600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=281] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=282] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=283] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=284] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=285] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=286] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=287] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=288] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=289] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=290] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=291] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=292] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=293] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=294] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=295] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=296] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=297] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=298] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=299] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=300] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 2800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=301] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=302] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=303] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=304] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=305] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=306] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=307] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=308] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=309] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=310] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=311] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=312] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=313] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=314] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=315] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=316] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=317] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=318] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=319] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=320] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 3000, 200, 200 ) + +[sub_resource type="AtlasTexture" id=321] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=322] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=323] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=324] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=325] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=326] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=327] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=328] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=329] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=330] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=331] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=332] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=333] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=334] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=335] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=336] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=337] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=338] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=339] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=340] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 3200, 200, 200 ) + +[sub_resource type="AtlasTexture" id=341] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=342] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=343] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=344] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=345] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=346] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=347] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=348] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=349] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=350] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=351] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=352] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=353] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=354] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=355] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=356] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=357] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=358] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=359] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=360] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 3400, 200, 200 ) + +[sub_resource type="AtlasTexture" id=361] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=362] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=363] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=364] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=365] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=366] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=367] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=368] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=369] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=370] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=371] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=372] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=373] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=374] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=375] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=376] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=377] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=378] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=379] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=380] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 3600, 200, 200 ) + +[sub_resource type="AtlasTexture" id=381] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 0, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=382] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 200, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=383] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 400, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=384] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 600, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=385] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 800, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=386] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1000, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=387] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1200, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=388] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1400, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=389] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1600, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=390] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 1800, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=391] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2000, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=392] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2200, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=393] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2400, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=394] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2600, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=395] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 2800, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=396] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3000, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=397] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3200, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=398] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3400, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=399] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3600, 3800, 200, 200 ) + +[sub_resource type="AtlasTexture" id=400] +flags = 2 +atlas = ExtResource( 5 ) +region = Rect2( 3800, 3800, 200, 200 ) + +[sub_resource type="SpriteFrames" id=401] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ), SubResource( 29 ), SubResource( 30 ), SubResource( 31 ), SubResource( 32 ), SubResource( 33 ), SubResource( 34 ), SubResource( 35 ), SubResource( 36 ), SubResource( 37 ), SubResource( 38 ), SubResource( 39 ), SubResource( 40 ), SubResource( 41 ), SubResource( 42 ), SubResource( 43 ), SubResource( 44 ), SubResource( 45 ), SubResource( 46 ), SubResource( 47 ), SubResource( 48 ), SubResource( 49 ), SubResource( 50 ), SubResource( 51 ), SubResource( 52 ), SubResource( 53 ), SubResource( 54 ), SubResource( 55 ), SubResource( 56 ), SubResource( 57 ), SubResource( 58 ), SubResource( 59 ), SubResource( 60 ), SubResource( 61 ), SubResource( 62 ), SubResource( 63 ), SubResource( 64 ), SubResource( 65 ), SubResource( 66 ), SubResource( 67 ), SubResource( 68 ), SubResource( 69 ), SubResource( 70 ), SubResource( 71 ), SubResource( 72 ), SubResource( 73 ), SubResource( 74 ), SubResource( 75 ), SubResource( 76 ), SubResource( 77 ), SubResource( 78 ), SubResource( 79 ), SubResource( 80 ), SubResource( 81 ), SubResource( 82 ), SubResource( 83 ), SubResource( 84 ), SubResource( 85 ), SubResource( 86 ), SubResource( 87 ), SubResource( 88 ), SubResource( 89 ), SubResource( 90 ), SubResource( 91 ), SubResource( 92 ), SubResource( 93 ), SubResource( 94 ), SubResource( 95 ), SubResource( 96 ), SubResource( 97 ), SubResource( 98 ), SubResource( 99 ), SubResource( 100 ), SubResource( 101 ), SubResource( 102 ), SubResource( 103 ), SubResource( 104 ), SubResource( 105 ), SubResource( 106 ), SubResource( 107 ), SubResource( 108 ), SubResource( 109 ), SubResource( 110 ), SubResource( 111 ), SubResource( 112 ), SubResource( 113 ), SubResource( 114 ), SubResource( 115 ), SubResource( 116 ), SubResource( 117 ), SubResource( 118 ), SubResource( 119 ), SubResource( 120 ), SubResource( 121 ), SubResource( 122 ), SubResource( 123 ), SubResource( 124 ), SubResource( 125 ), SubResource( 126 ), SubResource( 127 ), SubResource( 128 ), SubResource( 129 ), SubResource( 130 ), SubResource( 131 ), SubResource( 132 ), SubResource( 133 ), SubResource( 134 ), SubResource( 135 ), SubResource( 136 ), SubResource( 137 ), SubResource( 138 ), SubResource( 139 ), SubResource( 140 ), SubResource( 141 ), SubResource( 142 ), SubResource( 143 ), SubResource( 144 ), SubResource( 145 ), SubResource( 146 ), SubResource( 147 ), SubResource( 148 ), SubResource( 149 ), SubResource( 150 ), SubResource( 151 ), SubResource( 152 ), SubResource( 153 ), SubResource( 154 ), SubResource( 155 ), SubResource( 156 ), SubResource( 157 ), SubResource( 158 ), SubResource( 159 ), SubResource( 160 ), SubResource( 161 ), SubResource( 162 ), SubResource( 163 ), SubResource( 164 ), SubResource( 165 ), SubResource( 166 ), SubResource( 167 ), SubResource( 168 ), SubResource( 169 ), SubResource( 170 ), SubResource( 171 ), SubResource( 172 ), SubResource( 173 ), SubResource( 174 ), SubResource( 175 ), SubResource( 176 ), SubResource( 177 ), SubResource( 178 ), SubResource( 179 ), SubResource( 180 ), SubResource( 181 ), SubResource( 182 ), SubResource( 183 ), SubResource( 184 ), SubResource( 185 ), SubResource( 186 ), SubResource( 187 ), SubResource( 188 ), SubResource( 189 ), SubResource( 190 ), SubResource( 191 ), SubResource( 192 ), SubResource( 193 ), SubResource( 194 ), SubResource( 195 ), SubResource( 196 ), SubResource( 197 ), SubResource( 198 ), SubResource( 199 ), SubResource( 200 ), SubResource( 201 ), SubResource( 202 ), SubResource( 203 ), SubResource( 204 ), SubResource( 205 ), SubResource( 206 ), SubResource( 207 ), SubResource( 208 ), SubResource( 209 ), SubResource( 210 ), SubResource( 211 ), SubResource( 212 ), SubResource( 213 ), SubResource( 214 ), SubResource( 215 ), SubResource( 216 ), SubResource( 217 ), SubResource( 218 ), SubResource( 219 ), SubResource( 220 ), SubResource( 221 ), SubResource( 222 ), SubResource( 223 ), SubResource( 224 ), SubResource( 225 ), SubResource( 226 ), SubResource( 227 ), SubResource( 228 ), SubResource( 229 ), SubResource( 230 ), SubResource( 231 ), SubResource( 232 ), SubResource( 233 ), SubResource( 234 ), SubResource( 235 ), SubResource( 236 ), SubResource( 237 ), SubResource( 238 ), SubResource( 239 ), SubResource( 240 ), SubResource( 241 ), SubResource( 242 ), SubResource( 243 ), SubResource( 244 ), SubResource( 245 ), SubResource( 246 ), SubResource( 247 ), SubResource( 248 ), SubResource( 249 ), SubResource( 250 ), SubResource( 251 ), SubResource( 252 ), SubResource( 253 ), SubResource( 254 ), SubResource( 255 ), SubResource( 256 ), SubResource( 257 ), SubResource( 258 ), SubResource( 259 ), SubResource( 260 ), SubResource( 261 ), SubResource( 262 ), SubResource( 263 ), SubResource( 264 ), SubResource( 265 ), SubResource( 266 ), SubResource( 267 ), SubResource( 268 ), SubResource( 269 ), SubResource( 270 ), SubResource( 271 ), SubResource( 272 ), SubResource( 273 ), SubResource( 274 ), SubResource( 275 ), SubResource( 276 ), SubResource( 277 ), SubResource( 278 ), SubResource( 279 ), SubResource( 280 ), SubResource( 281 ), SubResource( 282 ), SubResource( 283 ), SubResource( 284 ), SubResource( 285 ), SubResource( 286 ), SubResource( 287 ), SubResource( 288 ), SubResource( 289 ), SubResource( 290 ), SubResource( 291 ), SubResource( 292 ), SubResource( 293 ), SubResource( 294 ), SubResource( 295 ), SubResource( 296 ), SubResource( 297 ), SubResource( 298 ), SubResource( 299 ), SubResource( 300 ), SubResource( 301 ), SubResource( 302 ), SubResource( 303 ), SubResource( 304 ), SubResource( 305 ), SubResource( 306 ), SubResource( 307 ), SubResource( 308 ), SubResource( 309 ), SubResource( 310 ), SubResource( 311 ), SubResource( 312 ), SubResource( 313 ), SubResource( 314 ), SubResource( 315 ), SubResource( 316 ), SubResource( 317 ), SubResource( 318 ), SubResource( 319 ), SubResource( 320 ), SubResource( 321 ), SubResource( 322 ), SubResource( 323 ), SubResource( 324 ), SubResource( 325 ), SubResource( 326 ), SubResource( 327 ), SubResource( 328 ), SubResource( 329 ), SubResource( 330 ), SubResource( 331 ), SubResource( 332 ), SubResource( 333 ), SubResource( 334 ), SubResource( 335 ), SubResource( 336 ), SubResource( 337 ), SubResource( 338 ), SubResource( 339 ), SubResource( 340 ), SubResource( 341 ), SubResource( 342 ), SubResource( 343 ), SubResource( 344 ), SubResource( 345 ), SubResource( 346 ), SubResource( 347 ), SubResource( 348 ), SubResource( 349 ), SubResource( 350 ), SubResource( 351 ), SubResource( 352 ), SubResource( 353 ), SubResource( 354 ), SubResource( 355 ), SubResource( 356 ), SubResource( 357 ), SubResource( 358 ), SubResource( 359 ), SubResource( 360 ), SubResource( 361 ), SubResource( 362 ), SubResource( 363 ), SubResource( 364 ), SubResource( 365 ), SubResource( 366 ), SubResource( 367 ), SubResource( 368 ), SubResource( 369 ), SubResource( 370 ), SubResource( 371 ), SubResource( 372 ), SubResource( 373 ), SubResource( 374 ), SubResource( 375 ), SubResource( 376 ), SubResource( 377 ), SubResource( 378 ), SubResource( 379 ), SubResource( 380 ), SubResource( 381 ), SubResource( 382 ), SubResource( 383 ), SubResource( 384 ), SubResource( 385 ), SubResource( 386 ), SubResource( 387 ), SubResource( 388 ), SubResource( 389 ), SubResource( 390 ), SubResource( 391 ), SubResource( 392 ), SubResource( 393 ), SubResource( 394 ), SubResource( 395 ), SubResource( 396 ), SubResource( 397 ), SubResource( 398 ), SubResource( 399 ), SubResource( 400 ) ], +"loop": true, +"name": "default", +"speed": 40.0 +} ] + +[sub_resource type="DynamicFont" id=402] +size = 26 +font_data = ExtResource( 6 ) + +[node name="StartMenu" type="Node"] +script = ExtResource( 2 ) + +[node name="ColorRect" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +material = SubResource( 403 ) +position = Vector2( 42, 138 ) +frames = SubResource( 401 ) +flip_h = true + +[node name="label center" type="Label" parent="." groups=["not_mobile"]] +margin_left = 90.0 +margin_top = 51.0 +margin_right = 290.0 +margin_bottom = 68.0 +custom_colors/font_color_shadow = Color( 0.760784, 0.760784, 0.760784, 0.560784 ) +custom_fonts/font = ExtResource( 1 ) +text = "press " +align = 1 +valign = 1 + +[node name="space" type="Sprite" parent="label center" groups=["keyboard"]] +position = Vector2( 154, 9 ) +texture = ExtResource( 9 ) +region_enabled = true +region_rect = Rect2( 0, 64, 48, 16 ) + +[node name="x" type="Sprite" parent="label center" groups=["gamepad"]] +visible = false +position = Vector2( 139, 9 ) +texture = ExtResource( 9 ) +region_enabled = true +region_rect = Rect2( 32, 112, 16, 16 ) + +[node name="space2" type="Label" parent="label center" groups=["keyboard"]] +margin_left = 131.0 +margin_top = 6.0 +margin_right = 177.0 +margin_bottom = 19.0 +custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 10 ) +text = "space +" +align = 1 +valign = 1 + +[node name="escape" type="Label" parent="." groups=["not_mobile"]] +margin_left = 90.0 +margin_top = 72.0 +margin_right = 290.0 +margin_bottom = 109.0 +custom_colors/font_color_shadow = Color( 0.760784, 0.760784, 0.760784, 0.560784 ) +custom_fonts/font = ExtResource( 1 ) +text = " +press " +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="esc" type="Sprite" parent="escape" groups=["keyboard"]] +position = Vector2( 84, 30 ) +texture = ExtResource( 9 ) +region_enabled = true +region_rect = Rect2( 0, 16, 23, 16 ) + +[node name="b" type="Sprite" parent="escape" groups=["gamepad"]] +visible = false +position = Vector2( 83, 31 ) +texture = ExtResource( 9 ) +region_enabled = true +region_rect = Rect2( 16, 112, 16, 16 ) + +[node name="esc2" type="Label" parent="escape" groups=["keyboard"]] +margin_left = 75.0 +margin_top = 23.0 +margin_right = 93.0 +margin_bottom = 36.0 +custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 10 ) +text = "esc" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Stars" parent="." instance=ExtResource( 3 )] + +[node name="Label" type="Label" parent="."] +anchor_right = 1.0 +margin_left = 8.0 +margin_top = 15.0 +margin_bottom = 32.0 +custom_fonts/font = ExtResource( 1 ) +text = "highscore = " +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="MobileControls" parent="." instance=ExtResource( 4 )] + +[node name="Attack" parent="MobileControls" index="0"] +visible = false + +[node name="Change gun" parent="MobileControls" index="1"] +visible = false + +[node name="productions- inc" type="Label" parent="."] +margin_left = 218.0 +margin_top = -21.0 +margin_right = 315.0 +margin_bottom = 14.0 +custom_fonts/font = SubResource( 402 ) +text = "bendn productions" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="settings" type="Label" parent="." groups=["not_mobile"]] +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +margin_left = -56.0 +margin_top = -28.0 +margin_right = 88.0 +margin_bottom = -11.0 +theme = ExtResource( 7 ) +text = "options = " +align = 1 +valign = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Inputs" type="Sprite" parent="settings"] +position = Vector2( 119, 10 ) +texture = ExtResource( 9 ) +region_enabled = true +region_rect = Rect2( 0, 48, 32, 16 ) + +[node name="backspace" type="Label" parent="settings"] +margin_left = 104.0 +margin_top = 3.0 +margin_right = 134.0 +margin_bottom = 16.0 +custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_colors/font_color_shadow = Color( 0, 0, 0, 0 ) +custom_fonts/font = ExtResource( 10 ) +text = "back _" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="pause" parent="." instance=ExtResource( 8 )] +visible = false +trigger = "options" +pausing = false + +[node name="Camera2D" type="Camera2D" parent="."] +position = Vector2( 160, 90 ) + +[editable path="MobileControls"] diff --git a/ui/scenes/UIResolutionSelector.tscn b/ui/scenes/UIResolutionSelector.tscn new file mode 100644 index 0000000..a727171 --- /dev/null +++ b/ui/scenes/UIResolutionSelector.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://ui/scripts/UIResolutionSelector.gd" type="Script" id=1] +[ext_resource path="res://ui/buttontheme.tres" type="Theme" id=5] + +[node name="OptionButton" type="OptionButton"] +margin_right = 72.0 +margin_bottom = 40.0 +theme = ExtResource( 5 ) +custom_constants/arrow_margin = 0 +text = "1280x720" +items = [ "640x300", null, false, 0, null, "1280x720", null, false, 1, null, "1920x1080", null, false, 2, null ] +selected = 1 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[connection signal="item_selected" from="." to="." method="_on_OptionButton_item_selected"] diff --git a/ui/scenes/UiSettingContainer.tscn b/ui/scenes/UiSettingContainer.tscn new file mode 100644 index 0000000..116f404 --- /dev/null +++ b/ui/scenes/UiSettingContainer.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://ui/buttontheme.tres" type="Theme" id=2] + +[node name="CheckBox" type="CheckBox"] +margin_right = 16.0 +margin_bottom = 16.0 +theme = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/ui/scenes/WeaponUi.tscn b/ui/scenes/WeaponUi.tscn new file mode 100644 index 0000000..99b52c5 --- /dev/null +++ b/ui/scenes/WeaponUi.tscn @@ -0,0 +1,84 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://sprites/PlayerMissileIcon.png" type="Texture" id=1] +[ext_resource path="res://sprites/laser.png" type="Texture" id=2] +[ext_resource path="res://sprites/split.png" type="Texture" id=3] +[ext_resource path="res://ui/scripts/WeaponUi.gd" type="Script" id=4] +[ext_resource path="res://sprites/smallparticle.png" type="Texture" id=6] +[ext_resource path="res://sprites/inputs.png" type="Texture" id=7] +[ext_resource path="res://fonts/tiny.tres" type="DynamicFont" id=8] + +[node name="WeaponUi" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_right = -300.0 +margin_bottom = -164.0 +script = ExtResource( 4 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Rocket" type="TextureRect" parent="."] +visible = false +margin_left = 10.0 +margin_right = 18.0 +margin_bottom = 10.0 +rect_rotation = 90.0 +texture = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Laser" type="TextureRect" parent="."] +visible = false +margin_right = 20.0 +margin_bottom = 15.0 +texture = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Split" type="TextureRect" parent="."] +visible = false +margin_right = 20.0 +margin_bottom = 15.0 +texture = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Flak" type="TextureRect" parent="."] +visible = false +margin_right = 20.0 +margin_bottom = 15.0 +texture = ExtResource( 6 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="tab" type="Sprite" parent="." groups=["keyboard"]] +position = Vector2( -15, 9 ) +texture = ExtResource( 7 ) +region_enabled = true +region_rect = Rect2( 0, 16, 23, 16 ) + +[node name="Label" type="Label" parent="tab" groups=["keyboard"]] +margin_left = -11.0 +margin_top = -7.0 +margin_right = 11.0 +margin_bottom = 7.0 +custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "tab" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="y" type="Sprite" parent="." groups=["gamepad"]] +visible = false +position = Vector2( -11, 2 ) +texture = ExtResource( 7 ) +region_enabled = true +region_rect = Rect2( 48, 112, 16, 16 ) diff --git a/ui/scenes/Win.tscn b/ui/scenes/Win.tscn new file mode 100644 index 0000000..1e90c32 --- /dev/null +++ b/ui/scenes/Win.tscn @@ -0,0 +1,72 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://fonts/fonty.tres" type="DynamicFont" id=1] +[ext_resource path="res://fonts/(16)04B_30__.TTF" type="DynamicFontData" id=2] +[ext_resource path="res://ui/scripts/GameOverScreen.gd" type="Script" id=3] +[ext_resource path="res://effects/Stars.tscn" type="PackedScene" id=4] +[ext_resource path="res://sprites/changegun.png" type="Texture" id=5] + +[sub_resource type="DynamicFont" id=1] +size = 32 +font_data = ExtResource( 2 ) + +[sub_resource type="CircleShape2D" id=2] +radius = 30.0 + +[node name="Win" type="Node"] +script = ExtResource( 3 ) + +[node name="ColorRect" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +margin_left = -8.0 +margin_top = 24.0 +margin_right = 312.0 +margin_bottom = 89.0 +custom_fonts/font = SubResource( 1 ) +text = "You win" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label2" type="Label" parent="." groups=["not_mobile"]] +margin_left = 8.0 +margin_top = 88.0 +margin_right = 312.0 +margin_bottom = 176.0 +custom_fonts/font = ExtResource( 1 ) +text = "esc to go back to start screen, not that i assume your going to play again" +autowrap = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HighscoreLabel" type="Label" parent="."] +anchor_right = 1.0 +margin_bottom = 17.0 +custom_fonts/font = ExtResource( 1 ) +text = "highscore goes here" +align = 1 +autowrap = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Stars" parent="." instance=ExtResource( 4 )] + +[node name="TouchScreenButton" type="TouchScreenButton" parent="."] +position = Vector2( 24, 24 ) +normal = ExtResource( 5 ) +shape = SubResource( 2 ) +action = "ui_cancel" + +[node name="Camera2D" type="Camera2D" parent="."] +position = Vector2( 160, 90 ) diff --git a/ui/scenes/levelselect.tscn b/ui/scenes/levelselect.tscn new file mode 100644 index 0000000..a187002 --- /dev/null +++ b/ui/scenes/levelselect.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://sprites/lock.png" type="Texture" id=1] + +[node name="levelselect" type="ColorRect"] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TextureButton" type="TextureButton" parent="."] +margin_left = 16.0 +margin_top = 16.0 +margin_right = 40.0 +margin_bottom = 40.0 +disabled = true +texture_disabled = ExtResource( 1 ) diff --git a/ui/scenes/pause.tscn b/ui/scenes/pause.tscn new file mode 100644 index 0000000..64db343 --- /dev/null +++ b/ui/scenes/pause.tscn @@ -0,0 +1,102 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://sprites/stop.png" type="Texture" id=1] +[ext_resource path="res://ui/scripts/pausemenu.gd" type="Script" id=2] +[ext_resource path="res://ui/buttontheme.tres" type="Theme" id=3] +[ext_resource path="res://fonts/fonty.tres" type="DynamicFont" id=4] +[ext_resource path="res://ui/scenes/settings.tscn" type="PackedScene" id=6] + +[node name="pause" type="Control"] +pause_mode = 2 +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ColorRect" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 0.611765 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="pause_icon" type="Sprite" parent="ColorRect"] +position = Vector2( 303, 164 ) +texture = ExtResource( 1 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="ColorRect"] +anchor_bottom = 1.0 +margin_left = 14.0 +margin_top = 16.0 +margin_right = 88.0 +margin_bottom = -60.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="mainmenu" type="Button" parent="ColorRect/VBoxContainer"] +margin_right = 74.0 +margin_bottom = 14.0 +theme = ExtResource( 3 ) +text = "Main menu" +align = 0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="options" type="Button" parent="ColorRect/VBoxContainer"] +margin_top = 18.0 +margin_right = 74.0 +margin_bottom = 32.0 +theme = ExtResource( 3 ) +text = "Options" +align = 0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="exit" type="Button" parent="ColorRect/VBoxContainer"] +margin_top = 36.0 +margin_right = 74.0 +margin_bottom = 50.0 +theme = ExtResource( 3 ) +text = "exit" +align = 0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="settings" parent="ColorRect" instance=ExtResource( 6 )] +visible = false + +[node name="pause1" type="Label" parent="ColorRect"] +margin_left = 16.0 +margin_top = 155.0 +margin_right = 288.0 +margin_bottom = 172.0 +custom_fonts/font = ExtResource( 4 ) +text = "Paused" +align = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="pause2" type="Label" parent="ColorRect"] +margin_left = 28.0 +margin_top = 133.0 +margin_right = 310.0 +margin_bottom = 150.0 +custom_fonts/font = ExtResource( 4 ) +text = "Press esc to unpause" +__meta__ = { +"_edit_use_anchors_": false +} + +[connection signal="gui_input" from="ColorRect/VBoxContainer/mainmenu" to="." method="_on_mainmenu_gui_input"] +[connection signal="gui_input" from="ColorRect/VBoxContainer/options" to="." method="_on_options_gui_input"] +[connection signal="gui_input" from="ColorRect/VBoxContainer/exit" to="." method="_on_exit_gui_input"] +[connection signal="apply_button_pressed" from="ColorRect/settings" to="." method="_on_settings_apply_button_pressed"] +[connection signal="back" from="ColorRect/settings" to="." method="_on_settings_back"] diff --git a/ui/scenes/settings.tscn b/ui/scenes/settings.tscn new file mode 100644 index 0000000..c220121 --- /dev/null +++ b/ui/scenes/settings.tscn @@ -0,0 +1,183 @@ +[gd_scene load_steps=13 format=2] + +[ext_resource path="res://ui/scripts/settings.gd" type="Script" id=1] +[ext_resource path="res://sprites/stop.png" type="Texture" id=2] +[ext_resource path="res://fonts/fonty.tres" type="DynamicFont" id=4] +[ext_resource path="res://sprites/stop-2.png" type="Texture" id=5] +[ext_resource path="res://ui/scripts/Volume.gd" type="Script" id=6] +[ext_resource path="res://ui/scenes/UiSettingContainer.tscn" type="PackedScene" id=7] +[ext_resource path="res://ui/scenes/UIResolutionSelector.tscn" type="PackedScene" id=8] +[ext_resource path="res://ui/buttontheme.tres" type="Theme" id=9] +[ext_resource path="res://ui/new_styleboxflat.tres" type="StyleBox" id=10] +[ext_resource path="res://effects/Stars.tscn" type="PackedScene" id=12] + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0.898039, 0.898039, 0.898039, 0.854902 ) +corner_radius_top_left = 1 +corner_radius_top_right = 1 +corner_radius_bottom_right = 1 +corner_radius_bottom_left = 1 +expand_margin_left = 4.0 +expand_margin_right = 4.0 +expand_margin_top = 4.0 +expand_margin_bottom = 4.0 +anti_aliasing = false + +[sub_resource type="StyleBoxFlat" id=4] +bg_color = Color( 0.34902, 0.807843, 1, 1 ) +corner_radius_top_left = 1 +corner_radius_top_right = 1 +corner_radius_bottom_right = 1 +corner_radius_bottom_left = 1 +expand_margin_left = 4.0 +expand_margin_right = 4.0 +expand_margin_top = 4.0 +expand_margin_bottom = 4.0 +anti_aliasing = false + +[node name="settings" type="Control"] +pause_mode = 2 +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ColorRect" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Stars" parent="ColorRect" instance=ExtResource( 12 )] +emitting = false + +[node name="label" type="Label" parent="ColorRect"] +margin_left = 90.0 +margin_top = 36.0 +margin_right = 162.0 +margin_bottom = 51.0 +theme = ExtResource( 9 ) +text = "Resolutioេnតថឹ" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VolumeLabel" type="Label" parent="ColorRect"] +margin_left = 120.0 +margin_top = 17.0 +margin_right = 173.0 +margin_bottom = 32.0 +theme = ExtResource( 9 ) +custom_colors/font_color = Color( 1, 0.929412, 0.764706, 1 ) +text = "volume" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="ColorRect"] +margin_left = 16.0 +margin_top = 16.0 +margin_right = 111.0 +margin_bottom = 127.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VolumeSlider" type="HSlider" parent="ColorRect/VBoxContainer"] +margin_right = 95.0 +margin_bottom = 16.0 +focus_neighbour_top = NodePath("../Back") +focus_neighbour_bottom = NodePath("../UIResolutionSelector") +custom_icons/grabber_highlight = ExtResource( 5 ) +custom_icons/grabber = ExtResource( 2 ) +custom_styles/slider = SubResource( 1 ) +custom_styles/grabber_area_highlight = SubResource( 4 ) +custom_styles/grabber_area = ExtResource( 10 ) +max_value = 2.0 +step = 0.05 +script = ExtResource( 6 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="UIResolutionSelector" parent="ColorRect/VBoxContainer" instance=ExtResource( 8 )] +margin_top = 20.0 +margin_right = 67.0 +margin_bottom = 34.0 +focus_neighbour_top = NodePath("../VolumeSlider") +focus_neighbour_bottom = NodePath("../fullscreen") +size_flags_horizontal = 0 +text = "640x300" +items = [ "640x300", null, false, 0, null, "1280x720", null, false, 1, null, "1920x1080", null, false, 2, null ] +selected = 0 + +[node name="fullscreen" parent="ColorRect/VBoxContainer" instance=ExtResource( 7 )] +margin_top = 38.0 +margin_right = 92.0 +margin_bottom = 54.0 +focus_neighbour_top = NodePath("../UIResolutionSelector") +focus_neighbour_bottom = NodePath("../vsync") +size_flags_horizontal = 0 +text = "fullscreen" + +[node name="vsync" parent="ColorRect/VBoxContainer" instance=ExtResource( 7 )] +margin_top = 58.0 +margin_right = 60.0 +margin_bottom = 74.0 +focus_neighbour_top = NodePath("../fullscreen") +focus_neighbour_bottom = NodePath("../Back") +size_flags_horizontal = 0 +text = "Vsync" + +[node name="Back" type="Button" parent="ColorRect/VBoxContainer"] +margin_top = 78.0 +margin_right = 32.0 +margin_bottom = 92.0 +focus_neighbour_top = NodePath("../vsync") +focus_neighbour_bottom = NodePath("../VolumeSlider") +size_flags_horizontal = 0 +theme = ExtResource( 9 ) +text = "Back" +align = 0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="pause2" type="Label" parent="ColorRect"] +margin_left = 6.0 +margin_top = 155.0 +margin_right = 288.0 +margin_bottom = 172.0 +custom_fonts/font = ExtResource( 4 ) +text = "Paused" +align = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="pause" type="Label" parent="ColorRect"] +margin_left = 28.0 +margin_top = 133.0 +margin_right = 310.0 +margin_bottom = 150.0 +custom_fonts/font = ExtResource( 4 ) +text = "Press esc to unpause" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="pause_icon" type="Sprite" parent="ColorRect"] +position = Vector2( 303, 164 ) +scale = Vector2( 1, 0.987089 ) +texture = ExtResource( 2 ) + +[connection signal="gui_input" from="ColorRect/VBoxContainer/VolumeSlider" to="ColorRect/VBoxContainer/VolumeSlider" method="_on_VolumeSlider_gui_input"] +[connection signal="value_changed" from="ColorRect/VBoxContainer/VolumeSlider" to="ColorRect/VBoxContainer/VolumeSlider" method="_on_value_changed"] +[connection signal="resolution_changed" from="ColorRect/VBoxContainer/UIResolutionSelector" to="." method="_on_UIResolutionSelector_resolution_changed"] +[connection signal="toggled" from="ColorRect/VBoxContainer/fullscreen" to="." method="_on_UIFullscreenCheckbox_toggled"] +[connection signal="toggled" from="ColorRect/VBoxContainer/vsync" to="." method="_on_UIVsyncCheckbox_toggled"] +[connection signal="gui_input" from="ColorRect/VBoxContainer/Back" to="." method="_on_Back_gui_input"] diff --git a/ui/scripts/GameOverScreen.gd b/ui/scripts/GameOverScreen.gd new file mode 100644 index 0000000..2c76587 --- /dev/null +++ b/ui/scripts/GameOverScreen.gd @@ -0,0 +1,25 @@ +extends Node +export var hole = false +onready var highscoreLabel = $HighscoreLabel +var USE_TOUCH = OS.has_touchscreen_ui_hint() + + +func _ready(): + $Score.text = ("Score = " + str(playerstats.recent_score)) + set_highscore_label() + $TouchScreenButton.visible = USE_TOUCH + if hole: + $AnimatedSprite.play("hole") + var save_data = SaveAndLoad.load_data_from_file() + if playerstats.recent_score >= save_data.highscore: + $HighscoreLabel.hide() + + +func _input(event): + if event.is_action("ui_cancel"): + Game.transition("res://ui/scenes/StartMenu.tscn") + + +func set_highscore_label(): + var save_data = SaveAndLoad.load_data_from_file() + highscoreLabel.text = "Highscore = " + str(save_data.highscore) diff --git a/ui/scripts/HpUi.gd b/ui/scripts/HpUi.gd new file mode 100644 index 0000000..1d5c6d1 --- /dev/null +++ b/ui/scripts/HpUi.gd @@ -0,0 +1,27 @@ +extends Control + +export var hearts = 5 setget set_hearts +export var max_hearts = 5 setget set_max_hearts +onready var fullHearts = $FullHarts +onready var emptyHearts = $EmptyHarts + + +func set_hearts(value): + hearts = clamp(value, 0, max_hearts) + if fullHearts != null: + fullHearts.rect_size.x = hearts * 15 + + +func set_max_hearts(value): + max_hearts = max(value, 1) + self.hearts = min(hearts, max_hearts) + if emptyHearts != null: + emptyHearts.rect_size.x = max_hearts * 15 + + +func _ready(): + self.hearts = playerstats.hp +# warning-ignore:return_value_discarded + playerstats.connect("hp_changed", self, "set_hearts") +# warning-ignore:return_value_discarded + playerstats.connect("max_hp_changed", self, "set_max_hearts") diff --git a/ui/scripts/Joystick.gd b/ui/scripts/Joystick.gd new file mode 100644 index 0000000..c31ec98 --- /dev/null +++ b/ui/scripts/Joystick.gd @@ -0,0 +1,49 @@ +extends TouchScreenButton + + +func angle_to_vec(angle: float) -> Vector2: + return Vector2(cos(angle), sin(angle)) + + +func weighted_average(a: Vector2, b: Vector2, weight: float) -> Vector2: + return a * weight + b * (1.0 - weight) + + +var radius: float +var center: Vector2 +var event_index = -1 +var in_use: bool = false +var force: Vector2 = Vector2() +onready var FRICTION = 400 + + +func _ready(): + radius = normal.get_width() * global_scale.x / 2 + center = global_position + Vector2(radius, radius) + + +func _input(event): + if event is InputEventScreenDrag || (event is InputEventScreenTouch && event.is_pressed()): + var dist = event.position.distance_to(center) + + if dist <= radius or event.get_index() == event_index: + event_index = event.get_index() + in_use = true + + var clamped_dist = min(dist, radius) + var angle = event.position.angle_to_point(center) + + force = angle_to_vec(angle) * clamped_dist / radius + + $Button.global_position = center + force.normalized() * clamped_dist + + if event is InputEventScreenTouch and !event.is_pressed() and event.get_index() == event_index: + event_index = -1 + in_use = false + + +func _process(delta): + # Return the button to the center of the joystick + if !in_use: + $Button.global_position = weighted_average($Button.global_position, center, 0.7) + force = force.move_toward(Vector2.ZERO, FRICTION * delta) diff --git a/ui/scripts/MobileControls.gd b/ui/scripts/MobileControls.gd new file mode 100644 index 0000000..53faa5e --- /dev/null +++ b/ui/scripts/MobileControls.gd @@ -0,0 +1 @@ +extends CanvasLayer diff --git a/ui/scripts/StartMenu.gd b/ui/scripts/StartMenu.gd new file mode 100644 index 0000000..eeacd32 --- /dev/null +++ b/ui/scripts/StartMenu.gd @@ -0,0 +1,27 @@ +extends Node +var USE_TOUCH = OS.has_touchscreen_ui_hint() +var on = false + +onready var highscoreLabel = $Label + + +func _input(event): + if on: +# warning-ignore:return_value_discarded + if event.is_action("shoot_1"): + Game.transition("res://world/World.tscn") + if event.is_action("ui_cancel"): + Game.exit() + if event.is_action("options"): + $pause.show() + + +func _ready(): + var save_data = SaveAndLoad.load_data_from_file() + highscoreLabel.text = "Highscore = " + str(save_data.highscore) + if USE_TOUCH: + $MobileControls/Attack.visible = true + $AnimatedSprite.play("default") + $MobileControls/Attack.visible = USE_TOUCH + yield(get_tree().create_timer(.3), "timeout") + on = true diff --git a/ui/scripts/UIResolutionSelector.gd b/ui/scripts/UIResolutionSelector.gd new file mode 100644 index 0000000..e01a440 --- /dev/null +++ b/ui/scripts/UIResolutionSelector.gd @@ -0,0 +1,26 @@ +# Scene with an OptionButton to select the resolution from a list of options +extends OptionButton +var focused_now +# Emitted when the selected resolution changes. +signal resolution_changed(new_resolution) + + +func _update_selected_item(text: String) -> void: + # The resolution options are written in the form "XRESxYRES". + # Using `split_floats` we get an array with both values as floats. + var values := text.split_floats("x") + # Emit a signal for informing the newly selected resolution + emit_signal("resolution_changed", Vector2(values[0], values[1])) + + +func _on_OptionButton_item_selected(_index: int) -> void: + _update_selected_item(self.text) + + +func _on_OptionButton_item_focused(index): + focused_now = index + + +func _on_OptionButton_gui_input(event): + if event.is_action("ui_accept") and focused_now != null: + _on_OptionButton_item_selected(focused_now) diff --git a/ui/scripts/Volume.gd b/ui/scripts/Volume.gd new file mode 100644 index 0000000..2ff2ad5 --- /dev/null +++ b/ui/scripts/Volume.gd @@ -0,0 +1,18 @@ +extends HSlider +export var audio_bus_name := "Master" +onready var _bus := AudioServer.get_bus_index(audio_bus_name) + + +func _ready() -> void: + value = db2linear(AudioServer.get_bus_volume_db(_bus)) + + +func _on_value_changed(value: float) -> void: + AudioServer.set_bus_volume_db(_bus, linear2db(value)) + + +func _on_VolumeSlider_gui_input(event): + if event.is_action("ui_left"): + value -= .009 + elif event.is_action("ui_right"): + value += .009 diff --git a/ui/scripts/WeaponUi.gd b/ui/scripts/WeaponUi.gd new file mode 100644 index 0000000..dbcb7cc --- /dev/null +++ b/ui/scripts/WeaponUi.gd @@ -0,0 +1,8 @@ +extends Control + + +func _process(_delta) -> void: + $Laser.visible = playerstats.gun == "lasers" + $Flak.visible = playerstats.gun == "flak" + $Split.visible = playerstats.gun == "splitshot" + $Rocket.visible = playerstats.gun == "rockets" diff --git a/ui/scripts/pausemenu.gd b/ui/scripts/pausemenu.gd new file mode 100644 index 0000000..8becb37 --- /dev/null +++ b/ui/scripts/pausemenu.gd @@ -0,0 +1,66 @@ +extends Control + +var setting = false +export var trigger = "pause" +export var pausing = true + + +func _ready(): + $ColorRect/settings/ColorRect/pause.visible = pausing + $ColorRect/settings/ColorRect/pause2.visible = pausing + $ColorRect/pause1.visible = pausing + $ColorRect/pause2.visible = pausing + $ColorRect/pause_icon.visible = pausing + $ColorRect/settings/ColorRect/pause_icon.visible = pausing + + +func _input(event): + if event.is_action_pressed(trigger): + var new_pause_state = not get_tree().paused + get_tree().paused = new_pause_state + visible = new_pause_state + if new_pause_state: + $ColorRect/VBoxContainer/mainmenu.grab_focus() + $ColorRect/settings/ColorRect/Stars.emitting = true + elif new_pause_state == false: + $ColorRect/settings.hide() + $ColorRect/settings/ColorRect/Stars.emitting = false + + +func _exit_tree(): + get_tree().paused = false + + +func _on_settings_back(): + $ColorRect/settings.visible = false + yield(get_tree().create_timer(.3), "timeout") + $ColorRect/VBoxContainer/mainmenu.grab_focus() + setting = false + + +func update_settings(settings: Dictionary) -> void: + OS.window_fullscreen = settings.fullscreen + OS.set_window_size(settings.resolution) + OS.vsync_enabled = settings.vsync + + +func _on_settings_apply_button_pressed(settings) -> void: + update_settings(settings) + + +# warning-ignore:return_value_discarded +func _on_mainmenu_gui_input(event): + if event.is_action("ui_accept"): + Game.transition("res://ui/scenes/StartMenu.tscn") + + +func _on_options_gui_input(event): + if event.is_action("ui_accept"): + if setting != true: + setting = true + $ColorRect/settings.called() + + +func _on_exit_gui_input(event): + if event.is_action("ui_accept"): + Game.exit() diff --git a/ui/scripts/settings.gd b/ui/scripts/settings.gd new file mode 100644 index 0000000..952024e --- /dev/null +++ b/ui/scripts/settings.gd @@ -0,0 +1,52 @@ +extends Control + +signal back + + +func called(): + self.show() + yield(get_tree().create_timer(.3), "timeout") + $ColorRect/VBoxContainer/Back.grab_focus() + + +func _on_Back_gui_input(event): + if event.is_action("ui_accept"): + emit_signal("back") + + +func controls(): + $"../pause2".hide() + $"../pause1".hide() + + +func uncontrols(): + $"../pause2".show() + $"../pause1".show() + + +signal apply_button_pressed(settings) + +var _settings := {resolution = Vector2(1280, 720), fullscreen = false, vsync = false} + + +func _on_UIResolutionSelector_resolution_changed(new_resolution: Vector2) -> void: + _settings.resolution = new_resolution + emit_signal("apply_button_pressed", _settings) + + +func _on_UIFullscreenCheckbox_toggled(is_button_pressed: bool) -> void: + _settings.fullscreen = is_button_pressed + emit_signal("apply_button_pressed", _settings) + + +func _on_UIVsyncCheckbox_toggled(is_button_pressed: bool) -> void: + _settings.vsync = is_button_pressed + emit_signal("apply_button_pressed", _settings) + + +func _on_InputMenu_controls(): + controls() + + +func _on_InputMenu_uncontrolled(): + uncontrols() diff --git a/world/EnemyHolder.gd b/world/EnemyHolder.gd new file mode 100644 index 0000000..61ec512 --- /dev/null +++ b/world/EnemyHolder.gd @@ -0,0 +1,3 @@ +extends Node2D + +onready var target = get_parent().get_node("CanvasLayer2/Background/Ship") diff --git a/world/World.gd b/world/World.gd new file mode 100644 index 0000000..52cc03e --- /dev/null +++ b/world/World.gd @@ -0,0 +1,88 @@ +extends Node + +var count2 +var count = 0 +var score = 0 setget set_score +var USE_TOUCH = OS.has_touchscreen_ui_hint() +onready var scoreLabel = $CanvasLayer2/Background/ScoreLabel + + +func _ready(): + if playerstats.dev_mode: + $CanvasLayer2/HpUi.hide() + $CanvasLayer2/WeaponUi.hide() + scoreLabel.hide() + + +func _input(event): + if event.is_action("ui_home"): + self.score = 990 + + +func set_score(value): + score = value + update_score_label() + if score >= 1000: + if count2 != 1: + count2 = 1 + var addorno = 1 + if playerstats.hp != playerstats.max_hp: + addorno += 1 + playerstats.max_hp += 1 + playerstats.hp += addorno + if addorno == 2: + announce("congrats on those hearts") + else: + announce("congrats on that heart") + + if score >= 10000: + if count != 1: + count = 1 + var save_data = SaveAndLoad.load_data_from_file() + save_data.unlocked2 = true + SaveAndLoad.save_data_to_file(save_data) + print("saved?") + if score >= 30000: +# warning-ignore:return_value_discarded + Game.transition("res://ui/scenes/Win.tscn") + + +func update_score_label(): + scoreLabel.text = "Score = " + str(score) + + +func update_save_data(): + var save_data = SaveAndLoad.load_data_from_file() + if score > save_data.highscore: + save_data.highscore = score + SaveAndLoad.save_data_to_file(save_data) + + +func _on_Ship_player_death(): + playerstats.max_hp = 3 + playerstats.recent_score = score + $CanvasLayer2/Background/HpUi.visible = false + playerstats.hp = playerstats.max_hp + update_save_data() + yield(get_tree().create_timer(1), "timeout") +# warning-ignore:return_value_discarded + Game.transition("res://ui/scenes/GameOverScreen.tscn") + + +onready var speaker = $CanvasLayer2/Background/anouncementlabel +onready var confetti = $CanvasLayer2/Background/anouncementlabel/confetti + + +func announce(text): + speaker.text = text + confetti.emitting = true + yield(get_tree().create_timer(8), "timeout") + confetti.emitting = false + speaker.text = " " + + +func _process(_delta): + if playerstats.power == true: + $CanvasLayer2/Background/powerup.show() + else: + $CanvasLayer2/Background/powerup.hide() diff --git a/world/World.tscn b/world/World.tscn new file mode 100644 index 0000000..69c5e9c --- /dev/null +++ b/world/World.tscn @@ -0,0 +1,220 @@ +[gd_scene load_steps=16 format=2] + +[ext_resource path="res://world/World.gd" type="Script" id=1] +[ext_resource path="res://ui/scenes/pause.tscn" type="PackedScene" id=2] +[ext_resource path="res://effects/Stars.tscn" type="PackedScene" id=3] +[ext_resource path="res://enemy/scenes/EnemySpawner.tscn" type="PackedScene" id=4] +[ext_resource path="res://ui/scenes/WeaponUi.tscn" type="PackedScene" id=5] +[ext_resource path="res://world/EnemyHolder.gd" type="Script" id=6] +[ext_resource path="res://ui/scenes/HpUi.tscn" type="PackedScene" id=7] +[ext_resource path="res://player/scenes/Ship.tscn" type="PackedScene" id=8] +[ext_resource path="res://fonts/fonty.tres" type="DynamicFont" id=9] +[ext_resource path="res://ui/buttontheme.tres" type="Theme" id=10] +[ext_resource path="res://PowerUp.tscn" type="PackedScene" id=11] + +[sub_resource type="Shader" id=6] +code = "shader_type canvas_item; + +uniform float vignette_intensity = 0.4; +uniform float vignette_opacity : hint_range(0.0, 1.0) = 0.5; +uniform vec4 vignette_rgb : hint_color = vec4(0.0, 0.0, 0.0, 1.0); + +float vignette(vec2 uv){ + uv *= 1.0 - uv.xy; + float vignette = uv.x * uv.y * 15.0; + return pow(vignette, vignette_intensity * vignette_opacity); +} + +void fragment(){ + vec4 color = texture(SCREEN_TEXTURE, SCREEN_UV); + vec4 text = texture(TEXTURE, UV); + + text.rgba *= (vignette_rgb.rgba); + text.rgba *= (1.0 - vignette(UV)); + + COLOR = vec4((text.rgb)*color.rgb,text.a); +}" + +[sub_resource type="ShaderMaterial" id=7] +shader = SubResource( 6 ) +shader_param/vignette_intensity = 4.829 +shader_param/vignette_opacity = 0.12 +shader_param/vignette_rgb = Color( 0, 0, 0, 1 ) + +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 19.125, 183 ) + +[sub_resource type="TileSet" id=5] +0/name = "bitmaskexample.png 0" +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 9, 9 ) +0/tile_mode = 1 +0/autotile/bitmask_mode = 1 +0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 176, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 50, Vector2( 1, 0 ), 56, Vector2( 1, 2 ), 56, Vector2( 2, 0 ), 152, Vector2( 2, 1 ), 146, Vector2( 2, 2 ), 26 ] +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 3, 3 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape_one_way = false +0/shape_one_way_margin = 0.0 +0/shapes = [ ] +0/z_index = 0 + +[node name="World" type="Node" groups=["World"]] +script = ExtResource( 1 ) + +[node name="Camera2D" type="Camera2D" parent="."] +position = Vector2( 160, 90 ) +z_index = 1 +current = true + +[node name="EnemyHolder" type="Node2D" parent="."] +script = ExtResource( 6 ) + +[node name="CanvasLayer2" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="ColorRect" type="ColorRect" parent="CanvasLayer2"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -24.0 +margin_top = -22.0 +margin_right = 28.0 +margin_bottom = 19.0 +color = Color( 0.105882, 0.105882, 0.105882, 1 ) + +[node name="Background" type="Control" parent="CanvasLayer2"] +material = SubResource( 7 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_lock_": true +} + +[node name="WeaponUi" parent="CanvasLayer2/Background" instance=ExtResource( 5 )] +margin_left = 31.0 +margin_top = 5.0 +margin_right = -269.0 +margin_bottom = -159.0 + +[node name="HpUi" parent="CanvasLayer2/Background" instance=ExtResource( 7 )] +margin_left = 242.0 +margin_top = 5.0 +margin_right = -11.0 +margin_bottom = -164.0 + +[node name="ScoreLabel" type="Label" parent="CanvasLayer2/Background"] +anchor_right = 1.0 +margin_left = 57.0 +margin_top = 5.0 +margin_right = -80.0 +margin_bottom = 22.0 +custom_fonts/font = ExtResource( 9 ) +text = "Score = 0" +align = 1 +autowrap = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="powerup" type="Label" parent="CanvasLayer2/Background"] +visible = false +anchor_right = 1.0 +margin_left = 134.0 +margin_top = 156.0 +margin_right = -3.0 +margin_bottom = 173.0 +custom_fonts/font = ExtResource( 9 ) +text = "POWER UP!!!" +align = 1 +autowrap = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Stars" parent="CanvasLayer2/Background" instance=ExtResource( 3 )] + +[node name="EnemySpawner" parent="CanvasLayer2/Background" instance=ExtResource( 4 )] +position = Vector2( 320, 0 ) + +[node name="walls" type="StaticBody2D" parent="CanvasLayer2/Background"] +position = Vector2( -15, 0 ) +collision_layer = 8 +collision_mask = 16 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasLayer2/Background/walls"] +position = Vector2( -3, 80 ) +shape = SubResource( 4 ) + +[node name="left" type="Position2D" parent="CanvasLayer2/Background/walls/CollisionShape2D"] +position = Vector2( 19, -79 ) + +[node name="bottom" type="Position2D" parent="CanvasLayer2/Background/walls/CollisionShape2D"] +position = Vector2( 19, 100 ) + +[node name="CollisionShape2D4" type="CollisionShape2D" parent="CanvasLayer2/Background/walls"] +position = Vector2( 378, 90 ) +shape = SubResource( 4 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="CanvasLayer2/Background/walls"] +position = Vector2( 175, 198 ) +rotation = 1.5708 +shape = SubResource( 4 ) + +[node name="CollisionShape2D3" type="CollisionShape2D" parent="CanvasLayer2/Background/walls"] +position = Vector2( 175, -18 ) +rotation = 1.5708 +shape = SubResource( 4 ) + +[node name="pause" parent="CanvasLayer2/Background" instance=ExtResource( 2 )] +visible = false + +[node name="anouncementlabel" type="Label" parent="CanvasLayer2/Background"] +margin_left = 3.0 +margin_top = 163.0 +margin_right = 189.0 +margin_bottom = 177.0 +theme = ExtResource( 10 ) +align = 1 + +[node name="confetti" type="CPUParticles2D" parent="CanvasLayer2/Background/anouncementlabel"] +show_behind_parent = true +position = Vector2( 83, 2 ) +emitting = false +amount = 80 +emission_shape = 2 +emission_rect_extents = Vector2( 80, 2 ) +direction = Vector2( 0, -1 ) +spread = 140.0 +gravity = Vector2( 0, -50 ) +initial_velocity = 20.0 +linear_accel = 20.0 +scale_amount = 3.0 +scale_amount_random = 1.0 +color = Color( 0.968627, 0, 1, 1 ) +hue_variation = 1.0 +hue_variation_random = 1.0 + +[node name="Ship" parent="CanvasLayer2/Background" instance=ExtResource( 8 )] +position = Vector2( 25, 77 ) +z_index = 1 + +[node name="TileMap" type="TileMap" parent="."] +tile_set = SubResource( 5 ) +cell_size = Vector2( 3, 3 ) +format = 1 +tile_data = PoolIntArray( 5177420, 0, 0, 5177421, 0, 0, 5177422, 0, 0, 5177423, 0, 0, 5177424, 0, 0, 5242956, 0, 0, 5242960, 0, 0, 5308492, 0, 0, 5308496, 0, 0, 5374028, 0, 0, 5374029, 0, 0, 5374030, 0, 0, 5374031, 0, 0, 5374032, 0, 0 ) + +[node name="PowerUp" parent="." instance=ExtResource( 11 )] +position = Vector2( 226, 57 ) + +[connection signal="player_death" from="CanvasLayer2/Background/Ship" to="." method="_on_Ship_player_death"] |