commit 6a269eb236b1175358049e8c11b8e9808b4a4656 Author: pennyrigate Date: Sat Jul 19 16:54:36 2025 -0400 clegg diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/audio/music/Jack Bros. (VB) OST - Level 2 (Grim Reaper's Cavern).mp3 b/audio/music/Jack Bros. (VB) OST - Level 2 (Grim Reaper's Cavern).mp3 new file mode 100644 index 0000000..2214876 Binary files /dev/null and b/audio/music/Jack Bros. (VB) OST - Level 2 (Grim Reaper's Cavern).mp3 differ diff --git a/audio/music/Jack Bros. (VB) OST - Level 2 (Grim Reaper's Cavern).mp3.import b/audio/music/Jack Bros. (VB) OST - Level 2 (Grim Reaper's Cavern).mp3.import new file mode 100644 index 0000000..1ca723b --- /dev/null +++ b/audio/music/Jack Bros. (VB) OST - Level 2 (Grim Reaper's Cavern).mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://cqgbxo5ljtst1" +path="res://.godot/imported/Jack Bros. (VB) OST - Level 2 (Grim Reaper's Cavern).mp3-3091257e7b0c23410e159691a08523a9.mp3str" + +[deps] + +source_file="res://audio/music/Jack Bros. (VB) OST - Level 2 (Grim Reaper's Cavern).mp3" +dest_files=["res://.godot/imported/Jack Bros. (VB) OST - Level 2 (Grim Reaper's Cavern).mp3-3091257e7b0c23410e159691a08523a9.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/audio/sfx/graze.wav b/audio/sfx/graze.wav new file mode 100644 index 0000000..442476a Binary files /dev/null and b/audio/sfx/graze.wav differ diff --git a/audio/sfx/graze.wav.import b/audio/sfx/graze.wav.import new file mode 100644 index 0000000..5e0adc1 --- /dev/null +++ b/audio/sfx/graze.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bv6v7v5dtvoii" +path="res://.godot/imported/graze.wav-b4966ab8ac14ec395505b34def6a89d2.sample" + +[deps] + +source_file="res://audio/sfx/graze.wav" +dest_files=["res://.godot/imported/graze.wav-b4966ab8ac14ec395505b34def6a89d2.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=2 diff --git a/audio/sfx/jetpack.ogg b/audio/sfx/jetpack.ogg new file mode 100644 index 0000000..2d7adc4 Binary files /dev/null and b/audio/sfx/jetpack.ogg differ diff --git a/audio/sfx/jetpack.ogg.import b/audio/sfx/jetpack.ogg.import new file mode 100644 index 0000000..393f1ed --- /dev/null +++ b/audio/sfx/jetpack.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bhy8i7yg863n3" +path="res://.godot/imported/jetpack.ogg-2c15c13295eac12b575c2dbc89333766.oggvorbisstr" + +[deps] + +source_file="res://audio/sfx/jetpack.ogg" +dest_files=["res://.godot/imported/jetpack.ogg-2c15c13295eac12b575c2dbc89333766.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.6 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/audio/sfx/key.ogg b/audio/sfx/key.ogg new file mode 100644 index 0000000..e0cac37 Binary files /dev/null and b/audio/sfx/key.ogg differ diff --git a/audio/sfx/key.ogg.import b/audio/sfx/key.ogg.import new file mode 100644 index 0000000..cc97fd6 --- /dev/null +++ b/audio/sfx/key.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://c7h4qdg8gtnhk" +path="res://.godot/imported/key.ogg-8695dfd3e7e7137b1f9aef8dd154957d.oggvorbisstr" + +[deps] + +source_file="res://audio/sfx/key.ogg" +dest_files=["res://.godot/imported/key.ogg-8695dfd3e7e7137b1f9aef8dd154957d.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/audio/sfx/se_g2.ogg b/audio/sfx/se_g2.ogg new file mode 100644 index 0000000..111a1c0 Binary files /dev/null and b/audio/sfx/se_g2.ogg differ diff --git a/audio/sfx/se_g2.ogg.import b/audio/sfx/se_g2.ogg.import new file mode 100644 index 0000000..7c3cb6f --- /dev/null +++ b/audio/sfx/se_g2.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://ct82ub5u2uoly" +path="res://.godot/imported/se_g2.ogg-4df37f1bf3086aadd97a824097bb1dfa.oggvorbisstr" + +[deps] + +source_file="res://audio/sfx/se_g2.ogg" +dest_files=["res://.godot/imported/se_g2.ogg-4df37f1bf3086aadd97a824097bb1dfa.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/ball_world.png b/ball_world.png new file mode 100644 index 0000000..ca6a684 Binary files /dev/null and b/ball_world.png differ diff --git a/ball_world.png.import b/ball_world.png.import new file mode 100644 index 0000000..1f1aa57 --- /dev/null +++ b/ball_world.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckoq6h6nlyhq4" +path="res://.godot/imported/ball_world.png-014544f3f3132b720d65f63b82ca932b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ball_world.png" +dest_files=["res://.godot/imported/ball_world.png-014544f3f3132b720d65f63b82ca932b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/bat/bat.gd b/bat/bat.gd new file mode 100644 index 0000000..aa59171 --- /dev/null +++ b/bat/bat.gd @@ -0,0 +1,28 @@ +extends Node2D + +@onready var startpos = position +@export var speed = 1.0 +@export var sine_distance = 64.0 +@export var shoot_cooldown = 1.0 +const BULLET = preload("res://bat/bat_bullet/bat_bullet.tscn") + +# Called when the node enters the scene tree for the first time. +func _ready(): + %ShootTimer.start(shoot_cooldown) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _physics_process(delta): + var sine = sin(Time.get_ticks_msec() / 300.0) * sine_distance + position.y = startpos.y + sine + + +func _on_shoot_timer_timeout() -> void: + var player = get_owner().get_node("Player") + var bullet = BULLET.instantiate() + bullet.global_position = global_position + get_parent().add_child(bullet) + if player.position.x < position.x: + bullet.direction = -1 + else: + bullet.direction = 1 diff --git a/bat/bat.gd.uid b/bat/bat.gd.uid new file mode 100644 index 0000000..0aedf56 --- /dev/null +++ b/bat/bat.gd.uid @@ -0,0 +1 @@ +uid://dibk7l4v1bbm diff --git a/bat/bat.tscn b/bat/bat.tscn new file mode 100644 index 0000000..d6d76d9 --- /dev/null +++ b/bat/bat.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=5 format=3 uid="uid://n8d1t160vvln"] + +[ext_resource type="Script" uid="uid://dibk7l4v1bbm" path="res://bat/bat.gd" id="1_dj6ma"] +[ext_resource type="Texture2D" uid="uid://1gfwereeox0m" path="res://gren.png" id="4_eu2gq"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_libqc"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("4_eu2gq") +}, { +"duration": 1.0, +"texture": ExtResource("4_eu2gq") +}, { +"duration": 1.0, +"texture": ExtResource("4_eu2gq") +}, { +"duration": 1.0, +"texture": ExtResource("4_eu2gq") +}, { +"duration": 1.0, +"texture": ExtResource("4_eu2gq") +}, { +"duration": 1.0, +"texture": ExtResource("4_eu2gq") +}], +"loop": true, +"name": &"default", +"speed": 30.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_5bpm1"] +size = Vector2(16, 16) + +[node name="Bat" type="Node2D"] +script = ExtResource("1_dj6ma") +speed = 2.0 +sine_distance = 32.0 + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +sprite_frames = SubResource("SpriteFrames_libqc") +autoplay = "default" +frame_progress = 0.659971 + +[node name="Area2D" type="Area2D" parent="." groups=["death", "enemy_hitbox"]] +collision_layer = 8 +collision_mask = 17 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource("RectangleShape2D_5bpm1") + +[node name="ShootTimer" type="Timer" parent="."] +unique_name_in_owner = true + +[connection signal="timeout" from="ShootTimer" to="." method="_on_shoot_timer_timeout"] diff --git a/bat/bat_bullet/bat_bullet.gd b/bat/bat_bullet/bat_bullet.gd new file mode 100644 index 0000000..dc57df9 --- /dev/null +++ b/bat/bat_bullet/bat_bullet.gd @@ -0,0 +1,12 @@ +extends Node2D + +@export var speed = 100.0 +@export var direction = 1 +var grazed = false + +func _physics_process(delta: float) -> void: + position.x += (speed * direction) * delta + + +func _on_area_2d_body_entered(body: Node2D) -> void: + if !body.is_in_group("player_hitbox"): queue_free() diff --git a/bat/bat_bullet/bat_bullet.gd.uid b/bat/bat_bullet/bat_bullet.gd.uid new file mode 100644 index 0000000..acc48f7 --- /dev/null +++ b/bat/bat_bullet/bat_bullet.gd.uid @@ -0,0 +1 @@ +uid://dwqt7eu84wgv7 diff --git a/bat/bat_bullet/bat_bullet.tscn b/bat/bat_bullet/bat_bullet.tscn new file mode 100644 index 0000000..eb58d67 --- /dev/null +++ b/bat/bat_bullet/bat_bullet.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=3 uid="uid://jf4rxymi15id"] + +[ext_resource type="Script" uid="uid://dwqt7eu84wgv7" path="res://bat/bat_bullet/bat_bullet.gd" id="1_bopwj"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_pxoj5"] +size = Vector2(8, 4) + +[node name="BatBullet" type="Node2D"] +script = ExtResource("1_bopwj") + +[node name="ColorRect" type="ColorRect" parent="."] +offset_left = -4.0 +offset_top = -2.0 +offset_right = 4.0 +offset_bottom = 2.0 + +[node name="Area2D" type="Area2D" parent="." groups=["enemy_bullet", "hurt"]] +collision_layer = 8 +collision_mask = 19 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource("RectangleShape2D_pxoj5") + +[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"] diff --git a/block.png b/block.png new file mode 100644 index 0000000..1f2e21b Binary files /dev/null and b/block.png differ diff --git a/block.png.import b/block.png.import new file mode 100644 index 0000000..be37d6a --- /dev/null +++ b/block.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dla2vwxy8vmt8" +path="res://.godot/imported/block.png-b7fed0a755ada244f74f9622a987e81f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://block.png" +dest_files=["res://.godot/imported/block.png-b7fed0a755ada244f74f9622a987e81f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/camera/camera.gd b/camera/camera.gd new file mode 100644 index 0000000..c4d1733 --- /dev/null +++ b/camera/camera.gd @@ -0,0 +1,4 @@ +extends Camera2D + +func _physics_process(delta: float) -> void: + global_position = get_owner().get_node("Player").global_position diff --git a/camera/camera.gd.uid b/camera/camera.gd.uid new file mode 100644 index 0000000..5773760 --- /dev/null +++ b/camera/camera.gd.uid @@ -0,0 +1 @@ +uid://d0c1e68rgp1tw diff --git a/default_bus_layout.tres b/default_bus_layout.tres new file mode 100644 index 0000000..160ca57 --- /dev/null +++ b/default_bus_layout.tres @@ -0,0 +1,32 @@ +[gd_resource type="AudioBusLayout" load_steps=3 format=3 uid="uid://cbv1d76xmbsru"] + +[sub_resource type="AudioEffectReverb" id="AudioEffectReverb_j3pel"] +resource_name = "Reverb" + +[sub_resource type="AudioEffectChorus" id="AudioEffectChorus_j3pel"] +resource_name = "Chorus" + +[resource] +bus/0/volume_db = -10.9863 +bus/1/name = &"SFX" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = 0.0 +bus/1/send = &"Master" +bus/2/name = &"Jetpack" +bus/2/solo = false +bus/2/mute = false +bus/2/bypass_fx = false +bus/2/volume_db = -18.3091 +bus/2/send = &"SFX" +bus/2/effect/0/effect = SubResource("AudioEffectReverb_j3pel") +bus/2/effect/0/enabled = false +bus/2/effect/1/effect = SubResource("AudioEffectChorus_j3pel") +bus/2/effect/1/enabled = true +bus/3/name = &"Music" +bus/3/solo = false +bus/3/mute = false +bus/3/bypass_fx = false +bus/3/volume_db = -11.4678 +bus/3/send = &"Master" diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..b56b036 --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,66 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../demos/cool.exe" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" diff --git a/globals/global_functions.gd b/globals/global_functions.gd new file mode 100644 index 0000000..782abb2 --- /dev/null +++ b/globals/global_functions.gd @@ -0,0 +1,22 @@ +extends Node + +func queue_score(amount): + GlobalStats.score_to_add += amount + GlobalStats.score_multiplier *= 1.1 + var hud = get_tree().get_nodes_in_group("hud")[0] + hud.multiplier_anims.stop() + hud.multiplier_anims.play("multiplier_grow") + +func append_score(): + GlobalStats.score += GlobalStats.score_to_add + GlobalStats.score_to_add = 0 + GlobalStats.score_multiplier = 1.0 + var hud = get_tree().get_nodes_in_group("hud")[0] + +func _process(delta: float) -> void: + if Input.is_action_just_pressed("fullscreen"): + if DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_WINDOWED: + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) + else: + DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) + diff --git a/globals/global_functions.gd.uid b/globals/global_functions.gd.uid new file mode 100644 index 0000000..18c8791 --- /dev/null +++ b/globals/global_functions.gd.uid @@ -0,0 +1 @@ +uid://bsjfyh8x2hk32 diff --git a/globals/global_stats.gd b/globals/global_stats.gd new file mode 100644 index 0000000..3feab43 --- /dev/null +++ b/globals/global_stats.gd @@ -0,0 +1,5 @@ +extends Node + +var score:int = 0 +var score_to_add:int = 0 +var score_multiplier:float = 1.0 diff --git a/globals/global_stats.gd.uid b/globals/global_stats.gd.uid new file mode 100644 index 0000000..b748088 --- /dev/null +++ b/globals/global_stats.gd.uid @@ -0,0 +1 @@ +uid://d3y3o1487oqfy diff --git a/gren.png b/gren.png new file mode 100644 index 0000000..f968c79 Binary files /dev/null and b/gren.png differ diff --git a/gren.png.import b/gren.png.import new file mode 100644 index 0000000..406e009 --- /dev/null +++ b/gren.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1gfwereeox0m" +path="res://.godot/imported/gren.png-4d6211da3aba347e96eb6ee724ee433d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gren.png" +dest_files=["res://.godot/imported/gren.png-4d6211da3aba347e96eb6ee724ee433d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..086a99b --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dq1op562cs6s8" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/main.gd b/main.gd new file mode 100644 index 0000000..6de7188 --- /dev/null +++ b/main.gd @@ -0,0 +1,4 @@ +extends Node2D + +func _ready(): + GlobalStats.score = 0 diff --git a/main.gd.uid b/main.gd.uid new file mode 100644 index 0000000..8ce4dfe --- /dev/null +++ b/main.gd.uid @@ -0,0 +1 @@ +uid://ceuwfjhqeucpr diff --git a/main.tscn b/main.tscn new file mode 100644 index 0000000..e456610 --- /dev/null +++ b/main.tscn @@ -0,0 +1,145 @@ +[gd_scene load_steps=13 format=4 uid="uid://cbmgdd1gbmh1x"] + +[ext_resource type="Texture2D" uid="uid://ckoq6h6nlyhq4" path="res://ball_world.png" id="1_0xm2m"] +[ext_resource type="Script" uid="uid://ceuwfjhqeucpr" path="res://main.gd" id="1_efxa6"] +[ext_resource type="PackedScene" uid="uid://e2tevu6gn5si" path="res://objects/player/player.tscn" id="1_ig7tw"] +[ext_resource type="PackedScene" uid="uid://by8rt0eurn0uh" path="res://ui/hud.tscn" id="3_7mycd"] +[ext_resource type="Script" uid="uid://d0c1e68rgp1tw" path="res://camera/camera.gd" id="3_272bh"] +[ext_resource type="TileSet" uid="uid://cbvgfixmub3am" path="res://tilesets/tile.tres" id="3_h2yge"] +[ext_resource type="PackedScene" uid="uid://n8d1t160vvln" path="res://bat/bat.tscn" id="4_1bvp3"] +[ext_resource type="TileSet" uid="uid://kdpofvscbp6m" path="res://tilesets/death.tres" id="4_lquwl"] +[ext_resource type="PackedScene" uid="uid://bskdt3t8fae6m" path="res://objects/scoreitem/scoreitem.tscn" id="8_5vw27"] +[ext_resource type="PackedScene" uid="uid://bsmmvt6hf6m5b" path="res://objects/scoreitem/scoreitem_particles.tscn" id="9_kek77"] +[ext_resource type="AudioStream" uid="uid://cqgbxo5ljtst1" path="res://audio/music/Jack Bros. (VB) OST - Level 2 (Grim Reaper's Cavern).mp3" id="10_4c57u"] + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_0xm2m"] + +[node name="Main" type="Node2D"] +script = ExtResource("1_efxa6") + +[node name="CanvasLayer2" type="CanvasLayer" parent="."] +layer = -1 + +[node name="TextureRect" type="TextureRect" parent="CanvasLayer2"] +offset_left = -56531.0 +offset_top = -32245.0 +offset_right = 49221.0 +offset_bottom = 37057.0 +texture = ExtResource("1_0xm2m") +stretch_mode = 1 + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="Hud" parent="CanvasLayer" instance=ExtResource("3_7mycd")] + +[node name="Camera2D" type="Camera2D" parent="."] +offset = Vector2(40, 90) +position_smoothing_enabled = true +rotation_smoothing_speed = 2.0 +script = ExtResource("3_272bh") + +[node name="Player" parent="." instance=ExtResource("1_ig7tw")] +position = Vector2(69, 64) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] +physics_material_override = SubResource("PhysicsMaterial_0xm2m") + +[node name="Layer0" type="TileMapLayer" parent="."] +use_parent_material = true +tile_map_data = PackedByteArray("AAAHAAMAAQAAAAAAAAAIAAMAAQAAAAAAAAAJAAMAAQAAAAAAAAAKAAMAAQAAAAAAAAALAAMAAQAAAAAAAAAMAAMAAQAAAAAAAAANAAMAAQAAAAAAAAAOAAMAAQAAAAAAAAAPAAMAAQAAAAAAAAAQAAMAAQAAAAAAAAASAAMAAQAAAAAAAAARAAMAAQAAAAAAAAAIAAIAAQAAAAAAAAAIAAEAAQAAAAAAAAAJAAAAAQAAAAAAAAAIAAAAAQAAAAAAAAAJAAEAAQAAAAAAAAAJAAIAAQAAAAAAAAAKAAEAAQAAAAAAAAAKAAAAAQAAAAAAAAAKAAIAAQAAAAAAAAALAAIAAQAAAAAAAAALAAEAAQAAAAAAAAALAAAAAQAAAAAAAAALAP//AQAAAAAAAAAKAP//AQAAAAAAAAAMAP//AQAAAAAAAAAMAAAAAQAAAAAAAAAMAAEAAQAAAAAAAAAMAAIAAQAAAAAAAAASAPn/AQAAAAAAAAASAPr/AQAAAAAAAAASAPv/AQAAAAAAAAASAPz/AQAAAAAAAAATAAAAAQAAAAAAAAATAAEAAQAAAAAAAAATAAIAAQAAAAAAAAATAAMAAQAAAAAAAAAXAPz/AQAAAAAAAAAXAPv/AQAAAAAAAAAXAPr/AQAAAAAAAAAXAPn/AQAAAAAAAAAXAPj/AQAAAAAAAAAXAPf/AQAAAAAAAAAXAP//AQAAAAAAAAAXAAAAAQAAAAAAAAAXAAEAAQAAAAAAAAAXAAIAAQAAAAAAAAAXAAMAAQAAAAAAAAAXAAQAAQAAAAAAAAAXAAUAAQAAAAAAAAAXAAYAAQAAAAAAAAAWAAYAAQAAAAAAAAAWAAcAAQAAAAAAAAAVAAcAAQAAAAAAAAAUAAcAAQAAAAAAAAATAAcAAQAAAAAAAAASAAcAAQAAAAAAAAARAAcAAQAAAAAAAAAQAAcAAQAAAAAAAAAPAAcAAQAAAAAAAAAOAAcAAQAAAAAAAAANAAcAAQAAAAAAAAAMAAcAAQAAAAAAAAALAAcAAQAAAAAAAAAKAAcAAQAAAAAAAAAJAAcAAQAAAAAAAAAIAAcAAQAAAAAAAAAHAAcAAQAAAAAAAAAHAAYAAQAAAAAAAAAGAAYAAQAAAAAAAAAFAAYAAQAAAAAAAAAEAAYAAQAAAAAAAAADAAYAAQAAAAAAAAACAAYAAQAAAAAAAADZ/C3+AAAAAAAAAADZ/C7+AAAAAAAAAADZ/C/+AAAAAAAAAADZ/DD+AAAAAAAAAADZ/DH+AAAAAAAAAADZ/DL+AAAAAAAAAADZ/DP+AAAAAAAAAADZ/DT+AAAAAAAAAADZ/DX+AAAAAAAAAADZ/Db+AAAAAAAAAADZ/Df+AAAAAAAAAADZ/Dj+AAAAAAAAAADa/Dn+AAAAAAAAAADa/Dr+AAAAAAAAAADa/Dv+AAAAAAAAAADa/Dz+AAAAAAAAAADa/D3+AAAAAAAAAADa/D7+AAAAAAAAAADb/D/+AAAAAAAAAADb/ED+AAAAAAAAAADb/EH+AAAAAAAAAADb/EL+AAAAAAAAAADb/EP+AAAAAAAAAADb/ET+AAAAAAAAAADb/EX+AAAAAAAAAADb/Eb+AAAAAAAAAADb/Ef+AAAAAAAAAADb/Ej+AAAAAAAAAADb/En+AAAAAAAAAADb/Er+AAAAAAAAAADc/Ev+AAAAAAAAAADc/Ez+AAAAAAAAAADc/E3+AAAAAAAAAADc/E7+AAAAAAAAAADc/E/+AAAAAAAAAADc/FD+AAAAAAAAAADc/FH+AAAAAAAAAADc/FL+AAAAAAAAAADc/FP+AAAAAAAAAADc/FT+AAAAAAAAAADc/FX+AAAAAAAAAADc/Fb+AAAAAAAAAADc/Ff+AAAAAAAAAADc/Fj+AAAAAAAAAADc/Fn+AAAAAAAAAADc/Fr+AAAAAAAAAADc/Fv+AAAAAAAAAADc/Fz+AAAAAAAAAADc/F3+AAAAAAAAAADc/F7+AAAAAAAAAADc/F/+AAAAAAAAAADc/GD+AAAAAAAAAADc/GH+AAAAAAAAAADc/GL+AAAAAAAAAADc/GP+AAAAAAAAAADd/GT+AAAAAAAAAADd/GX+AAAAAAAAAADd/Gb+AAAAAAAAAADd/Gf+AAAAAAAAAADd/Gj+AAAAAAAAAADd/Gn+AAAAAAAAAADd/Gr+AAAAAAAAAADd/Gv+AAAAAAAAAADd/Gz+AAAAAAAAAADd/G3+AAAAAAAAAADd/G7+AAAAAAAAAADd/G/+AAAAAAAAAADd/HD+AAAAAAAAAADd/HH+AAAAAAAAAAAC/SX+AAAAAAAAAAAC/Sb+AAAAAAAAAAAC/Sf+AAAAAAAAAAAC/Sj+AAAAAAAAAAAC/Sn+AAAAAAAAAAAC/Sr+AAAAAAAAAAAC/Sv+AAAAAAAAAAAC/Sz+AAAAAAAAAAAC/S3+AAAAAAAAAAAC/S7+AAAAAAAAAAAC/S/+AAAAAAAAAAAC/TD+AAAAAAAAAAAC/TH+AAAAAAAAAAAC/TL+AAAAAAAAAAAC/TP+AAAAAAAAAAAC/TT+AAAAAAAAAAAC/TX+AAAAAAAAAAAC/Tb+AAAAAAAAAAAD/Tf+AAAAAAAAAAAD/Tj+AAAAAAAAAAAD/Tn+AAAAAAAAAAAD/Tr+AAAAAAAAAAAD/Tv+AAAAAAAAAAAD/Tz+AAAAAAAAAAAD/T3+AAAAAAAAAAAD/T7+AAAAAAAAAAAE/T/+AAAAAAAAAAAE/UD+AAAAAAAAAAAE/UH+AAAAAAAAAAAE/UL+AAAAAAAAAAAE/UP+AAAAAAAAAAAE/UT+AAAAAAAAAAAE/UX+AAAAAAAAAAAE/Ub+AAAAAAAAAAAE/Uf+AAAAAAAAAAAE/Uj+AAAAAAAAAAAF/Un+AAAAAAAAAAAF/Ur+AAAAAAAAAAAF/Uv+AAAAAAAAAAAF/Uz+AAAAAAAAAAAF/U3+AAAAAAAAAAAF/U7+AAAAAAAAAAAF/U/+AAAAAAAAAAAF/VD+AAAAAAAAAAAF/VH+AAAAAAAAAAAF/VL+AAAAAAAAAAAG/VP+AAAAAAAAAAAG/VT+AAAAAAAAAAAG/VX+AAAAAAAAAAAG/Vb+AAAAAAAAAAAG/Vf+AAAAAAAAAAAG/Vj+AAAAAAAAAAAH/Vn+AAAAAAAAAAAH/Vr+AAAAAAAAAAAH/Vv+AAAAAAAAAAAH/Vz+AAAAAAAAAAAH/V3+AAAAAAAAAAAH/V7+AAAAAAAAAAAH/V/+AAAAAAAAAAAH/WD+AAAAAAAAAAAI/WH+AAAAAAAAAAAI/WL+AAAAAAAAAAAI/WP+AAAAAAAAAAAI/WT+AAAAAAAAAAAI/WX+AAAAAAAAAAAI/Wb+AAAAAAAAAAAI/Wf+AAAAAAAAAAAI/Wj+AAAAAAAAAAC4/HX+AAAAAAAAAAC4/Hb+AAAAAAAAAAC5/Hf+AAAAAAAAAAC5/Hj+AAAAAAAAAAC6/Hn+AAAAAAAAAAC7/Hr+AAAAAAAAAAC8/Hv+AAAAAAAAAAC8/Hz+AAAAAAAAAAC9/H3+AAAAAAAAAAC+/H7+AAAAAAAAAAC+/H/+AAAAAAAAAAC//ID+AAAAAAAAAADA/IH+AAAAAAAA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AABI/Yn+AAAAAAAAAABJ/Yj+AAAAAAAAAABJ/Yf+AAAAAAAAAABJ/Yb+AAAAAAAAAABJ/YX+AAAAAAAAAABJ/YT+AAAAAAAAAABJ/YP+AAAAAAAAAABJ/YL+AAAAAAAAAABK/YH+AAAAAAAAAABK/YD+AAAAAAAAAABK/X/+AAAAAAAAAABK/X7+AAAAAAAAAABK/X3+AAAAAAAAAABK/Xz+AAAAAAAAAABK/Xv+AAAAAAAAAABK/Xr+AAAAAAAAAABK/Xn+AAAAAAAAAABK/Xj+AAAAAAAAAABK/Xf+AAAAAAAAAABK/Xb+AAAAAAAAAABK/XX+AAAAAAAAAABK/XT+AAAAAAAAAABK/XP+AAAAAAAAAABK/XL+AAAAAAAAAABK/XH+AAAAAAAAAABK/XD+AAAAAAAAAABK/W/+AAAAAAAAAABK/W7+AAAAAAAAAABK/W3+AAAAAAAAAABK/Wz+AAAAAAAAAABK/Wv+AAAAAAAAAABK/Wr+AAAAAAAAAABK/Wn+AAAAAAAAAABJ/Wj+AAAAAAAAAABJ/Wf+AAAAAAAAAABJ/Wb+AAAAAAAAAABJ/WX+AAAAAAAAAABJ/WT+AAAAAAAAAABJ/WP+AAAAAAAAAABJ/WL+AAAAAAAAAABJ/WH+AAAAAAAAAABJ/WD+AAAAAAAAAABJ/V/+AAAAAAAAAABJ/V7+AAAAAAAAAABJ/V3+AAAAAAAAAABJ/Vz+AAAAAAAAAABJ/Vv+AAAAAAAAAABJ/Vr+AAAAAAAAAABJ/Vn+AAAAAAAAAAAAAAMAAQAAAAAAAAABAAMAAQAAAAAAAAACAAMAAQAAAAAAAAADAAMAAQAAAAAAAAAEAAMAAQAAAAAAAAAFAAMAAQAAAAAAAAAGAAMAAQAAAAAAAAAJAP//AQAAAAAAAAA=") +tile_set = ExtResource("3_h2yge") + +[node name="Layer1" type="TileMapLayer" parent="." groups=["death"]] +use_parent_material = true +tile_map_data = PackedByteArray("AADZ/C3+AAAAAAAAAADZ/C7+AAAAAAAAAADZ/C/+AAAAAAAAAADZ/DD+AAAAAAAAAADZ/DH+AAAAAAAAAADZ/DL+AAAAAAAAAADZ/DP+AAAAAAAAAADZ/DT+AAAAAAAAAADZ/DX+AAAAAAAAAADZ/Db+AAAAAAAAAADZ/Df+AAAAAAAAAADZ/Dj+AAAAAAAAAADa/Dn+AAAAAAAAAADa/Dr+AAAAAAAAAADa/Dv+AAAAAAAAAADa/Dz+AAAAAAAAAADa/D3+AAAAAAAAAADa/D7+AAAAAAAAAADb/D/+AAAAAAAAAADb/ED+AAAAAAAAAADb/EH+AAAAAAAAAADb/EL+AAAAAAAAAADb/EP+AAAAAAAAAADb/ET+AAAAAAAAAADb/EX+AAAAAAAAAADb/Eb+AAAAAAAAAADb/Ef+AAAAAAAAAADb/Ej+AAAAAAAAAADb/En+AAAAAAAAAADb/Er+AAAAAAAAAADc/Ev+AAAAAAAAAADc/Ez+AAAAAAAAAADc/E3+AAAAAAAAAADc/E7+AAAAAAAAAADc/E/+AAAAAAAAAADc/FD+AAAAAAAAAADc/FH+AAAAAAAAAADc/FL+AAAAAAAAAADc/FP+AAAAAAAAAADc/FT+AAAAAAAAAADc/FX+AAAAAAAAAADc/Fb+AAAAAAAAAADc/Ff+AAAAAAAAAADc/Fj+AAAAAAAAAADc/Fn+AAAAAAAAAADc/Fr+AAAAAAAAAADc/Fv+AAAAAAAAAADc/Fz+AAAAAAAAAADc/F3+AAAAAAAAAADc/F7+AAAAAAAAAADc/F/+AAAAAAAAAADc/GD+AAAAAAAAAADc/GH+AAAAAAAAAADc/GL+AAAAAAAAAADc/GP+AAAAAAAAAADd/GT+AAAAAAAAAADd/GX+AAAAAAAAAADd/Gb+AAAAAAAAAADd/Gf+AAAAAAAAAADd/Gj+AAAAAAAAAADd/Gn+AAAAAAAAAADd/Gr+AAAAAAAAAADd/Gv+AAAAAAAAAADd/Gz+AAAAAAAAAADd/G3+AAAAAAAAAADd/G7+AAAAAAAAAADd/G/+AAAAAAAAAADd/HD+AAAAAAAAAADd/HH+AAAAAAAAAAAC/SX+AAAAAAAAAAAC/Sb+AAAAAAAAAAAC/Sf+AAAAAAAAAAAC/Sj+AAAAAAAAAAAC/Sn+AAAAAAAAAAAC/Sr+AAAAAAAAAAAC/Sv+AAAAAAAAAAAC/Sz+AAAAAAAAAAAC/S3+AAAAAAAAAAAC/S7+AAAAAAAAAAAC/S/+AAAAAAAAAAAC/TD+AAAAAAAAAAAC/TH+AAAAAAAAAAAC/TL+AAAAAAAAAAAC/TP+AAAAAAAAAAAC/TT+AAAAAAAAAAAC/TX+AAAAAAAAAAAC/Tb+AAAAAAAAAAAD/Tf+AAAAAAAAAAAD/Tj+AAAAAAAAAAAD/Tn+AAAAAAAAAAAD/Tr+AAAAAAAAAAAD/Tv+AAAAAAAAAAAD/Tz+AAAAAAAAAAAD/T3+AAAAAAAAAAAD/T7+AAAAAAAAAAAE/T/+AAAAAAAAAAAE/UD+AAAAAAAAAAAE/UH+AAAAAAAAAAAE/UL+AAAAAAAAAAAE/UP+AAAAAAAAAAAE/UT+AAAAAAAAAAAE/UX+AAAAAAAAAAAE/Ub+AAAAAAAAAAAE/Uf+AAAAAAAAAAAE/Uj+AAAAAAAAAAAF/Un+AAAAAAAAAAAF/Ur+AAAAAAAAAAAF/Uv+AAAAAAAAAAAF/Uz+AAAAAAAAAAAF/U3+AAAAAAAAAAAF/U7+AAAAAAAAAAAF/U/+AAAAAAAAAAAF/VD+AAAAAAAAAAAF/VH+AAAAAAAAAAAF/VL+AAAAAAAAAAAG/VP+AAAAAAAAAAAG/VT+AAAAAAAAAAAG/VX+AAAAAAAAAAAG/Vb+AAAAAAAAAAAG/Vf+AAAAAAAAAAAG/Vj+AAAAAAAAAAAH/Vn+AAAAAAAAAAAH/Vr+AAAAAAAAAAAH/Vv+AAAAAAAAAAAH/Vz+AAAAAAAAAAAH/V3+AAAAAAAAAAAH/V7+AAAAAAAAAAAH/V/+AAAAAAAAAAAH/WD+AAAAAAAAAAAI/WH+AAAAAAAAAAAI/WL+AAAAAAAAAAAI/WP+AAAAAAAAAAAI/WT+AAAAAAAAAAAI/WX+AAAAAAAAAAAI/Wb+AAAAAAAAAAAI/Wf+AAAAAAAAAAAI/Wj+AAAAAAAAAAC4/HX+AAAAAAAAAAC4/Hb+AAAAAAAAAAC5/Hf+AAAAAAAAAAC5/Hj+AAAAAAAAAAC6/Hn+AAAAAAAAAAC7/Hr+AAAAAAAAAAC8/Hv+AAAAAAAAAAC8/Hz+AAAAAAAAAAC9/H3+AAAAAAAAAAC+/H7+AAAAAAAAAAC+/H/+AAAAAAAAAAC//ID+AAAAAAAAAADA/IH+AAAAAAAA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AABI/Yn+AAAAAAAAAABJ/Yj+AAAAAAAAAABJ/Yf+AAAAAAAAAABJ/Yb+AAAAAAAAAABJ/YX+AAAAAAAAAABJ/YT+AAAAAAAAAABJ/YP+AAAAAAAAAABJ/YL+AAAAAAAAAABK/YH+AAAAAAAAAABK/YD+AAAAAAAAAABK/X/+AAAAAAAAAABK/X7+AAAAAAAAAABK/X3+AAAAAAAAAABK/Xz+AAAAAAAAAABK/Xv+AAAAAAAAAABK/Xr+AAAAAAAAAABK/Xn+AAAAAAAAAABK/Xj+AAAAAAAAAABK/Xf+AAAAAAAAAABK/Xb+AAAAAAAAAABK/XX+AAAAAAAAAABK/XT+AAAAAAAAAABK/XP+AAAAAAAAAABK/XL+AAAAAAAAAABK/XH+AAAAAAAAAABK/XD+AAAAAAAAAABK/W/+AAAAAAAAAABK/W7+AAAAAAAAAABK/W3+AAAAAAAAAABK/Wz+AAAAAAAAAABK/Wv+AAAAAAAAAABK/Wr+AAAAAAAAAABK/Wn+AAAAAAAAAABJ/Wj+AAAAAAAAAABJ/Wf+AAAAAAAAAABJ/Wb+AAAAAAAAAABJ/WX+AAAAAAAAAABJ/WT+AAAAAAAAAABJ/WP+AAAAAAAAAABJ/WL+AAAAAAAAAABJ/WH+AAAAAAAAAABJ/WD+AAAAAAAAAABJ/V/+AAAAAAAAAABJ/V7+AAAAAAAAAABJ/V3+AAAAAAAAAABJ/Vz+AAAAAAAAAABJ/Vv+AAAAAAAAAABJ/Vr+AAAAAAAAAABJ/Vn+AAAAAAAAAAALAP7/AAAAAAAAAAAKAP7/AAAAAAAAAAAMAP7/AAAAAAAAAAAXAP3/AAAAAAAAADASAP3/AAAAAAAAADAWAAEAAAAAAAAAAGAWAAIAAAAAAAAAAFAWAAMAAAAAAAAAAGA=") +tile_set = ExtResource("4_lquwl") + +[node name="Bat" parent="." instance=ExtResource("4_1bvp3")] +position = Vector2(199, 51) +sine_distance = 100.0 + +[node name="Bat2" parent="." instance=ExtResource("4_1bvp3")] +position = Vector2(589, -33) + +[node name="Bat3" parent="." instance=ExtResource("4_1bvp3")] +position = Vector2(685, -122) + +[node name="Bat4" parent="." instance=ExtResource("4_1bvp3")] +position = Vector2(1650, 41) + +[node name="Bat5" parent="." instance=ExtResource("4_1bvp3")] +position = Vector2(829, -25) + +[node name="Bat6" parent="." instance=ExtResource("4_1bvp3")] +position = Vector2(1104, 372) + +[node name="Scoreitem" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(121, 56) + +[node name="Scoreitem2" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(572, -9) + +[node name="Scoreitem3" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(545, -85) + +[node name="Scoreitem4" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(466, 32) + +[node name="Scoreitem5" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(962, 39) + +[node name="Scoreitem6" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(1088, -315) + +[node name="Scoreitem7" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(507, -113) + +[node name="Scoreitem8" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(1087, 75) + +[node name="Scoreitem9" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(1174, -73) + +[node name="Scoreitem10" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(1304, -166) + +[node name="Scoreitem11" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(1362, 19) + +[node name="Scoreitem12" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(1436, -94) + +[node name="Scoreitem13" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(1436, -94) + +[node name="Scoreitem14" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(232, -37) + +[node name="Scoreitem15" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(308, -95) + +[node name="Scoreitem16" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(426, -75) + +[node name="Scoreitem17" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(376, -114) + +[node name="Scoreitem18" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(223, -107) + +[node name="Scoreitem19" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(172, -59) + +[node name="Scoreitem20" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(526, 36) + +[node name="Scoreitem21" parent="." instance=ExtResource("8_5vw27")] +position = Vector2(492, -30) + +[node name="CPUParticles2D" parent="." instance=ExtResource("9_kek77")] +position = Vector2(156, 57) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("10_4c57u") +autoplay = true +bus = &"Music" diff --git a/objects/player/jet_particles.gd b/objects/player/jet_particles.gd new file mode 100644 index 0000000..1da3584 --- /dev/null +++ b/objects/player/jet_particles.gd @@ -0,0 +1 @@ +extends CPUParticles2D diff --git a/objects/player/jet_particles.gd.uid b/objects/player/jet_particles.gd.uid new file mode 100644 index 0000000..4d520c5 --- /dev/null +++ b/objects/player/jet_particles.gd.uid @@ -0,0 +1 @@ +uid://nvpkqa3y8g04 diff --git a/objects/player/jet_particles.tscn b/objects/player/jet_particles.tscn new file mode 100644 index 0000000..f5dfd66 --- /dev/null +++ b/objects/player/jet_particles.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=5 format=3 uid="uid://dmg28km10q5ja"] + +[ext_resource type="Texture2D" uid="uid://cd68hj3p7r01q" path="res://sprites/particles/fire_particles.png" id="1_idk12"] +[ext_resource type="Script" uid="uid://nvpkqa3y8g04" path="res://objects/player/jet_particles.gd" id="2_vu77f"] + +[sub_resource type="Curve" id="Curve_idk12"] +_limits = [0.0, 3.0, 0.0, 1.0] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(1, 3), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="Gradient" id="Gradient_m4kly"] +offsets = PackedFloat32Array(0.146667, 0.526667, 0.806667, 1) +colors = PackedColorArray(0.580392, 0.768627, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0.321569, 0) + +[node name="CPUParticles2D" type="CPUParticles2D" groups=["fire_particles"]] +amount = 16 +texture = ExtResource("1_idk12") +lifetime = 0.24 +local_coords = true +spread = 0.0 +gravity = Vector2(-190, 980) +tangential_accel_max = 100.0 +damping_max = 100.0 +angle_min = -720.0 +scale_amount_curve = SubResource("Curve_idk12") +color_ramp = SubResource("Gradient_m4kly") +script = ExtResource("2_vu77f") diff --git a/objects/player/jet_particles_weak.tscn b/objects/player/jet_particles_weak.tscn new file mode 100644 index 0000000..9535cc5 --- /dev/null +++ b/objects/player/jet_particles_weak.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=5 format=3 uid="uid://c4dkexe3l6cma"] + +[ext_resource type="Texture2D" uid="uid://cd68hj3p7r01q" path="res://sprites/particles/fire_particles.png" id="1_gl2g5"] +[ext_resource type="Script" uid="uid://nvpkqa3y8g04" path="res://objects/player/jet_particles.gd" id="2_td2pe"] + +[sub_resource type="Curve" id="Curve_idk12"] +_limits = [0.0, 3.0, 0.0, 1.0] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(1, 3), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="Gradient" id="Gradient_m4kly"] +offsets = PackedFloat32Array(0.453333, 0.806667, 0.873333, 1) +colors = PackedColorArray(0.580392, 0.768627, 1, 1, 1, 0.839216, 0.215686, 1, 1, 0, 0, 1, 1, 0, 0.321569, 0) + +[node name="CPUParticles2D" type="CPUParticles2D" groups=["fire_particles"]] +amount = 16 +texture = ExtResource("1_gl2g5") +lifetime = 0.15 +local_coords = true +spread = 0.0 +gravity = Vector2(-190, 980) +tangential_accel_max = 100.0 +damping_max = 100.0 +angle_min = -720.0 +scale_amount_curve = SubResource("Curve_idk12") +color_ramp = SubResource("Gradient_m4kly") +script = ExtResource("2_td2pe") diff --git a/objects/player/player.gd b/objects/player/player.gd new file mode 100644 index 0000000..9598ca0 --- /dev/null +++ b/objects/player/player.gd @@ -0,0 +1,139 @@ +extends CharacterBody2D + +const WALK_ACCEL = 50.0 +const WALK_TOPSPEED = 160.0 + +const FLY_ACCEL = 50.0 +const FLY_TOPSPEED = 200.0 + +const GRAVITY = 15.0 +const FAST_FALL_VELOCITY = 500.0 + +var downward_velocity = 0.0 +var max_downward_velocity = 1200.0 +var fast_fall_max_downward_velocity = 1500.0 + +var fuel = 100.0 +const jetpack_velocity = 10.0 + +var score = 0 + +var aim_direction = 1 + +const BULLET = preload("res://weapons/spreadshot/spread_shot.tscn") +const GRAZE_PARTICLES = preload("res://sprites/Player/graze_particles.tscn") + +func _physics_process(delta: float) -> void: + var axis = Input.get_axis("ui_left","ui_right") + if axis != 0: aim_direction = axis + #region ground movement + if axis != 0: + if velocity.y < 0: + move(FLY_ACCEL,FLY_TOPSPEED) + else: + move(WALK_ACCEL,WALK_TOPSPEED) + if is_on_floor(): + %Sprite.play("walk") + else: + %Sprite.play("fly") + else: + velocity.x = move_toward(velocity.x, 0, WALK_ACCEL) + %Sprite.play("idle") + #endregion + #region gun + if Input.is_action_just_pressed("shoot"): + %ShootSound.play() + var bullet = BULLET.instantiate() + bullet.global_position = global_position + get_parent().add_child(bullet) + #endregion + #region jetpack flight + if Input.is_action_pressed("fly"): + if fuel > 0.0: + %Sprite.play("fly") + fuel -= 40.0 * delta + downward_velocity = 0.0 + if %JetpackSound.is_playing() == false: %JetpackSound.play() + if %JetpackSound.pitch_scale < 1.25: + %JetpackSound.pitch_scale += 0.4 * delta + velocity.y -= jetpack_velocity + emit_fire(true) + + else: + emit_fire(false) + else: + if %JetpackSound.pitch_scale > 0.4: + %JetpackSound.pitch_scale -= 0.1 * delta + emit_fire(false) + + #endregion + if is_on_floor(): + downward_velocity = 0.0 + GlobalFunctions.append_score() + fuel = 100.0 + silence_jetpack(delta) + else: + if Input.is_action_pressed("fast_fall"): + silence_jetpack(delta) + else: + %JetpackSound.volume_db = 0.0 + + if Input.is_action_pressed("fast_fall"): + downward_velocity += FAST_FALL_VELOCITY + downward_velocity = clamp(downward_velocity,0.0,fast_fall_max_downward_velocity) + velocity.y = clamp(velocity.y,velocity.y,fast_fall_max_downward_velocity) + else: + downward_velocity += GRAVITY + downward_velocity = clamp(downward_velocity,0.0,max_downward_velocity) + velocity.y = clamp(velocity.y,velocity.y,max_downward_velocity) + fuel -= 1 * delta + + + + #jetpack pitch + + velocity.y += downward_velocity * delta + move_and_slide() + #if event.is_action_pressed() +#endregion + + +func move(acceleration,topspeed): + var axis = Input.get_axis("ui_left","ui_right") + velocity.x += (axis * acceleration) + %Sprite.scale.x = axis + velocity.x = clamp(velocity.x,-topspeed,topspeed) + +func silence_jetpack(delta): + %JetpackSound.pitch_scale = 1.0 + %JetpackSound.volume_db -= 50 * delta + +func emit_fire(emit:bool=true,lifetime:float=0.24): + get_tree().get_nodes_in_group("fire_particles")[0].emitting = emit + get_tree().get_nodes_in_group("fire_particles")[0].lifetime = lifetime + get_tree().get_nodes_in_group("fire_particles")[1].emitting = emit + get_tree().get_nodes_in_group("fire_particles")[1].lifetime = lifetime + +func _on_area_2d_body_entered(body: Node2D) -> void: + if body.is_in_group("death"): + get_tree().reload_current_scene() + + +func _on_area_2d_area_entered(area: Area2D) -> void: + #if area.is_in_group("death") or area.is_in_group("hurt"): + #get_tree().reload_current_scene() + pass + + +func _on_hurtbox_area_entered(area: Area2D) -> void: + get_tree().reload_current_scene() + + +func _on_graze_hitbox_area_entered(area: Area2D) -> void: + if area.is_in_group("enemy_bullet"): + if area.get_parent().grazed == false: + GlobalFunctions.queue_score(0) + var graze_particle = GRAZE_PARTICLES.instantiate() + graze_particle.global_position = global_position + get_parent().add_child(graze_particle) + area.get_parent().grazed = true diff --git a/objects/player/player.gd.uid b/objects/player/player.gd.uid new file mode 100644 index 0000000..45ab655 --- /dev/null +++ b/objects/player/player.gd.uid @@ -0,0 +1 @@ +uid://cgo3kf4b37lx7 diff --git a/objects/player/player.tscn b/objects/player/player.tscn new file mode 100644 index 0000000..7676472 --- /dev/null +++ b/objects/player/player.tscn @@ -0,0 +1,137 @@ +[gd_scene load_steps=15 format=3 uid="uid://e2tevu6gn5si"] + +[ext_resource type="Script" uid="uid://cgo3kf4b37lx7" path="res://objects/player/player.gd" id="1_4flbx"] +[ext_resource type="AudioStream" uid="uid://bhy8i7yg863n3" path="res://audio/sfx/jetpack.ogg" id="2_g7ett"] +[ext_resource type="Texture2D" uid="uid://bt2xuy2ihej2q" path="res://sprites/Player/clegg_fly.png" id="2_xkryw"] +[ext_resource type="AudioStream" uid="uid://ct82ub5u2uoly" path="res://audio/sfx/se_g2.ogg" id="3_ssrue"] +[ext_resource type="Texture2D" uid="uid://bi6gfgt0b0voa" path="res://sprites/Player/clegg.png" id="4_m4kly"] +[ext_resource type="Texture2D" uid="uid://bce74ak1by42t" path="res://sprites/Player/clegg_walk1.png" id="4_xgwla"] +[ext_resource type="Texture2D" uid="uid://bvb5neqj421p" path="res://sprites/Player/clegg_walk2.png" id="5_bi5m7"] +[ext_resource type="AudioStream" uid="uid://bv6v7v5dtvoii" path="res://audio/sfx/graze.wav" id="6_ow0dq"] +[ext_resource type="PackedScene" uid="uid://dmg28km10q5ja" path="res://objects/player/jet_particles.tscn" id="9_xgwla"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_xgwla"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_xkryw") +}], +"loop": true, +"name": &"fly", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("4_m4kly") +}], +"loop": true, +"name": &"idle", +"speed": 15.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("4_m4kly") +}], +"loop": true, +"name": &"new_animation", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("4_xgwla") +}, { +"duration": 1.0, +"texture": ExtResource("4_m4kly") +}, { +"duration": 1.0, +"texture": ExtResource("5_bi5m7") +}], +"loop": true, +"name": &"walk", +"speed": 15.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_sh265"] +size = Vector2(28, 34.375) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_cqmt1"] +size = Vector2(27.5, 34) + +[sub_resource type="CircleShape2D" id="CircleShape2D_xkryw"] +radius = 17.0 + +[sub_resource type="CircleShape2D" id="CircleShape2D_xgwla"] +radius = 2.06155 + +[node name="Player" type="CharacterBody2D" groups=["player", "player_hitbox"]] +collision_mask = 2 +script = ExtResource("1_4flbx") + +[node name="ColorRect" type="ColorRect" parent="."] +visible = false +offset_left = -8.0 +offset_top = -16.0 +offset_right = 8.0 +offset_bottom = 16.0 + +[node name="Sprite" type="AnimatedSprite2D" parent="."] +unique_name_in_owner = true +sprite_frames = SubResource("SpriteFrames_xgwla") +animation = &"fly" + +[node name="CPUParticles2D" parent="Sprite" instance=ExtResource("9_xgwla")] +position = Vector2(-6, 17) +scale = Vector2(0.5, 0.5) + +[node name="CPUParticles2D2" parent="Sprite" instance=ExtResource("9_xgwla")] +position = Vector2(2.5, 17) +scale = Vector2(0.5, 0.5) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0, -0.1875) +shape = SubResource("RectangleShape2D_sh265") + +[node name="Collectionbox" type="Area2D" parent="." groups=["player_hitbox"]] +collision_mask = 7 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Collectionbox"] +position = Vector2(0.25, 0) +shape = SubResource("RectangleShape2D_cqmt1") + +[node name="JetpackSound" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource("2_g7ett") +bus = &"Jetpack" + +[node name="GrazeSound" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource("6_ow0dq") + +[node name="ShootSound" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource("3_ssrue") +volume_db = 6.559 +bus = &"SFX" + +[node name="GrazeHitbox" type="Area2D" parent="."] +position = Vector2(-3, -4) +collision_mask = 8 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="GrazeHitbox"] +position = Vector2(3, 4) +shape = SubResource("CircleShape2D_xkryw") +debug_color = Color(0.797602, 0.0486606, 1, 0.42) + +[node name="Hurtbox" type="Area2D" parent="."] +position = Vector2(-1, -10) +collision_mask = 8 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"] +position = Vector2(2, 11.5) +shape = SubResource("CircleShape2D_xgwla") +debug_color = Color(1, 0, 0.0917967, 0.42) + +[connection signal="area_entered" from="Collectionbox" to="." method="_on_area_2d_area_entered"] +[connection signal="body_entered" from="Collectionbox" to="." method="_on_area_2d_body_entered"] +[connection signal="area_entered" from="GrazeHitbox" to="." method="_on_graze_hitbox_area_entered"] +[connection signal="area_entered" from="Hurtbox" to="." method="_on_hurtbox_area_entered"] diff --git a/objects/player/player_bullet/player_bullet.gd b/objects/player/player_bullet/player_bullet.gd new file mode 100644 index 0000000..e03907b --- /dev/null +++ b/objects/player/player_bullet/player_bullet.gd @@ -0,0 +1,29 @@ +extends Node2D + +var direction = 1 +@export var speed = Vector2.ZERO +@export var range = 1.0 +@export var infinite_range = true + +func _ready() -> void: + var player = get_tree().get_nodes_in_group("player")[0] + direction = player.aim_direction + if infinite_range == true: %RangeTimer.paused = true + +func _physics_process(delta: float) -> void: + position.x += (speed.x * direction) * delta + position.y += (speed.y) * delta + + +func _on_area_2d_area_entered(area: Area2D) -> void: + if area.is_in_group("enemy_hitbox"): + GlobalFunctions.queue_score(10) + area.get_parent().queue_free() + queue_free() + + +func _on_area_2d_body_entered(body: Node2D) -> void: + queue_free() + +func _on_range_timer_timeout() -> void: + queue_free() diff --git a/objects/player/player_bullet/player_bullet.gd.uid b/objects/player/player_bullet/player_bullet.gd.uid new file mode 100644 index 0000000..a3a9d10 --- /dev/null +++ b/objects/player/player_bullet/player_bullet.gd.uid @@ -0,0 +1 @@ +uid://cbmi6g10hnfve diff --git a/objects/player/player_bullet/player_bullet.tscn b/objects/player/player_bullet/player_bullet.tscn new file mode 100644 index 0000000..65440e0 --- /dev/null +++ b/objects/player/player_bullet/player_bullet.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=3 format=3 uid="uid://cqqqblpc3j4hn"] + +[ext_resource type="Script" uid="uid://cbmi6g10hnfve" path="res://objects/player/player_bullet/player_bullet.gd" id="1_lj6op"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_lj6op"] +size = Vector2(8, 8) + +[node name="PlayerBullet" type="Node2D"] +script = ExtResource("1_lj6op") +speed = Vector2(1000, 0) + +[node name="ColorRect" type="ColorRect" parent="."] +offset_left = -4.0 +offset_top = -4.0 +offset_right = 4.0 +offset_bottom = 4.0 + +[node name="Area2D" type="Area2D" parent="."] +collision_layer = 16 +collision_mask = 14 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource("RectangleShape2D_lj6op") + +[node name="RangeTimer" type="Timer" parent="."] +unique_name_in_owner = true +autostart = true + +[connection signal="area_entered" from="Area2D" to="." method="_on_area_2d_area_entered"] +[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"] +[connection signal="timeout" from="RangeTimer" to="." method="_on_range_timer_timeout"] diff --git a/objects/scoreitem/scoreitem.gd b/objects/scoreitem/scoreitem.gd new file mode 100644 index 0000000..8941348 --- /dev/null +++ b/objects/scoreitem/scoreitem.gd @@ -0,0 +1,12 @@ +extends Node2D + +@export var score = 0 +const PARTICLES = preload("res://objects/scoreitem/scoreitem_particles.tscn") + +func _on_area_2d_area_entered(area: Area2D) -> void: + if area.is_in_group("player_hitbox"): + GlobalFunctions.queue_score(score) + var particles = PARTICLES.instantiate() + particles.global_position = global_position + get_owner().add_child(particles) + queue_free() diff --git a/objects/scoreitem/scoreitem.gd.uid b/objects/scoreitem/scoreitem.gd.uid new file mode 100644 index 0000000..fe90e6a --- /dev/null +++ b/objects/scoreitem/scoreitem.gd.uid @@ -0,0 +1 @@ +uid://8wiyfiyykh6t diff --git a/objects/scoreitem/scoreitem.tscn b/objects/scoreitem/scoreitem.tscn new file mode 100644 index 0000000..5a35cbf --- /dev/null +++ b/objects/scoreitem/scoreitem.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=10 format=3 uid="uid://bskdt3t8fae6m"] + +[ext_resource type="Script" uid="uid://8wiyfiyykh6t" path="res://objects/scoreitem/scoreitem.gd" id="1_8u3vk"] +[ext_resource type="Texture2D" uid="uid://dr1uub2l0vdh4" path="res://sprites/screw/0c575d08-e62d-4013-9e08-172d0662fcda.png" id="1_e6x4u"] +[ext_resource type="Texture2D" uid="uid://csqvymhme5h8t" path="res://sprites/screw/23b869e4-5707-44a8-8bbc-a788d5c71275.png" id="2_8u3vk"] +[ext_resource type="Texture2D" uid="uid://bptdaaemdeqt" path="res://sprites/screw/6ca66360-a47d-4690-88f8-b9c160416be3.png" id="3_oad3k"] +[ext_resource type="Texture2D" uid="uid://dud5u6ojbsupr" path="res://sprites/screw/72235a50-452c-4104-a5b4-447ee5c42785.png" id="4_e7vhn"] +[ext_resource type="Texture2D" uid="uid://dutm1rklnb33t" path="res://sprites/screw/30656deb-ca75-4981-8198-ad555b89764a.png" id="5_dfapo"] +[ext_resource type="Texture2D" uid="uid://cvuhonmcq21hk" path="res://sprites/screw/c433a95b-a214-4bdd-b58e-8ef611c6be46.png" id="6_uywcb"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_dayts"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1_e6x4u") +}, { +"duration": 1.0, +"texture": ExtResource("2_8u3vk") +}, { +"duration": 1.0, +"texture": ExtResource("3_oad3k") +}, { +"duration": 1.0, +"texture": ExtResource("4_e7vhn") +}, { +"duration": 1.0, +"texture": ExtResource("5_dfapo") +}, { +"duration": 1.0, +"texture": ExtResource("6_uywcb") +}], +"loop": true, +"name": &"default", +"speed": 15.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_e6x4u"] +size = Vector2(15, 15) + +[node name="Scoreitem" type="Node2D"] +script = ExtResource("1_8u3vk") +score = 10 + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +scale = Vector2(0.2, 0.2) +sprite_frames = SubResource("SpriteFrames_dayts") +autoplay = "default" +frame_progress = 0.340073 + +[node name="Area2D" type="Area2D" parent="."] +collision_layer = 4 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource("RectangleShape2D_e6x4u") + +[connection signal="area_entered" from="Area2D" to="." method="_on_area_2d_area_entered"] diff --git a/objects/scoreitem/scoreitem_particles.gd b/objects/scoreitem/scoreitem_particles.gd new file mode 100644 index 0000000..f8a4092 --- /dev/null +++ b/objects/scoreitem/scoreitem_particles.gd @@ -0,0 +1,7 @@ +extends CPUParticles2D + +func _ready() -> void: + emitting = true + +func _on_finished() -> void: + queue_free() diff --git a/objects/scoreitem/scoreitem_particles.gd.uid b/objects/scoreitem/scoreitem_particles.gd.uid new file mode 100644 index 0000000..58c6822 --- /dev/null +++ b/objects/scoreitem/scoreitem_particles.gd.uid @@ -0,0 +1 @@ +uid://bdcxqp8royr5u diff --git a/objects/scoreitem/scoreitem_particles.tscn b/objects/scoreitem/scoreitem_particles.tscn new file mode 100644 index 0000000..c930b77 --- /dev/null +++ b/objects/scoreitem/scoreitem_particles.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=4 format=3 uid="uid://bsmmvt6hf6m5b"] + +[ext_resource type="Script" uid="uid://bdcxqp8royr5u" path="res://objects/scoreitem/scoreitem_particles.gd" id="1_aeam7"] +[ext_resource type="AudioStream" uid="uid://c7h4qdg8gtnhk" path="res://audio/sfx/key.ogg" id="2_rwya6"] + +[sub_resource type="Gradient" id="Gradient_aeam7"] +offsets = PackedFloat32Array(0, 0.513333, 1) +colors = PackedColorArray(1, 0, 0, 1, 1, 1, 0.568627, 1, 1, 1, 1, 1) + +[node name="CPUParticles2D" type="CPUParticles2D"] +emitting = false +amount = 38 +lifetime = 0.2 +one_shot = true +speed_scale = 0.5 +explosiveness = 1.0 +randomness = 1.0 +lifetime_randomness = 1.0 +spread = 154.09 +gravity = Vector2(0, 630) +initial_velocity_min = 251.99 +initial_velocity_max = 484.86 +scale_amount_min = 1.5 +scale_amount_max = 2.5 +color_ramp = SubResource("Gradient_aeam7") +script = ExtResource("1_aeam7") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("2_rwya6") +autoplay = true + +[connection signal="finished" from="." to="." method="_on_finished"] diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..f6dbaaa --- /dev/null +++ b/project.godot @@ -0,0 +1,67 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="New Game Project" +run/main_scene="uid://cbmgdd1gbmh1x" +config/features=PackedStringArray("4.4", "GL Compatibility") +config/icon="res://icon.svg" + +[autoload] + +GlobalStats="*res://globals/global_stats.gd" +GlobalFunctions="*res://globals/global_functions.gd" + +[display] + +window/size/viewport_width=640 +window/size/viewport_height=360 +window/size/mode=3 +window/size/borderless=true +window/stretch/mode="canvas_items" + +[input] + +fly={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":90,"key_label":0,"unicode":122,"location":0,"echo":false,"script":null) +] +} +shoot={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":88,"key_label":0,"unicode":120,"location":0,"echo":false,"script":null) +] +} +fast_fall={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +fullscreen={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} + +[layer_names] + +2d_physics/layer_1="Player" +2d_physics/layer_2="Collision" +2d_physics/layer_3="Pickups" +2d_physics/layer_4="Enemy Damage" +2d_physics/layer_5="Player Damage" + +[rendering] + +textures/canvas_textures/default_texture_filter=0 +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" +2d/snap/snap_2d_transforms_to_pixel=true diff --git a/spikes.png b/spikes.png new file mode 100644 index 0000000..97db560 Binary files /dev/null and b/spikes.png differ diff --git a/spikes.png.import b/spikes.png.import new file mode 100644 index 0000000..93744f1 --- /dev/null +++ b/spikes.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjirp2g8mawch" +path="res://.godot/imported/spikes.png-4a2427e7b6483a335646e762227cfd31.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://spikes.png" +dest_files=["res://.godot/imported/spikes.png-4a2427e7b6483a335646e762227cfd31.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/Player/clegg.png b/sprites/Player/clegg.png new file mode 100644 index 0000000..5dad3d5 Binary files /dev/null and b/sprites/Player/clegg.png differ diff --git a/sprites/Player/clegg.png.import b/sprites/Player/clegg.png.import new file mode 100644 index 0000000..1130e56 --- /dev/null +++ b/sprites/Player/clegg.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bi6gfgt0b0voa" +path="res://.godot/imported/clegg.png-f207317d2b00342f0190488446638a1b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Player/clegg.png" +dest_files=["res://.godot/imported/clegg.png-f207317d2b00342f0190488446638a1b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/Player/clegg_fly.png b/sprites/Player/clegg_fly.png new file mode 100644 index 0000000..de35f25 Binary files /dev/null and b/sprites/Player/clegg_fly.png differ diff --git a/sprites/Player/clegg_fly.png.import b/sprites/Player/clegg_fly.png.import new file mode 100644 index 0000000..3223fb9 --- /dev/null +++ b/sprites/Player/clegg_fly.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bt2xuy2ihej2q" +path="res://.godot/imported/clegg_fly.png-7a3ae7abd18b0a1d07fcb24b1df80211.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Player/clegg_fly.png" +dest_files=["res://.godot/imported/clegg_fly.png-7a3ae7abd18b0a1d07fcb24b1df80211.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/Player/clegg_walk1.png b/sprites/Player/clegg_walk1.png new file mode 100644 index 0000000..e5da6cf Binary files /dev/null and b/sprites/Player/clegg_walk1.png differ diff --git a/sprites/Player/clegg_walk1.png.import b/sprites/Player/clegg_walk1.png.import new file mode 100644 index 0000000..bc23020 --- /dev/null +++ b/sprites/Player/clegg_walk1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bce74ak1by42t" +path="res://.godot/imported/clegg_walk1.png-04f69f62c344127763c8b8a4ffb880d2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Player/clegg_walk1.png" +dest_files=["res://.godot/imported/clegg_walk1.png-04f69f62c344127763c8b8a4ffb880d2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/Player/clegg_walk2.png b/sprites/Player/clegg_walk2.png new file mode 100644 index 0000000..38b0152 Binary files /dev/null and b/sprites/Player/clegg_walk2.png differ diff --git a/sprites/Player/clegg_walk2.png.import b/sprites/Player/clegg_walk2.png.import new file mode 100644 index 0000000..23cb53e --- /dev/null +++ b/sprites/Player/clegg_walk2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvb5neqj421p" +path="res://.godot/imported/clegg_walk2.png-3ae137705c65caea8386c5acdc77f85b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Player/clegg_walk2.png" +dest_files=["res://.godot/imported/clegg_walk2.png-3ae137705c65caea8386c5acdc77f85b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/Player/fly.png b/sprites/Player/fly.png new file mode 100644 index 0000000..0fcaa7f Binary files /dev/null and b/sprites/Player/fly.png differ diff --git a/sprites/Player/fly.png.import b/sprites/Player/fly.png.import new file mode 100644 index 0000000..24581c2 --- /dev/null +++ b/sprites/Player/fly.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vlerydf045be" +path="res://.godot/imported/fly.png-7465252e024b41cbf1191f44c86e34e9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Player/fly.png" +dest_files=["res://.godot/imported/fly.png-7465252e024b41cbf1191f44c86e34e9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/Player/graze_particles.tscn b/sprites/Player/graze_particles.tscn new file mode 100644 index 0000000..fb42620 --- /dev/null +++ b/sprites/Player/graze_particles.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=4 format=3 uid="uid://ykg8dydq006a"] + +[ext_resource type="Script" uid="uid://bdcxqp8royr5u" path="res://objects/scoreitem/scoreitem_particles.gd" id="1_s0vci"] +[ext_resource type="AudioStream" uid="uid://bv6v7v5dtvoii" path="res://audio/sfx/graze.wav" id="2_55vho"] + +[sub_resource type="Gradient" id="Gradient_aeam7"] +offsets = PackedFloat32Array(0, 0.513333, 1) +colors = PackedColorArray(0, 0.647059, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1) + +[node name="CPUParticles2D" type="CPUParticles2D"] +emitting = false +amount = 24 +lifetime = 0.15 +one_shot = true +speed_scale = 0.5 +explosiveness = 0.6 +randomness = 1.0 +lifetime_randomness = 1.0 +spread = 154.09 +gravity = Vector2(0, 630) +initial_velocity_min = 251.99 +initial_velocity_max = 484.86 +scale_amount_min = 1.5 +scale_amount_max = 2.5 +color_ramp = SubResource("Gradient_aeam7") +script = ExtResource("1_s0vci") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("2_55vho") +autoplay = true + +[connection signal="finished" from="." to="." method="_on_finished"] diff --git a/sprites/Player/idle.png b/sprites/Player/idle.png new file mode 100644 index 0000000..9133b45 Binary files /dev/null and b/sprites/Player/idle.png differ diff --git a/sprites/Player/idle.png.import b/sprites/Player/idle.png.import new file mode 100644 index 0000000..9cc7d5f --- /dev/null +++ b/sprites/Player/idle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dsdbecphufdey" +path="res://.godot/imported/idle.png-9054bf32c1393a8346626db9ba7bc5c5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Player/idle.png" +dest_files=["res://.godot/imported/idle.png-9054bf32c1393a8346626db9ba7bc5c5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/Player/player.png b/sprites/Player/player.png new file mode 100644 index 0000000..9d54071 Binary files /dev/null and b/sprites/Player/player.png differ diff --git a/sprites/Player/player.png.import b/sprites/Player/player.png.import new file mode 100644 index 0000000..fb66b19 --- /dev/null +++ b/sprites/Player/player.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8ouukg7qluae" +path="res://.godot/imported/player.png-19fbcaa9e04b2c92e31fc3f42fef7f03.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Player/player.png" +dest_files=["res://.godot/imported/player.png-19fbcaa9e04b2c92e31fc3f42fef7f03.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/Player/walk.png b/sprites/Player/walk.png new file mode 100644 index 0000000..b84fb16 Binary files /dev/null and b/sprites/Player/walk.png differ diff --git a/sprites/Player/walk.png.import b/sprites/Player/walk.png.import new file mode 100644 index 0000000..fd2ab34 --- /dev/null +++ b/sprites/Player/walk.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dujk3or3g5t2d" +path="res://.godot/imported/walk.png-0764d042f136ec81ae0a544baafde1ae.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/Player/walk.png" +dest_files=["res://.godot/imported/walk.png-0764d042f136ec81ae0a544baafde1ae.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/particles/fire_particles.png b/sprites/particles/fire_particles.png new file mode 100644 index 0000000..a7c80a4 Binary files /dev/null and b/sprites/particles/fire_particles.png differ diff --git a/sprites/particles/fire_particles.png.import b/sprites/particles/fire_particles.png.import new file mode 100644 index 0000000..a77d290 --- /dev/null +++ b/sprites/particles/fire_particles.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cd68hj3p7r01q" +path="res://.godot/imported/fire_particles.png-c65e9f3c38ed4f934213ea612b9b5d07.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/particles/fire_particles.png" +dest_files=["res://.godot/imported/fire_particles.png-c65e9f3c38ed4f934213ea612b9b5d07.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/screw/0c575d08-e62d-4013-9e08-172d0662fcda.png b/sprites/screw/0c575d08-e62d-4013-9e08-172d0662fcda.png new file mode 100644 index 0000000..f25e323 Binary files /dev/null and b/sprites/screw/0c575d08-e62d-4013-9e08-172d0662fcda.png differ diff --git a/sprites/screw/0c575d08-e62d-4013-9e08-172d0662fcda.png.import b/sprites/screw/0c575d08-e62d-4013-9e08-172d0662fcda.png.import new file mode 100644 index 0000000..32e20dc --- /dev/null +++ b/sprites/screw/0c575d08-e62d-4013-9e08-172d0662fcda.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dr1uub2l0vdh4" +path="res://.godot/imported/0c575d08-e62d-4013-9e08-172d0662fcda.png-85bbaf533684bf5839e709a662631e8d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/screw/0c575d08-e62d-4013-9e08-172d0662fcda.png" +dest_files=["res://.godot/imported/0c575d08-e62d-4013-9e08-172d0662fcda.png-85bbaf533684bf5839e709a662631e8d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/screw/23b869e4-5707-44a8-8bbc-a788d5c71275.png b/sprites/screw/23b869e4-5707-44a8-8bbc-a788d5c71275.png new file mode 100644 index 0000000..0858686 Binary files /dev/null and b/sprites/screw/23b869e4-5707-44a8-8bbc-a788d5c71275.png differ diff --git a/sprites/screw/23b869e4-5707-44a8-8bbc-a788d5c71275.png.import b/sprites/screw/23b869e4-5707-44a8-8bbc-a788d5c71275.png.import new file mode 100644 index 0000000..0303922 --- /dev/null +++ b/sprites/screw/23b869e4-5707-44a8-8bbc-a788d5c71275.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csqvymhme5h8t" +path="res://.godot/imported/23b869e4-5707-44a8-8bbc-a788d5c71275.png-f890a92533200697f912ede7ddc1693f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/screw/23b869e4-5707-44a8-8bbc-a788d5c71275.png" +dest_files=["res://.godot/imported/23b869e4-5707-44a8-8bbc-a788d5c71275.png-f890a92533200697f912ede7ddc1693f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/screw/30656deb-ca75-4981-8198-ad555b89764a.png b/sprites/screw/30656deb-ca75-4981-8198-ad555b89764a.png new file mode 100644 index 0000000..598897e Binary files /dev/null and b/sprites/screw/30656deb-ca75-4981-8198-ad555b89764a.png differ diff --git a/sprites/screw/30656deb-ca75-4981-8198-ad555b89764a.png.import b/sprites/screw/30656deb-ca75-4981-8198-ad555b89764a.png.import new file mode 100644 index 0000000..83fce3b --- /dev/null +++ b/sprites/screw/30656deb-ca75-4981-8198-ad555b89764a.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dutm1rklnb33t" +path="res://.godot/imported/30656deb-ca75-4981-8198-ad555b89764a.png-25da34d1e9a235f3f352f5fddc5ff4d5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/screw/30656deb-ca75-4981-8198-ad555b89764a.png" +dest_files=["res://.godot/imported/30656deb-ca75-4981-8198-ad555b89764a.png-25da34d1e9a235f3f352f5fddc5ff4d5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/screw/6ca66360-a47d-4690-88f8-b9c160416be3.png b/sprites/screw/6ca66360-a47d-4690-88f8-b9c160416be3.png new file mode 100644 index 0000000..caf258a Binary files /dev/null and b/sprites/screw/6ca66360-a47d-4690-88f8-b9c160416be3.png differ diff --git a/sprites/screw/6ca66360-a47d-4690-88f8-b9c160416be3.png.import b/sprites/screw/6ca66360-a47d-4690-88f8-b9c160416be3.png.import new file mode 100644 index 0000000..c30cc17 --- /dev/null +++ b/sprites/screw/6ca66360-a47d-4690-88f8-b9c160416be3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bptdaaemdeqt" +path="res://.godot/imported/6ca66360-a47d-4690-88f8-b9c160416be3.png-531dd690299341ff7bb196737d82cc88.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/screw/6ca66360-a47d-4690-88f8-b9c160416be3.png" +dest_files=["res://.godot/imported/6ca66360-a47d-4690-88f8-b9c160416be3.png-531dd690299341ff7bb196737d82cc88.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/screw/72235a50-452c-4104-a5b4-447ee5c42785.png b/sprites/screw/72235a50-452c-4104-a5b4-447ee5c42785.png new file mode 100644 index 0000000..b19e261 Binary files /dev/null and b/sprites/screw/72235a50-452c-4104-a5b4-447ee5c42785.png differ diff --git a/sprites/screw/72235a50-452c-4104-a5b4-447ee5c42785.png.import b/sprites/screw/72235a50-452c-4104-a5b4-447ee5c42785.png.import new file mode 100644 index 0000000..39658bf --- /dev/null +++ b/sprites/screw/72235a50-452c-4104-a5b4-447ee5c42785.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dud5u6ojbsupr" +path="res://.godot/imported/72235a50-452c-4104-a5b4-447ee5c42785.png-e0245cc2da48ccbb0f1cd9d05b1a1747.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/screw/72235a50-452c-4104-a5b4-447ee5c42785.png" +dest_files=["res://.godot/imported/72235a50-452c-4104-a5b4-447ee5c42785.png-e0245cc2da48ccbb0f1cd9d05b1a1747.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/sprites/screw/c433a95b-a214-4bdd-b58e-8ef611c6be46.png b/sprites/screw/c433a95b-a214-4bdd-b58e-8ef611c6be46.png new file mode 100644 index 0000000..5f34b88 Binary files /dev/null and b/sprites/screw/c433a95b-a214-4bdd-b58e-8ef611c6be46.png differ diff --git a/sprites/screw/c433a95b-a214-4bdd-b58e-8ef611c6be46.png.import b/sprites/screw/c433a95b-a214-4bdd-b58e-8ef611c6be46.png.import new file mode 100644 index 0000000..51230dd --- /dev/null +++ b/sprites/screw/c433a95b-a214-4bdd-b58e-8ef611c6be46.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvuhonmcq21hk" +path="res://.godot/imported/c433a95b-a214-4bdd-b58e-8ef611c6be46.png-e3e49a812eae468ab20f4b29deda1aab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/screw/c433a95b-a214-4bdd-b58e-8ef611c6be46.png" +dest_files=["res://.godot/imported/c433a95b-a214-4bdd-b58e-8ef611c6be46.png-e3e49a812eae468ab20f4b29deda1aab.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tilesets/block.png b/tilesets/block.png new file mode 100644 index 0000000..c2283e8 Binary files /dev/null and b/tilesets/block.png differ diff --git a/tilesets/block.png.import b/tilesets/block.png.import new file mode 100644 index 0000000..c28faf1 --- /dev/null +++ b/tilesets/block.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b460bcnqqpjum" +path="res://.godot/imported/block.png-089e514f545622f39a3d5f4d0387ef86.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tilesets/block.png" +dest_files=["res://.godot/imported/block.png-089e514f545622f39a3d5f4d0387ef86.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tilesets/death.tres b/tilesets/death.tres new file mode 100644 index 0000000..dfe0d2e --- /dev/null +++ b/tilesets/death.tres @@ -0,0 +1,15 @@ +[gd_resource type="TileSet" load_steps=3 format=3 uid="uid://kdpofvscbp6m"] + +[ext_resource type="Texture2D" uid="uid://bjirp2g8mawch" path="res://spikes.png" id="1_mfmc3"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_0b4aj"] +texture = ExtResource("1_mfmc3") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) + +[resource] +tile_size = Vector2i(64, 64) +physics_layer_0/collision_layer = 1 +physics_layer_0/collision_mask = 8 +sources/0 = SubResource("TileSetAtlasSource_0b4aj") diff --git a/tilesets/tile.tres b/tilesets/tile.tres new file mode 100644 index 0000000..204ab17 --- /dev/null +++ b/tilesets/tile.tres @@ -0,0 +1,38 @@ +[gd_resource type="TileSet" load_steps=5 format=3 uid="uid://cbvgfixmub3am"] + +[ext_resource type="Texture2D" uid="uid://dla2vwxy8vmt8" path="res://block.png" id="1_br521"] +[ext_resource type="Texture2D" uid="uid://b460bcnqqpjum" path="res://tilesets/block.png" id="2_5jwfb"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_5jwfb"] +texture = ExtResource("1_br521") +texture_region_size = Vector2i(64, 64) +3:1/0 = 0 +3:0/0 = 0 +2:0/0 = 0 +0:0/0 = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:1/0 = 0 +2:1/0 = 0 +3:2/0 = 0 +3:3/0 = 0 +2:3/0 = 0 +1:2/0 = 0 +0:1/0 = 0 +1:0/0 = 0 +2:2/0 = 0 +1:3/0 = 0 +0:3/0 = 0 +0:2/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_uehjq"] +texture = ExtResource("2_5jwfb") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) + +[resource] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 2 +physics_layer_0/collision_mask = 31 +sources/0 = SubResource("TileSetAtlasSource_5jwfb") +sources/1 = SubResource("TileSetAtlasSource_uehjq") diff --git a/ui/hud.gd b/ui/hud.gd new file mode 100644 index 0000000..8cb0558 --- /dev/null +++ b/ui/hud.gd @@ -0,0 +1,13 @@ +extends Control + +@onready var fuel_meter = $FuelMeter +@onready var score_counter = $ScoreCounter +@onready var multiplier_anims = $MultiplierAnims +@onready var append_score_anims = $AppendScoreAnims + +func _physics_process(delta: float) -> void: + var player = get_owner().get_node("Player") + fuel_meter.value = player.fuel + score_counter.text = "SCORE " + str(GlobalStats.score) + %ScoreMultiplier.text = str(snapped(GlobalStats.score_multiplier, 0.1)) + "x" + %ScoreToAdd.text = str(GlobalStats.score_to_add) diff --git a/ui/hud.gd.uid b/ui/hud.gd.uid new file mode 100644 index 0000000..ff9efc3 --- /dev/null +++ b/ui/hud.gd.uid @@ -0,0 +1 @@ +uid://c0bylwyhxlu28 diff --git a/ui/hud.tscn b/ui/hud.tscn new file mode 100644 index 0000000..b8ba80d --- /dev/null +++ b/ui/hud.tscn @@ -0,0 +1,205 @@ +[gd_scene load_steps=8 format=3 uid="uid://by8rt0eurn0uh"] + +[ext_resource type="Script" uid="uid://c0bylwyhxlu28" path="res://ui/hud.gd" id="1_rbyyf"] + +[sub_resource type="Animation" id="Animation_276te"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ScoreMultiplier:theme_override_font_sizes/font_size") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [45] +} + +[sub_resource type="Animation" id="Animation_rbyyf"] +resource_name = "multiplier_grow" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ScoreMultiplier:theme_override_font_sizes/font_size") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.166667, 0.233333, 0.3), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [45, 55, 60, 55, 45] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_546lt"] +_data = { +&"RESET": SubResource("Animation_276te"), +&"multiplier_grow": SubResource("Animation_rbyyf") +} + +[sub_resource type="Animation" id="Animation_7ihmi"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ScoreToAdd:theme_override_font_sizes/font_size") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [11] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ScoreToAdd:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(35, 39)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("ScoreToAdd:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ScoreToAdd:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} + +[sub_resource type="Animation" id="Animation_546lt"] +resource_name = "append_score" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ScoreToAdd:theme_override_font_sizes/font_size") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [11, 31] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ScoreToAdd:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.399396), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(35, 39), Vector2(136, 12)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("ScoreToAdd:scale") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4, 0.466667, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(-1, -1), Vector2(1, 1), Vector2(1.1, 1.1), Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ScoreToAdd:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 6.28319] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_en2x2"] +_data = { +&"RESET": SubResource("Animation_7ihmi"), +&"append_score": SubResource("Animation_546lt") +} + +[node name="Hud" type="Control" groups=["hud"]] +layout_mode = 3 +anchors_preset = 0 +scale = Vector2(0.5, 0.5) +script = ExtResource("1_rbyyf") + +[node name="FuelMeter" type="ProgressBar" parent="."] +layout_mode = 0 +offset_left = 14.0 +offset_top = 15.0 +offset_right = 46.0 +offset_bottom = 115.0 +value = 36.0 +fill_mode = 3 + +[node name="ScoreCounter" type="Label" parent="."] +layout_mode = 0 +offset_left = 76.0 +offset_top = 16.0 +offset_right = 127.0 +offset_bottom = 39.0 +text = "SCORE" + +[node name="ScoreMultiplier" type="Label" parent="."] +unique_name_in_owner = true +layout_mode = 0 +offset_left = 32.0 +offset_top = -17.0 +offset_right = 176.0 +offset_bottom = 126.0 +theme_override_font_sizes/font_size = 45 +text = "2.0X" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ScoreToAdd" type="Label" parent="."] +unique_name_in_owner = true +layout_mode = 0 +offset_left = 35.0 +offset_top = 39.0 +offset_right = 165.0 +offset_bottom = 122.0 +pivot_offset = Vector2(65, 49.5) +theme_override_font_sizes/font_size = 11 +text = "1000" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="MultiplierAnims" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_546lt") +} + +[node name="AppendScoreAnims" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_en2x2") +} diff --git a/weapons/spread_shot.tscn b/weapons/spread_shot.tscn new file mode 100644 index 0000000..811284f --- /dev/null +++ b/weapons/spread_shot.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://cwumy5cb7aptn"] + +[sub_resource type="GDScript" id="GDScript_74dyb"] +script/source = "extends Node2D +" + +[node name="Weapon" type="Node2D"] +script = SubResource("GDScript_74dyb") diff --git a/weapons/spreadshot/spread_shot.tscn b/weapons/spreadshot/spread_shot.tscn new file mode 100644 index 0000000..89d5480 --- /dev/null +++ b/weapons/spreadshot/spread_shot.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=2 format=3 uid="uid://nipyx404f7rd"] + +[ext_resource type="PackedScene" uid="uid://cqqqblpc3j4hn" path="res://objects/player/player_bullet/player_bullet.tscn" id="1_qfcic"] + +[node name="SpreadShot" type="Node2D"] + +[node name="PlayerBullet" parent="." instance=ExtResource("1_qfcic")] +speed = Vector2(300, 0) +infinite_range = false + +[node name="PlayerBullet4" parent="." instance=ExtResource("1_qfcic")] +speed = Vector2(300, 150) +infinite_range = false + +[node name="PlayerBullet2" parent="." instance=ExtResource("1_qfcic")] +speed = Vector2(300, 300) +infinite_range = false + +[node name="PlayerBullet5" parent="." instance=ExtResource("1_qfcic")] +speed = Vector2(300, -150) +infinite_range = false + +[node name="PlayerBullet3" parent="." instance=ExtResource("1_qfcic")] +speed = Vector2(300, -300) +infinite_range = false