Compare commits

..

10 commits

Author SHA1 Message Date
Henry
accc463791 Initial reorganization of shmup prroject; temp player sprites added. 2026-01-10 18:26:44 +00:00
Henry
02d14e913c Score now briefly pops to a larger size as it increases in value. 2026-01-03 18:08:32 +00:00
Henry
f1eec30167 Decreased movement and shot delay of enemies based on number of enemies
remaining; increased tween speed of enemy bounce at 25% remaining.
2025-12-31 13:34:29 +00:00
Henry
7a0ea55ff1 Created Parallax2D background nodes from existing starfield background. 2025-12-29 14:00:03 +00:00
Henry
4dd7a7435b Updated Title shader. 2025-12-29 09:40:38 +00:00
Henry
6b3270bbb2 Added an interim title with shader effect. 2025-12-28 13:38:13 +00:00
Henry
b5d97c0ffb Fixed shield issue by removing old experiments and ensuring the right
values were being used!
2025-12-27 16:25:06 +00:00
Henry
c8d578af04 Enemy spawning code now reference COLS and ROWS constants; removed
extraneous enemy_count removal.
2025-12-27 10:08:30 +00:00
Henry
dac1601f4a Troubleshooting enemy count. 2025-12-24 16:48:40 +00:00
Henry
25a4897697 Tracking down the spawning of extra enemies; removed extraneous enemy
counting and queue_free of enemies.
2025-12-24 15:59:15 +00:00
117 changed files with 855 additions and 204 deletions

View file

Before

Width:  |  Height:  |  Size: 559 B

After

Width:  |  Height:  |  Size: 559 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://h04wm5a27u0" uid="uid://h04wm5a27u0"
path="res://.godot/imported/Explosion (16 x 16).png-ebecf90aec797295bb48cf06289281f5.ctex" path="res://.godot/imported/Explosion (16 x 16).png-10ea06824753728dfc19ef226632248a.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Effects/Explosion (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Effects/Explosion (16 x 16).png"
dest_files=["res://.godot/imported/Explosion (16 x 16).png-ebecf90aec797295bb48cf06289281f5.ctex"] dest_files=["res://.godot/imported/Explosion (16 x 16).png-10ea06824753728dfc19ef226632248a.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 389 B

After

Width:  |  Height:  |  Size: 389 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dh6xvjf8hur3x" uid="uid://dh6xvjf8hur3x"
path="res://.godot/imported/Sparkle (16 x 16).png-0eec6e943106564747a5e3e618d9c5a3.ctex" path="res://.godot/imported/Sparkle (16 x 16).png-51f692d945a1c4cd8aa46e1db0e33571.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Effects/Sparkle (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Effects/Sparkle (16 x 16).png"
dest_files=["res://.godot/imported/Sparkle (16 x 16).png-0eec6e943106564747a5e3e618d9c5a3.ctex"] dest_files=["res://.godot/imported/Sparkle (16 x 16).png-51f692d945a1c4cd8aa46e1db0e33571.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 666 B

After

Width:  |  Height:  |  Size: 666 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://ufutxde5gpox" uid="uid://ufutxde5gpox"
path="res://.godot/imported/Alan (16 x 16).png-5dbfafef59bec6373df61239fa506a5d.ctex" path="res://.godot/imported/Alan (16 x 16).png-7ada1508495030355bf27914ee531a57.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Enemies/Alan (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Enemies/Alan (16 x 16).png"
dest_files=["res://.godot/imported/Alan (16 x 16).png-5dbfafef59bec6373df61239fa506a5d.ctex"] dest_files=["res://.godot/imported/Alan (16 x 16).png-7ada1508495030355bf27914ee531a57.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 463 B

After

Width:  |  Height:  |  Size: 463 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://deyu1prtitqcp" uid="uid://deyu1prtitqcp"
path="res://.godot/imported/Bon_Bon (16 x 16).png-7ea532fd020645536abf60ee7f38dace.ctex" path="res://.godot/imported/Bon_Bon (16 x 16).png-7d3c00136ce2bbe792a84d36c6c05671.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Enemies/Bon_Bon (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Enemies/Bon_Bon (16 x 16).png"
dest_files=["res://.godot/imported/Bon_Bon (16 x 16).png-7ea532fd020645536abf60ee7f38dace.ctex"] dest_files=["res://.godot/imported/Bon_Bon (16 x 16).png-7d3c00136ce2bbe792a84d36c6c05671.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 578 B

After

Width:  |  Height:  |  Size: 578 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://0fdd82dr2hio" uid="uid://0fdd82dr2hio"
path="res://.godot/imported/Lips (16 x 16).png-3265ce45d4393011117c8b9b4d47738a.ctex" path="res://.godot/imported/Lips (16 x 16).png-b7e8b839b1294d5c884878092bef7f2d.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Enemies/Lips (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Enemies/Lips (16 x 16).png"
dest_files=["res://.godot/imported/Lips (16 x 16).png-3265ce45d4393011117c8b9b4d47738a.ctex"] dest_files=["res://.godot/imported/Lips (16 x 16).png-b7e8b839b1294d5c884878092bef7f2d.ctex"]
[params] [params]

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://8j06xyft25w0" uid="uid://8j06xyft25w0"
path="res://.godot/imported/Circle_+_Square_+_Missile_pick-ups (16 x 16).png-3bbaa22444104ff44581c6a33a0ad891.ctex" path="res://.godot/imported/Circle_+_Square_+_Missile_pick-ups (16 x 16).png-d8dc9d5a0db9ea33b0f238af116c345c.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Items/Circle_+_Square_+_Missile_pick-ups (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Items/Circle_+_Square_+_Missile_pick-ups (16 x 16).png"
dest_files=["res://.godot/imported/Circle_+_Square_+_Missile_pick-ups (16 x 16).png-3bbaa22444104ff44581c6a33a0ad891.ctex"] dest_files=["res://.godot/imported/Circle_+_Square_+_Missile_pick-ups (16 x 16).png-d8dc9d5a0db9ea33b0f238af116c345c.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 484 B

After

Width:  |  Height:  |  Size: 484 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://by677b0ymmyag" uid="uid://by677b0ymmyag"
path="res://.godot/imported/Power_item (16 x 16).png-4df679887445482126f6d7476b544382.ctex" path="res://.godot/imported/Power_item (16 x 16).png-de100257317c691ac9837c30e3588587.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Items/Power_item (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Items/Power_item (16 x 16).png"
dest_files=["res://.godot/imported/Power_item (16 x 16).png-4df679887445482126f6d7476b544382.ctex"] dest_files=["res://.godot/imported/Power_item (16 x 16).png-de100257317c691ac9837c30e3588587.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 360 B

After

Width:  |  Height:  |  Size: 360 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://ces8fm7lxh574" uid="uid://ces8fm7lxh574"
path="res://.godot/imported/Boosters (16 x 16).png-8b50a40dbdc7e815becad87ceb60848b.ctex" path="res://.godot/imported/Boosters (16 x 16).png-c1fb49e062d579546acd530b756eabef.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Player ship/Boosters (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Player ship/Boosters (16 x 16).png"
dest_files=["res://.godot/imported/Boosters (16 x 16).png-8b50a40dbdc7e815becad87ceb60848b.ctex"] dest_files=["res://.godot/imported/Boosters (16 x 16).png-c1fb49e062d579546acd530b756eabef.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 353 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bjdhq42ummgky" uid="uid://bjdhq42ummgky"
path="res://.godot/imported/Boosters_left (16 x 16).png-8a4708d671dcd3d8f5b39892aaefbef7.ctex" path="res://.godot/imported/Boosters_left (16 x 16).png-4af3697e68c8e270d3ebf02c0fbc3a71.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Player ship/Boosters_left (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Player ship/Boosters_left (16 x 16).png"
dest_files=["res://.godot/imported/Boosters_left (16 x 16).png-8a4708d671dcd3d8f5b39892aaefbef7.ctex"] dest_files=["res://.godot/imported/Boosters_left (16 x 16).png-4af3697e68c8e270d3ebf02c0fbc3a71.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 351 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cjv3xbuj65pav" uid="uid://cjv3xbuj65pav"
path="res://.godot/imported/Boosters_right (16 x 16).png-6ce79aae3f2383fac5bef1fecccbb764.ctex" path="res://.godot/imported/Boosters_right (16 x 16).png-d00d85348c642623576e384a8f745c5d.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Player ship/Boosters_right (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Player ship/Boosters_right (16 x 16).png"
dest_files=["res://.godot/imported/Boosters_right (16 x 16).png-6ce79aae3f2383fac5bef1fecccbb764.ctex"] dest_files=["res://.godot/imported/Boosters_right (16 x 16).png-d00d85348c642623576e384a8f745c5d.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 567 B

After

Width:  |  Height:  |  Size: 567 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://di2xhcwcdbhxg" uid="uid://di2xhcwcdbhxg"
path="res://.godot/imported/Player_ship (16 x 16).png-be69be68cd3df6db0d5c677798e0b7e7.ctex" path="res://.godot/imported/Player_ship (16 x 16).png-bf56686d7b7006d03ca789504edfedcc.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Player ship/Player_ship (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Player ship/Player_ship (16 x 16).png"
dest_files=["res://.godot/imported/Player_ship (16 x 16).png-be69be68cd3df6db0d5c677798e0b7e7.ctex"] dest_files=["res://.godot/imported/Player_ship (16 x 16).png-bf56686d7b7006d03ca789504edfedcc.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 403 B

After

Width:  |  Height:  |  Size: 403 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dubjbfdp6ep34" uid="uid://dubjbfdp6ep34"
path="res://.godot/imported/Enemy_projectile (16 x 16).png-d29bdfb3abd80f316f7896a0abd02db7.ctex" path="res://.godot/imported/Enemy_projectile (16 x 16).png-5be4a0e5b91c2e0619e55035d68c4d36.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Projectiles/Enemy_projectile (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Projectiles/Enemy_projectile (16 x 16).png"
dest_files=["res://.godot/imported/Enemy_projectile (16 x 16).png-d29bdfb3abd80f316f7896a0abd02db7.ctex"] dest_files=["res://.godot/imported/Enemy_projectile (16 x 16).png-5be4a0e5b91c2e0619e55035d68c4d36.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 234 B

After

Width:  |  Height:  |  Size: 234 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://yy8fjexb6fv6" uid="uid://yy8fjexb6fv6"
path="res://.godot/imported/Player_beam (16 x 16).png-6a101320be4a70758755fcdcff6a81d3.ctex" path="res://.godot/imported/Player_beam (16 x 16).png-38c42a8d236a55e4c8d1cc5c8bc130df.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Projectiles/Player_beam (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Projectiles/Player_beam (16 x 16).png"
dest_files=["res://.godot/imported/Player_beam (16 x 16).png-6a101320be4a70758755fcdcff6a81d3.ctex"] dest_files=["res://.godot/imported/Player_beam (16 x 16).png-38c42a8d236a55e4c8d1cc5c8bc130df.ctex"]
[params] [params]

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bltpqew3le1j" uid="uid://bltpqew3le1j"
path="res://.godot/imported/Player_charged_beam (16 x 16).png-89f205acbdb826f694a802bddbca80e1.ctex" path="res://.godot/imported/Player_charged_beam (16 x 16).png-40b2129c04ee8d4d77b082252425c6bc.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Projectiles/Player_charged_beam (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Projectiles/Player_charged_beam (16 x 16).png"
dest_files=["res://.godot/imported/Player_charged_beam (16 x 16).png-89f205acbdb826f694a802bddbca80e1.ctex"] dest_files=["res://.godot/imported/Player_charged_beam (16 x 16).png-40b2129c04ee8d4d77b082252425c6bc.ctex"]
[params] [params]

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bcib1rh67w22s" uid="uid://bcib1rh67w22s"
path="res://.godot/imported/Player_charged_donut_shot (16 x 16).png-7184c8cc5c0367908de947129c2711d9.ctex" path="res://.godot/imported/Player_charged_donut_shot (16 x 16).png-c71b6a6236f8909972462278a3902cc3.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Projectiles/Player_charged_donut_shot (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Projectiles/Player_charged_donut_shot (16 x 16).png"
dest_files=["res://.godot/imported/Player_charged_donut_shot (16 x 16).png-7184c8cc5c0367908de947129c2711d9.ctex"] dest_files=["res://.godot/imported/Player_charged_donut_shot (16 x 16).png-c71b6a6236f8909972462278a3902cc3.ctex"]
[params] [params]

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cqmvwlbyqiy3x" uid="uid://cqmvwlbyqiy3x"
path="res://.godot/imported/Player_charged_square_shot (16 x 16).png-cd56d64393c6907a8348176a56cab361.ctex" path="res://.godot/imported/Player_charged_square_shot (16 x 16).png-198a58066247c4aa5ad0faade85d1d40.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Projectiles/Player_charged_square_shot (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Projectiles/Player_charged_square_shot (16 x 16).png"
dest_files=["res://.godot/imported/Player_charged_square_shot (16 x 16).png-cd56d64393c6907a8348176a56cab361.ctex"] dest_files=["res://.godot/imported/Player_charged_square_shot (16 x 16).png-198a58066247c4aa5ad0faade85d1d40.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 264 B

After

Width:  |  Height:  |  Size: 264 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bae3jehbndemu" uid="uid://bae3jehbndemu"
path="res://.godot/imported/Player_donut_shot (16 x 16).png-3f41fd34f88147e37ae65f3f0c7f7320.ctex" path="res://.godot/imported/Player_donut_shot (16 x 16).png-953e0fd6e2c64a8e437302b46d5129bf.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Projectiles/Player_donut_shot (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Projectiles/Player_donut_shot (16 x 16).png"
dest_files=["res://.godot/imported/Player_donut_shot (16 x 16).png-3f41fd34f88147e37ae65f3f0c7f7320.ctex"] dest_files=["res://.godot/imported/Player_donut_shot (16 x 16).png-953e0fd6e2c64a8e437302b46d5129bf.ctex"]
[params] [params]

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://b3y10poc002pe" uid="uid://b3y10poc002pe"
path="res://.godot/imported/Player_missile_shots (16 x 16).png-66b040bba7cc3550f183b3780caee8b2.ctex" path="res://.godot/imported/Player_missile_shots (16 x 16).png-94448a0c9c305a763d01e89b425ad689.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Projectiles/Player_missile_shots (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Projectiles/Player_missile_shots (16 x 16).png"
dest_files=["res://.godot/imported/Player_missile_shots (16 x 16).png-66b040bba7cc3550f183b3780caee8b2.ctex"] dest_files=["res://.godot/imported/Player_missile_shots (16 x 16).png-94448a0c9c305a763d01e89b425ad689.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 384 B

After

Width:  |  Height:  |  Size: 384 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bwrwcqrw2t7bs" uid="uid://bwrwcqrw2t7bs"
path="res://.godot/imported/Player_square_shot (16 x 16).png-d2270dc7f4c93c516f46242f96456f80.ctex" path="res://.godot/imported/Player_square_shot (16 x 16).png-1f16c7af27ead57635098636323e0b63.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Projectiles/Player_square_shot (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/Projectiles/Player_square_shot (16 x 16).png"
dest_files=["res://.godot/imported/Player_square_shot (16 x 16).png-d2270dc7f4c93c516f46242f96456f80.ctex"] dest_files=["res://.godot/imported/Player_square_shot (16 x 16).png-1f16c7af27ead57635098636323e0b63.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 602 B

After

Width:  |  Height:  |  Size: 602 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://jj8b7vqj3ihx" uid="uid://jj8b7vqj3ihx"
path="res://.godot/imported/Space_BG (2 frames) (64 x 64).png-29eb07262f4b59c70b5f895f08b33a15.ctex" path="res://.godot/imported/Space_BG (2 frames) (64 x 64).png-38c14992b67aa828caac889388a35d97.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/Space_BG (2 frames) (64 x 64).png" source_file="res://_graphics/Mini Pixel Pack 3/Space_BG (2 frames) (64 x 64).png"
dest_files=["res://.godot/imported/Space_BG (2 frames) (64 x 64).png-29eb07262f4b59c70b5f895f08b33a15.ctex"] dest_files=["res://.godot/imported/Space_BG (2 frames) (64 x 64).png-38c14992b67aa828caac889388a35d97.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 338 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bubqwoum50gf8" uid="uid://bubqwoum50gf8"
path="res://.godot/imported/GAME_OVER (72 x 8).png-b0aed7fd8bca761f2bc09f7c32588594.ctex" path="res://.godot/imported/GAME_OVER (72 x 8).png-6585a10b6780734958587436f91c0a47.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/UI objects/GAME_OVER (72 x 8).png" source_file="res://_graphics/Mini Pixel Pack 3/UI objects/GAME_OVER (72 x 8).png"
dest_files=["res://.godot/imported/GAME_OVER (72 x 8).png-b0aed7fd8bca761f2bc09f7c32588594.ctex"] dest_files=["res://.godot/imported/GAME_OVER (72 x 8).png-6585a10b6780734958587436f91c0a47.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 298 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://0g0350b8uw5" uid="uid://0g0350b8uw5"
path="res://.godot/imported/Item_held_box (16 x 16).png-3722eea04199d858c350b4056721dc11.ctex" path="res://.godot/imported/Item_held_box (16 x 16).png-8660880f30d21f51910839767fe459a0.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/UI objects/Item_held_box (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/UI objects/Item_held_box (16 x 16).png"
dest_files=["res://.godot/imported/Item_held_box (16 x 16).png-3722eea04199d858c350b4056721dc11.ctex"] dest_files=["res://.godot/imported/Item_held_box (16 x 16).png-8660880f30d21f51910839767fe459a0.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 368 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://ddh7mk2ekhq3u" uid="uid://ddh7mk2ekhq3u"
path="res://.godot/imported/Number_font (8 x 8).png-e706f36eadb140398b2a07c1b9215654.ctex" path="res://.godot/imported/Number_font (8 x 8).png-3fad5e13aff75702bf7663ac584e0373.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/UI objects/Number_font (8 x 8).png" source_file="res://_graphics/Mini Pixel Pack 3/UI objects/Number_font (8 x 8).png"
dest_files=["res://.godot/imported/Number_font (8 x 8).png-e706f36eadb140398b2a07c1b9215654.ctex"] dest_files=["res://.godot/imported/Number_font (8 x 8).png-3fad5e13aff75702bf7663ac584e0373.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 330 B

After

Width:  |  Height:  |  Size: 330 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://b2bqurwj2nfiq" uid="uid://b2bqurwj2nfiq"
path="res://.godot/imported/Player_life_icon (16 x 16).png-7a4677c243ab1126885bee36bf4021a9.ctex" path="res://.godot/imported/Player_life_icon (16 x 16).png-a4bdd8e7d55c5b46a71afc8f2ca0fc54.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/UI objects/Player_life_icon (16 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/UI objects/Player_life_icon (16 x 16).png"
dest_files=["res://.godot/imported/Player_life_icon (16 x 16).png-7a4677c243ab1126885bee36bf4021a9.ctex"] dest_files=["res://.godot/imported/Player_life_icon (16 x 16).png-a4bdd8e7d55c5b46a71afc8f2ca0fc54.ctex"]
[params] [params]

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cpm0la8lccja1" uid="uid://cpm0la8lccja1"
path="res://.godot/imported/Power_+_charge_bars (full + empty) (32 x 16).png-332abb785dd99b7e759f933d2e5ccf61.ctex" path="res://.godot/imported/Power_+_charge_bars (full + empty) (32 x 16).png-911fe50052e961e55988a9735b77ddd2.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/UI objects/Power_+_charge_bars (full + empty) (32 x 16).png" source_file="res://_graphics/Mini Pixel Pack 3/UI objects/Power_+_charge_bars (full + empty) (32 x 16).png"
dest_files=["res://.godot/imported/Power_+_charge_bars (full + empty) (32 x 16).png-332abb785dd99b7e759f933d2e5ccf61.ctex"] dest_files=["res://.godot/imported/Power_+_charge_bars (full + empty) (32 x 16).png-911fe50052e961e55988a9735b77ddd2.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 310 B

After

Width:  |  Height:  |  Size: 310 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bonoqs5pisflo" uid="uid://bonoqs5pisflo"
path="res://.godot/imported/START (48 x 8).png-b41e5258a8560332501673d6e19664b8.ctex" path="res://.godot/imported/START (48 x 8).png-9b06176d0a103cf01d79aefbbc461dc4.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Mini Pixel Pack 3/UI objects/START (48 x 8).png" source_file="res://_graphics/Mini Pixel Pack 3/UI objects/START (48 x 8).png"
dest_files=["res://.godot/imported/START (48 x 8).png-b41e5258a8560332501673d6e19664b8.ctex"] dest_files=["res://.godot/imported/START (48 x 8).png-9b06176d0a103cf01d79aefbbc461dc4.ctex"]
[params] [params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dfbykvik8gknm"
path="res://.godot/imported/WINNER (72 x 8).png-fb2a694f46cb50d065669fdaceeaa3d5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://_graphics/Mini Pixel Pack 3/UI objects/WINNER (72 x 8).png"
dest_files=["res://.godot/imported/WINNER (72 x 8).png-fb2a694f46cb50d065669fdaceeaa3d5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View file

Before

Width:  |  Height:  |  Size: 599 B

After

Width:  |  Height:  |  Size: 599 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://d11molrkdjjh5" uid="uid://d11molrkdjjh5"
path="res://.godot/imported/bar_background.png-dca6d05f963330b50cc37c3e2531e06b.ctex" path="res://.godot/imported/bar_background.png-9b09e3dc4c45cf686c0f1772ed77964c.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://bar_background.png" source_file="res://_graphics/bar_background.png"
dest_files=["res://.godot/imported/bar_background.png-dca6d05f963330b50cc37c3e2531e06b.ctex"] dest_files=["res://.godot/imported/bar_background.png-9b09e3dc4c45cf686c0f1772ed77964c.ctex"]
[params] [params]

View file

Before

Width:  |  Height:  |  Size: 629 B

After

Width:  |  Height:  |  Size: 629 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bsl3pxvxiuoqg" uid="uid://bsl3pxvxiuoqg"
path="res://.godot/imported/bar_foreground.png-ba23043b2beb5c69470cabe71365b89a.ctex" path="res://.godot/imported/bar_foreground.png-e8688360b4228b60e66d35e5fe83a484.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://bar_foreground.png" source_file="res://_graphics/bar_foreground.png"
dest_files=["res://.godot/imported/bar_foreground.png-ba23043b2beb5c69470cabe71365b89a.ctex"] dest_files=["res://.godot/imported/bar_foreground.png-e8688360b4228b60e66d35e5fe83a484.ctex"]
[params] [params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bn5iw6fm88p2i"
path="res://.godot/imported/background stars.png-d3443d00ba45f5379fb933f66ed04d0f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://_graphics/parallax/background stars.png"
dest_files=["res://.godot/imported/background stars.png-d3443d00ba45f5379fb933f66ed04d0f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dpkeiihfos28m"
path="res://.godot/imported/foreground stars.png-fa82e0e1e3ba4e4f28cb26da6d956c9a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://_graphics/parallax/foreground stars.png"
dest_files=["res://.godot/imported/foreground stars.png-fa82e0e1e3ba4e4f28cb26da6d956c9a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://4n7q1wsq13ub"
path="res://.godot/imported/foreground stars_b.png-0dc22920b122a8ffb19dba716641d43a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://_graphics/parallax/foreground stars_b.png"
dest_files=["res://.godot/imported/foreground stars_b.png-0dc22920b122a8ffb19dba716641d43a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c855276xbf7g6"
path="res://.godot/imported/midground stars.png-0a37acc0906df9c54a708d664ba73870.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://_graphics/parallax/midground stars.png"
dest_files=["res://.godot/imported/midground stars.png-0a37acc0906df9c54a708d664ba73870.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://db2v7dea5wi4"
path="res://.godot/imported/title - no border.png-a0bb00f06f664fc73865ab566cdb14f1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://_graphics/title - no border.png"
dest_files=["res://.godot/imported/title - no border.png-a0bb00f06f664fc73865ab566cdb14f1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

BIN
_graphics/title_white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dfkr6mlotol6"
path="res://.godot/imported/title_white.png-25688760ca8094909ee73f6e839a0c24.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://_graphics/title_white.png"
dest_files=["res://.godot/imported/title_white.png-25688760ca8094909ee73f6e839a0c24.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View file

@ -10,14 +10,15 @@ config_version=5
[application] [application]
config/name="shmup01b" config/name="the third place"
run/main_scene="uid://cc2dnhuv4qx7m"
config/features=PackedStringArray("4.5", "Forward Plus") config/features=PackedStringArray("4.5", "Forward Plus")
config/icon="res://icon.svg" config/icon="res://icon.svg"
[autoload] [autoload]
EventBus="*res://event_bus.gd" EventBus="*res://scenes/event_bus.gd"
Global="*res://global.gd" Global="*res://scenes/global.gd"
[display] [display]
@ -26,6 +27,11 @@ window/size/viewport_height=320
window/size/window_width_override=720 window/size/window_width_override=720
window/size/window_height_override=960 window/size/window_height_override=960
window/stretch/mode="canvas_items" window/stretch/mode="canvas_items"
window/movie_file="/Users/henryfaber/Downloads/shmup_capture.avi"
[editor]
movie_writer/movie_file="/Users/henryfaber/Downloads/shmup_capture.avi"
[input] [input]

View file

@ -1,7 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://bwxxdrdvo3le0"] [gd_scene load_steps=4 format=3 uid="uid://bwxxdrdvo3le0"]
[ext_resource type="Script" uid="uid://c6oorp45vpqpc" path="res://bullet.gd" id="1_v8qja"] [ext_resource type="Script" uid="uid://c6oorp45vpqpc" path="res://scenes/bullet.gd" id="1_v8qja"]
[ext_resource type="Texture2D" uid="uid://bltpqew3le1j" path="res://Mini Pixel Pack 3/Projectiles/Player_charged_beam (16 x 16).png" id="2_t4vbm"] [ext_resource type="Texture2D" uid="uid://bltpqew3le1j" path="res://_graphics/Mini Pixel Pack 3/Projectiles/Player_charged_beam (16 x 16).png" id="2_t4vbm"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2b2rl"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_2b2rl"]
size = Vector2(12, 10) size = Vector2(12, 10)

View file

@ -1,15 +1,17 @@
extends Area2D extends Area2D
var bullet_scene = preload("res://enemy_bullet.tscn") var bullet_scene = preload("res://scenes/enemy_bullet.tscn")
var start_pos = Vector2.ZERO var start_pos = Vector2.ZERO
var speed = 0 var speed = 0
var tween_speed: float = 1.4
var exploding = false var exploding = false
var enemy_move_aggression = randf_range(5, 20)
var enemy_shoot_aggression = randf_range(4, 20)
@onready var screensize = get_viewport_rect().size @onready var screensize = get_viewport_rect().size
func _ready() -> void:
EventBus.enemy_win.connect(_on_enemy_win)
func start(pos): func start(pos):
speed = 0 speed = 0
@ -17,15 +19,13 @@ func start(pos):
start_pos = pos start_pos = pos
await get_tree().create_timer(randf_range(0.25, 0.55)).timeout await get_tree().create_timer(randf_range(0.25, 0.55)).timeout
var tween = create_tween().set_trans(Tween.TRANS_BACK) var tween = create_tween().set_trans(Tween.TRANS_BACK)
tween.tween_property(self, "position:y", start_pos.y, 1.4) tween.tween_property(self, "position:y", start_pos.y, tween_speed)
await tween.finished await tween.finished
$MoveTimer.wait_time = randf_range(5, 20) $MoveTimer.wait_time = enemy_move_aggression
$MoveTimer.start() $MoveTimer.start()
$ShootTimer.wait_time = randf_range(4, 20) $ShootTimer.wait_time = enemy_shoot_aggression
$ShootTimer.start() $ShootTimer.start()
func _on_enemy_win() -> void:
print("Enemy win!")
func _on_timer_timeout() -> void: func _on_timer_timeout() -> void:
speed = randf_range(75, 100) speed = randf_range(75, 100)
@ -47,9 +47,10 @@ func explode():
if exploding: return if exploding: return
exploding = true exploding = true
print_debug("Enemy explode!") print_debug("Enemy explode!")
EventBus.enemy_hit.emit(5)
speed = 0 speed = 0
$AnimationPlayer.play("explode") $AnimationPlayer.play("explode")
set_deferred("monitoring", false) set_deferred("monitoring", false)
EventBus.enemy_died.emit(5)
await $AnimationPlayer.animation_finished await $AnimationPlayer.animation_finished
queue_free() queue_free()
EventBus.enemy_died.emit()

View file

@ -1,8 +1,8 @@
[gd_scene load_steps=9 format=3 uid="uid://mp72cjiuquik"] [gd_scene load_steps=9 format=3 uid="uid://mp72cjiuquik"]
[ext_resource type="Script" uid="uid://xoihsrr4hw4k" path="res://enemy.gd" id="1_4gyqm"] [ext_resource type="Script" uid="uid://xoihsrr4hw4k" path="res://scenes/enemy.gd" id="1_4gyqm"]
[ext_resource type="Texture2D" uid="uid://deyu1prtitqcp" path="res://Mini Pixel Pack 3/Enemies/Bon_Bon (16 x 16).png" id="1_7k104"] [ext_resource type="Texture2D" uid="uid://deyu1prtitqcp" path="res://_graphics/Mini Pixel Pack 3/Enemies/Bon_Bon (16 x 16).png" id="1_7k104"]
[ext_resource type="Texture2D" uid="uid://h04wm5a27u0" path="res://Mini Pixel Pack 3/Effects/Explosion (16 x 16).png" id="3_qi2p4"] [ext_resource type="Texture2D" uid="uid://h04wm5a27u0" path="res://_graphics/Mini Pixel Pack 3/Effects/Explosion (16 x 16).png" id="3_qi2p4"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4gyqm"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_4gyqm"]
size = Vector2(14, 8) size = Vector2(14, 8)

View file

@ -1,7 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://3xbr5bnuk04u"] [gd_scene load_steps=4 format=3 uid="uid://3xbr5bnuk04u"]
[ext_resource type="Texture2D" uid="uid://dubjbfdp6ep34" path="res://Mini Pixel Pack 3/Projectiles/Enemy_projectile (16 x 16).png" id="1_1xapl"] [ext_resource type="Texture2D" uid="uid://dubjbfdp6ep34" path="res://_graphics/Mini Pixel Pack 3/Projectiles/Enemy_projectile (16 x 16).png" id="1_1xapl"]
[ext_resource type="Script" uid="uid://dusi2flaqer4b" path="res://enemy_bullet.gd" id="1_gl7bs"] [ext_resource type="Script" uid="uid://dusi2flaqer4b" path="res://scenes/enemy_bullet.gd" id="1_gl7bs"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_gl7bs"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_gl7bs"]
size = Vector2(6, 6) size = Vector2(6, 6)

View file

@ -4,8 +4,8 @@ extends Node
signal shield_changed(max_value: int, old_value: int, new_value: int) signal shield_changed(max_value: int, old_value: int, new_value: int)
signal player_died() signal player_died()
signal enemy_died(value: int) signal enemy_died()
signal enemy_win() signal enemy_hit(value: int)
signal initialize_shieldbar() signal initialize_shieldbar()
signal start_game() signal start_game()

View file

@ -1,6 +1,6 @@
[gd_scene load_steps=5 format=3 uid="uid://4jvu41vu2557"] [gd_scene load_steps=5 format=3 uid="uid://4jvu41vu2557"]
[ext_resource type="Texture2D" uid="uid://h04wm5a27u0" path="res://Mini Pixel Pack 3/Effects/Explosion (16 x 16).png" id="1_q7epf"] [ext_resource type="Texture2D" uid="uid://h04wm5a27u0" path="res://_graphics/Mini Pixel Pack 3/Effects/Explosion (16 x 16).png" id="1_q7epf"]
[sub_resource type="Animation" id="Animation_j4sxf"] [sub_resource type="Animation" id="Animation_j4sxf"]
length = 0.001 length = 0.001

View file

@ -1,10 +1,19 @@
extends Node2D extends Node2D
var enemy = preload("res://enemy.tscn") var enemy = preload("res://scenes/enemy.tscn")
var player = preload("res://player.tscn") var player = preload("res://scenes/player.tscn")
var instance = null var instance = null
var playing = false var playing = false
var enemy_count: int = 0 var enemy_count: int = 0:
set(value):
if value < 0:
print_debug("Enemy value set to below zero: ", get_stack())
if value > 27:
print_debug("Enemy value set to above 27!: ", get_stack())
enemy_count = value
const COLS: int = 9
const ROWS: int = 3
@onready var start_button = $CanvasLayer/CenterContainer/Start @onready var start_button = $CanvasLayer/CenterContainer/Start
@onready var game_over = $CanvasLayer/CenterContainer/GameOver @onready var game_over = $CanvasLayer/CenterContainer/GameOver
@ -14,61 +23,88 @@ func _ready():
start_button.show() start_button.show()
EventBus.player_died.connect(_on_player_died) EventBus.player_died.connect(_on_player_died)
EventBus.enemy_died.connect(_on_enemy_died) EventBus.enemy_died.connect(_on_enemy_died)
EventBus.enemy_hit.connect(_on_enemy_hit)
func spawn_enemies(): func spawn_enemies():
get_tree().call_group("enemies", "queue_free") # print("Remaining enemies: ", enemy_count)
for x in range(9): # await get_tree().process_frame
for y in range(3): for x in range(COLS):
for y in range(ROWS):
var e = enemy.instantiate() var e = enemy.instantiate()
var pos = Vector2(x * (16 + 8) + 24, 16 * 4 + y * 16) var pos = Vector2(x * (16 + 8) + 24, 16 * 4 + y * 16)
add_child(e) add_child(e)
e.start(pos) e.start(pos)
enemy_count = get_tree().get_nodes_in_group("enemies").size() enemy_count = ROWS * COLS
print("Remaining enemies: ", enemy_count) await get_tree().process_frame
print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size())
func _on_enemy_died(value: int):
Global.score += value func _on_enemy_died():
enemy_count -= 1 enemy_count -= 1
$CanvasLayer/UI.update_score(Global.score)
print_debug(enemy_count) print_debug(enemy_count)
if enemy_count == 0: if enemy_count == 0:
print("All enemies defeated!") print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size())
win_game() win_game()
if enemy_count == ROWS * COLS / 2:
print_debug("Enemy count is 50%")
update_enemy_aggression(2,10)
if enemy_count == ROWS * COLS / 4:
print_debug("Enemy count is 25%")
update_enemy_aggression(1,1)
func update_enemy_aggression(low,high):
var nodes = get_tree().get_nodes_in_group("enemies")
for node in nodes:
if node is Area2D:
node.enemy_move_aggression = randf_range(low,high)
node.enemy_shoot_aggression = randf_range(low,high)
node.tween_speed = min(low,high) - .75
func _on_enemy_hit(value: int):
Global.score += value
$CanvasLayer/UI.update_score(Global.score)
func _on_player_died(): func _on_player_died():
# get_tree().call_group("enemies", "queue_free") # get_tree().call_group("enemies", "queue_free")
EventBus.enemy_win.emit()
# $Player.set_process(false) # $Player.set_process(false)
# get_tree().call_group("enemies", "set_process", false) # get_tree().call_group("enemies", "set_process", false)
enemy_win()
instance.queue_free() instance.queue_free()
game_over.show() game_over.show()
await get_tree().create_timer(2).timeout await get_tree().create_timer(2).timeout
game_over.hide() game_over.hide()
$CanvasLayer/Title.show()
start_button.show() start_button.show()
playing = false playing = false
func new_game(): func new_game():
$CanvasLayer/Title.hide()
# Ensure enemies are cleared. # Ensure enemies are cleared.
enemy_count = 0
get_tree().call_group("enemies", "queue_free") get_tree().call_group("enemies", "queue_free")
get_tree().call_group("enemy_bullets", "queue_free") get_tree().call_group("enemy_bullets", "queue_free")
print("Number of enemies at new_game: ",enemy_count) # print("Number of enemies at new_game: ",enemy_count)
enemy_count = 0
await get_tree().process_frame
# Reset score. # Reset score.
Global.score = 0 Global.score = 0
$CanvasLayer/UI.update_score(Global.score) $CanvasLayer/UI.update_score(Global.score)
# Tell the shield to recharge.
# EventBus.initialize_shieldbar.emit()
# await EventBus.initialize_shieldbar
# instantiate the Player # instantiate the Player
# await get_tree().create_timer(1).timeout
instance = player.instantiate() instance = player.instantiate()
add_child(instance) add_child(instance)
$Player.start() $Player.start()
# Tell the shield to recharge.
EventBus.initialize_shieldbar.emit()
# Tell the enemies to spawn! # Tell the enemies to spawn!
#await get_tree().create_timer(.5).timeout
spawn_enemies() spawn_enemies()
# Tell the game we're playing. # Tell the game we're playing.
@ -92,4 +128,8 @@ func win_game():
$Player._on_player_victory() $Player._on_player_victory()
await get_tree().create_timer(2).timeout await get_tree().create_timer(2).timeout
game_over.hide() game_over.hide()
$CanvasLayer/Title.show()
start_button.show() start_button.show()
func enemy_win() -> void:
print("Enemy win!")

View file

@ -1,12 +1,13 @@
[gd_scene load_steps=10 format=3 uid="uid://cc2dnhuv4qx7m"] [gd_scene load_steps=14 format=3 uid="uid://cc2dnhuv4qx7m"]
[ext_resource type="Script" uid="uid://c51huloycn5as" path="res://main.gd" id="1_h2yge"] [ext_resource type="Script" uid="uid://c51huloycn5as" path="res://scenes/main.gd" id="1_h2yge"]
[ext_resource type="Texture2D" uid="uid://jj8b7vqj3ihx" path="res://Mini Pixel Pack 3/Space_BG (2 frames) (64 x 64).png" id="1_ig7tw"] [ext_resource type="PackedScene" uid="uid://tlcdxoupi2lb" path="res://scenes/parallax_starfield.tscn" id="2_5vw27"]
[ext_resource type="PackedScene" uid="uid://s6wf3egdqtmh" path="res://ui.tscn" id="4_1bvp3"] [ext_resource type="Texture2D" uid="uid://b25w6ms7bxlhu" path="res://sprites/third space bgrnd.png" id="3_tipki"]
[ext_resource type="Texture2D" uid="uid://bonoqs5pisflo" path="res://Mini Pixel Pack 3/UI objects/START (48 x 8).png" id="5_lquwl"] [ext_resource type="PackedScene" uid="uid://s6wf3egdqtmh" path="res://scenes/ui.tscn" id="4_1bvp3"]
[ext_resource type="Texture2D" uid="uid://bubqwoum50gf8" path="res://Mini Pixel Pack 3/UI objects/GAME_OVER (72 x 8).png" id="6_7mycd"] [ext_resource type="Shader" uid="uid://x02irwg8ynvp" path="res://shaders/pixel_highlight.gdshader" id="4_272bh"]
[ext_resource type="Texture2D" uid="uid://bonoqs5pisflo" path="res://_graphics/Mini Pixel Pack 3/UI objects/START (48 x 8).png" id="5_lquwl"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_5vw27"] [ext_resource type="Texture2D" uid="uid://0mcbtnidp5kn" path="res://sprites/third space title.png" id="5_tipki"]
[ext_resource type="Texture2D" uid="uid://bubqwoum50gf8" path="res://_graphics/Mini Pixel Pack 3/UI objects/GAME_OVER (72 x 8).png" id="6_7mycd"]
[sub_resource type="Animation" id="Animation_1bvp3"] [sub_resource type="Animation" id="Animation_1bvp3"]
length = 0.001 length = 0.001
@ -46,17 +47,21 @@ _data = {
&"scroll": SubResource("Animation_h2yge") &"scroll": SubResource("Animation_h2yge")
} }
[sub_resource type="ShaderMaterial" id="ShaderMaterial_kek77"]
shader = ExtResource("4_272bh")
shader_parameter/speed = 2.250000106875
shader_parameter/line_width = 0.1450000068875
shader_parameter/line_color = Color(1, 1, 1, 1)
shader_parameter/pause_duration = 6.0
shader_parameter/offset = 10.0
shader_parameter/pixelate_line = 0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_5vw27"]
[node name="Main" type="Node2D"] [node name="Main" type="Node2D"]
script = ExtResource("1_h2yge") script = ExtResource("1_h2yge")
[node name="background" type="Sprite2D" parent="."] [node name="Parallax Starfield" parent="." instance=ExtResource("2_5vw27")]
z_index = -4
texture_repeat = 2
material = SubResource("ShaderMaterial_5vw27")
texture = ExtResource("1_ig7tw")
centered = false
region_enabled = true
region_rect = Rect2(0, 0, 240, 320)
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = { libraries = {
@ -70,6 +75,15 @@ autoplay = "scroll"
offset_right = 196.0 offset_right = 196.0
offset_bottom = 36.0 offset_bottom = 36.0
[node name="Title" type="TextureRect" parent="CanvasLayer"]
self_modulate = Color(0.015236704, 0.015236706, 0.0152367065, 1)
material = SubResource("ShaderMaterial_kek77")
offset_left = 50.0
offset_top = 50.0
offset_right = 146.0
offset_bottom = 117.0
texture = ExtResource("5_tipki")
[node name="CenterContainer" type="CenterContainer" parent="CanvasLayer"] [node name="CenterContainer" type="CenterContainer" parent="CanvasLayer"]
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@ -85,4 +99,13 @@ texture_normal = ExtResource("5_lquwl")
layout_mode = 2 layout_mode = 2
texture = ExtResource("6_7mycd") texture = ExtResource("6_7mycd")
[node name="background" type="Sprite2D" parent="."]
z_index = -4
texture_repeat = 2
material = SubResource("ShaderMaterial_5vw27")
scale = Vector2(1.1064814, 1.0557377)
texture = ExtResource("3_tipki")
centered = false
region_rect = Rect2(0, 0, 240, 320)
[connection signal="pressed" from="CanvasLayer/CenterContainer/Start" to="." method="_on_start_pressed"] [connection signal="pressed" from="CanvasLayer/CenterContainer/Start" to="." method="_on_start_pressed"]

View file

@ -0,0 +1,66 @@
[gd_scene load_steps=5 format=3 uid="uid://tlcdxoupi2lb"]
[ext_resource type="Texture2D" uid="uid://dpkeiihfos28m" path="res://_graphics/parallax/foreground stars.png" id="1_1f8kc"]
[ext_resource type="Texture2D" uid="uid://4n7q1wsq13ub" path="res://_graphics/parallax/foreground stars_b.png" id="2_mewf1"]
[ext_resource type="Texture2D" uid="uid://c855276xbf7g6" path="res://_graphics/parallax/midground stars.png" id="2_xwl8n"]
[ext_resource type="Texture2D" uid="uid://bn5iw6fm88p2i" path="res://_graphics/parallax/background stars.png" id="3_mewf1"]
[node name="Parallax Starfield" type="Node2D"]
[node name="Foreground Stars" type="Parallax2D" parent="."]
scroll_scale = Vector2(1.5, 1)
scroll_offset = Vector2(52, 11)
repeat_size = Vector2(0, 128)
autoscroll = Vector2(0, 9)
repeat_times = 5
[node name="Sprite2D" type="Sprite2D" parent="Foreground Stars"]
modulate = Color(0.6524728, 0.65247285, 0.6524728, 1)
texture_repeat = 2
position = Vector2(89, 133)
texture = ExtResource("1_1f8kc")
region_enabled = true
region_rect = Rect2(0, 0, 128, 32)
[node name="Foreground Stars_b" type="Parallax2D" parent="."]
repeat_size = Vector2(0, 320)
autoscroll = Vector2(0, 7)
repeat_times = 5
[node name="Sprite2D" type="Sprite2D" parent="Foreground Stars_b"]
modulate = Color(0.71867925, 0.71867925, 0.71867925, 1)
texture_repeat = 2
position = Vector2(151, 59)
texture = ExtResource("2_mewf1")
region_enabled = true
region_rect = Rect2(0, 0, 128, 32)
[node name="Midground Stars" type="Parallax2D" parent="."]
scroll_scale = Vector2(0.75, 1)
repeat_size = Vector2(0, 320)
autoscroll = Vector2(0, 5)
[node name="Sprite2D" type="Sprite2D" parent="Midground Stars"]
texture_repeat = 2
position = Vector2(120, 160)
texture = ExtResource("2_xwl8n")
region_enabled = true
region_rect = Rect2(0, 0, 240, 320)
[node name="Background Stars" type="Parallax2D" parent="."]
scroll_scale = Vector2(-1, 1)
repeat_size = Vector2(0, 320)
autoscroll = Vector2(0, 2)
[node name="Sprite2D" type="Sprite2D" parent="Background Stars"]
texture_repeat = 2
position = Vector2(120, 160)
texture = ExtResource("3_mewf1")
region_enabled = true
region_rect = Rect2(0, 0, 240, 320)
[node name="ColorRect" type="ColorRect" parent="."]
z_index = -5
offset_right = 239.0
offset_bottom = 323.0
color = Color(0, 0, 0, 1)

View file

@ -9,11 +9,18 @@ signal damage_taken
@export var cooldown: float = 0.25 @export var cooldown: float = 0.25
@export var bullet_scene : PackedScene @export var bullet_scene : PackedScene
@export var max_shield: int = 10 @export var max_shield: int = 10
var shield: int = 1: var shield: int = 0:
set = set_shield set = set_shield
var can_shoot = false var can_shoot = false
var shader_active = false var shader_active: bool = false:
set(value):
if value == true:
print_debug("Shader active!", get_stack())
else:
print_debug("Shader inactive!", get_stack())
var clamp_shield = clamp(shield, 0, max_shield) var clamp_shield = clamp(shield, 0, max_shield)
@onready var screensize = get_viewport_rect().size @onready var screensize = get_viewport_rect().size
@ -30,15 +37,19 @@ func start():
print(shield) print(shield)
shader_active = false shader_active = false
$Ship.frame = 1 $Ship.frame = 1
# $Ship/Boosters/BoosterBurst.hide()
# $Ship/Boosters.hide()
$Ship.show() $Ship.show()
position = Vector2(screensize.x / 2, screensize.y) position = Vector2(screensize.x / 2, screensize.y)
var tween = create_tween() var tween = create_tween()
tween.tween_property(self, "position:y", 32 * -1, .25).as_relative() tween.tween_property(self, "position:y", 48 * -1, .75).as_relative()
await tween.finished
$GunCooldown.wait_time = cooldown $GunCooldown.wait_time = cooldown
set_shield(max_shield) set_shield(max_shield)
print(shield) print(shield)
await get_tree().create_timer(2).timeout await get_tree().create_timer(1).timeout
set_process(true) set_process(true)
# $Ship/Boosters.show()
can_shoot = true can_shoot = true
# EventBus.shield_changed.emit(max_shield, old_value, shield) # EventBus.shield_changed.emit(max_shield, old_value, shield)
@ -46,10 +57,10 @@ func _process(delta):
var input = Input.get_vector("left", "right", "up", "down") var input = Input.get_vector("left", "right", "up", "down")
if input.x > 0: if input.x > 0:
$Ship.frame = 2 $Ship.frame = 2
$Ship/Boosters.animation = "right" # $Ship/Boosters.animation = "right"
elif input.x < 0: elif input.x < 0:
$Ship.frame = 0 $Ship.frame = 0
$Ship/Boosters.animation = "left" # $Ship/Boosters.animation = "left"
else: else:
$Ship.frame = 1 $Ship.frame = 1
$Ship/Boosters.animation = "forward" $Ship/Boosters.animation = "forward"
@ -65,52 +76,59 @@ func shoot():
$GunCooldown.start() $GunCooldown.start()
var b = bullet_scene.instantiate() var b = bullet_scene.instantiate()
get_tree().root.add_child(b) get_tree().root.add_child(b)
b.start(position + ship.position + Vector2(0, -1)) b.start(position + ship.position + Vector2(0, -10))
var tween = create_tween().set_parallel(false) var tween = create_tween().set_parallel(false)
tween.tween_property(ship, "position:y", 1, 0.1) tween.tween_property(ship, "position:y", 1, 0.1)
tween.tween_property(ship, "position:y", 0, 0.05) tween.tween_property(ship, "position:y", 0, 0.05)
func set_shield(value: int): func set_shield(value: int):
var old_value = shield var old_value = shield
shield = clamp(value, 0, max_shield) # shield = clamp(value, 0, max_shield)
shield = min(max_shield, value)
EventBus.shield_changed.emit(max_shield, old_value, shield) EventBus.shield_changed.emit(max_shield, old_value, shield)
print("Shield set to:", shield) print("Shield set to:", shield)
if shield <= 0: if shield <= 0:
print("Shader deactivated!")
EventBus.player_died.emit()
set_process(false) set_process(false)
$Ship.hide() $Ship.hide()
shader_active = false
$Explosion.show() $Explosion.show()
$Explosion/AnimationPlayer.play("explosion-one-shot") $Explosion/AnimationPlayer.play("explosion-one-shot")
await $Explosion/AnimationPlayer.animation_finished await $Explosion/AnimationPlayer.animation_finished
shader_active = false EventBus.player_died.emit()
func _on_gun_cooldown_timeout() -> void: func _on_gun_cooldown_timeout() -> void:
can_shoot = true can_shoot = true
func _on_area_entered(area): func _on_area_entered(area):
if area.is_in_group("enemies"): if area.is_in_group("enemies"):
area.explode()
shield -= int(max_shield / 2) shield -= int(max_shield / 2)
damage_taken.emit() # damage_taken.emit()
area.explode()
if area.is_in_group("enemy_bullets") and self.monitoring == true: if area.is_in_group("enemy_bullets") and self.monitoring == true:
damage_taken.emit() damage_taken.emit()
func _on_damage_taken() -> void: func _on_damage_taken():
shader_active = true
print("Shader active!") if shield == 0:
$Ship.material.set_shader_parameter("toggle", 1.0) shader_active = false
await get_tree().create_timer(1).timeout return
$Ship.material.set_shader_parameter("toggle", 0.0)
shader_active = false else:
print("Shader deactivated!") shader_active = true
$Ship.material.set_shader_parameter("toggle", 1.0)
await get_tree().create_timer(1).timeout
$Ship.material.set_shader_parameter("toggle", 0.0)
shader_active = false
func _on_player_victory() -> void: func _on_player_victory() -> void:
print("Victory!") print("Victory!")
# get_node("EnemyBullet").monitoring = false #TODO make sure bullets stop monitoring!
set_process(false) set_process(false)
$Ship.frame = 1 $Ship.frame = 1
await get_tree().create_timer(2).timeout await get_tree().create_timer(1).timeout
# $Ship/Boosters/BoosterBurst.show()
var tween = create_tween() var tween = create_tween()
tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN) tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN)
await tween.finished await tween.finished

View file

@ -1,13 +1,13 @@
[gd_scene load_steps=18 format=3 uid="uid://pyuorpwb7lpe"] [gd_scene load_steps=20 format=3 uid="uid://pyuorpwb7lpe"]
[ext_resource type="Script" uid="uid://dcrnf4r6c5qaw" path="res://player.gd" id="1_sweqy"] [ext_resource type="Script" uid="uid://dcrnf4r6c5qaw" path="res://scenes/player.gd" id="1_sweqy"]
[ext_resource type="PackedScene" uid="uid://bwxxdrdvo3le0" path="res://bullet.tscn" id="2_1jxqw"] [ext_resource type="PackedScene" uid="uid://bwxxdrdvo3le0" path="res://scenes/bullet.tscn" id="2_1jxqw"]
[ext_resource type="Texture2D" uid="uid://di2xhcwcdbhxg" path="res://Mini Pixel Pack 3/Player ship/Player_ship (16 x 16).png" id="2_2hs0m"] [ext_resource type="Texture2D" uid="uid://ces8fm7lxh574" path="res://_graphics/Mini Pixel Pack 3/Player ship/Boosters (16 x 16).png" id="3_1jxqw"]
[ext_resource type="Texture2D" uid="uid://ces8fm7lxh574" path="res://Mini Pixel Pack 3/Player ship/Boosters (16 x 16).png" id="3_1jxqw"] [ext_resource type="Shader" uid="uid://dfywtah53il1m" path="res://shaders/player_hit.gdshader" id="3_dw050"]
[ext_resource type="Shader" uid="uid://dfywtah53il1m" path="res://player_hit.gdshader" id="3_dw050"] [ext_resource type="Texture2D" uid="uid://bjdhq42ummgky" path="res://_graphics/Mini Pixel Pack 3/Player ship/Boosters_left (16 x 16).png" id="4_dw050"]
[ext_resource type="Texture2D" uid="uid://bjdhq42ummgky" path="res://Mini Pixel Pack 3/Player ship/Boosters_left (16 x 16).png" id="4_dw050"] [ext_resource type="Texture2D" uid="uid://42nppsb4mtv8" path="res://sprites/coop.png" id="4_smehm"]
[ext_resource type="Texture2D" uid="uid://cjv3xbuj65pav" path="res://Mini Pixel Pack 3/Player ship/Boosters_right (16 x 16).png" id="5_b26j0"] [ext_resource type="Texture2D" uid="uid://cjv3xbuj65pav" path="res://_graphics/Mini Pixel Pack 3/Player ship/Boosters_right (16 x 16).png" id="5_b26j0"]
[ext_resource type="PackedScene" uid="uid://4jvu41vu2557" path="res://explosion.tscn" id="8_dw050"] [ext_resource type="PackedScene" uid="uid://4jvu41vu2557" path="res://scenes/explosion.tscn" id="8_dw050"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_b26j0"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_b26j0"]
shader = ExtResource("3_dw050") shader = ExtResource("3_dw050")
@ -73,6 +73,16 @@ animations = [{
"speed": 10.0 "speed": 10.0
}] }]
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_dw050"]
particles_animation = true
particles_anim_h_frames = 2
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_b26j0"]
particle_flag_disable_z = true
gravity = Vector3(0, 98, 0)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_op7ga"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_op7ga"]
size = Vector2(14, 14) size = Vector2(14, 14)
@ -83,17 +93,33 @@ bullet_scene = ExtResource("2_1jxqw")
[node name="Ship" type="Sprite2D" parent="." groups=["ship"]] [node name="Ship" type="Sprite2D" parent="." groups=["ship"]]
unique_name_in_owner = true unique_name_in_owner = true
material = SubResource("ShaderMaterial_b26j0") material = SubResource("ShaderMaterial_b26j0")
texture = ExtResource("2_2hs0m") texture = ExtResource("4_smehm")
hframes = 3 hframes = 3
frame = 1 frame = 1
[node name="Boosters" type="AnimatedSprite2D" parent="Ship"] [node name="Boosters" type="AnimatedSprite2D" parent="Ship"]
visible = false
position = Vector2(0, 15) position = Vector2(0, 15)
sprite_frames = SubResource("SpriteFrames_u1c27") sprite_frames = SubResource("SpriteFrames_u1c27")
animation = &"forward" animation = &"forward"
autoplay = "forward" autoplay = "forward"
[node name="BoosterBurst" type="GPUParticles2D" parent="Ship/Boosters"]
texture_repeat = 2
material = SubResource("CanvasItemMaterial_dw050")
amount = 10
texture = ExtResource("3_1jxqw")
lifetime = 0.75
interp_to_end = 1.0
preprocess = 1.83
speed_scale = 15.69
draw_order = 2
trail_lifetime = 1.85
trail_sections = 2
process_material = SubResource("ParticleProcessMaterial_b26j0")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
scale = Vector2(2.0054688, 2.0054688)
shape = SubResource("RectangleShape2D_op7ga") shape = SubResource("RectangleShape2D_op7ga")
[node name="GunCooldown" type="Timer" parent="."] [node name="GunCooldown" type="Timer" parent="."]

View file

@ -1,8 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://c8s7htpdg4v4i"] [gd_scene load_steps=4 format=3 uid="uid://c8s7htpdg4v4i"]
[ext_resource type="Texture2D" uid="uid://d11molrkdjjh5" path="res://bar_background.png" id="1_q0tf5"] [ext_resource type="Texture2D" uid="uid://d11molrkdjjh5" path="res://_graphics/bar_background.png" id="1_q0tf5"]
[ext_resource type="Texture2D" uid="uid://bsl3pxvxiuoqg" path="res://bar_foreground.png" id="2_5xu4y"] [ext_resource type="Texture2D" uid="uid://bsl3pxvxiuoqg" path="res://_graphics/bar_foreground.png" id="2_5xu4y"]
[ext_resource type="Script" uid="uid://b85ktxeoj4b2n" path="res://progress_bar.gd" id="3_5xu4y"] [ext_resource type="Script" uid="uid://b85ktxeoj4b2n" path="res://scenes/progress_bar.gd" id="3_5xu4y"]
[node name="ProgressBar" type="TextureProgressBar"] [node name="ProgressBar" type="TextureProgressBar"]
anchors_preset = 10 anchors_preset = 10

36
scenes/score_counter.gd Normal file
View file

@ -0,0 +1,36 @@
extends HBoxContainer
var last_score: String = "00000000"
var digit_coords = {
1: Vector2(0, 0),
2: Vector2(8, 0),
3: Vector2(16, 0),
4: Vector2(24, 0),
5: Vector2(32, 0),
6: Vector2(0, 8),
7: Vector2(8, 8),
8: Vector2(16, 8),
9: Vector2(24, 8),
0: Vector2(32, 8)
}
func display_digits(n):
var s = "%08d" % n
var start = 8 - str(n).length() # Finds the starting position of the counter by converting the score to a string, minus the leading zeros.
var changed = false
for i in 8:
get_child(i).texture.region = Rect2(digit_coords[int(s[i])], Vector2(8, 8))
if i >= start and s[i] != last_score[i]:
changed = true
if changed:
for i in 8:
if i >= start:
var tween = create_tween()
tween.tween_property(get_child(i), "scale", Vector2(2,2), .15).set_trans(Tween.TRANS_BOUNCE)
# tween.tween_property(get_child(i), "position:y", +5, .15).set_ease(tween.TRANS_QUART)
tween.tween_property(get_child(i), "scale", Vector2(1,1), .15).set_trans(Tween.TRANS_BOUNCE)
# tween.tween_property(get_child(i), "position:y", -5, .15).set_ease(tween.TRANS_QUART)
last_score = s

View file

@ -1,7 +1,7 @@
[gd_scene load_steps=11 format=3 uid="uid://5qkcf1cpre32"] [gd_scene load_steps=11 format=3 uid="uid://5qkcf1cpre32"]
[ext_resource type="Script" uid="uid://val4c82n4krk" path="res://score_counter.gd" id="1_t7i3n"] [ext_resource type="Script" uid="uid://val4c82n4krk" path="res://scenes/score_counter.gd" id="1_t7i3n"]
[ext_resource type="Texture2D" uid="uid://ddh7mk2ekhq3u" path="res://Mini Pixel Pack 3/UI objects/Number_font (8 x 8).png" id="1_terno"] [ext_resource type="Texture2D" uid="uid://ddh7mk2ekhq3u" path="res://_graphics/Mini Pixel Pack 3/UI objects/Number_font (8 x 8).png" id="1_terno"]
[sub_resource type="AtlasTexture" id="AtlasTexture_t7i3n"] [sub_resource type="AtlasTexture" id="AtlasTexture_t7i3n"]
atlas = ExtResource("1_terno") atlas = ExtResource("1_terno")

View file

@ -12,11 +12,14 @@ func _ready():
func update_score(value): func update_score(value):
score_counter.display_digits(value) score_counter.display_digits(value)
# var digits = score_counter.get_children()
# var tween = create_tween()
# tween.tween_property(digits,"scale",2,.15)
func _on_shield_changed(max_value: int, old_value: int, new_value: int) -> void: func _on_shield_changed(max_value: int, old_value: int, new_value: int) -> void:
shield_bar.max_value = max_value shield_bar.max_value = max_value
shield_bar.value = new_value shield_bar.value = old_value
var tween = create_tween() var tween = create_tween()
print_debug("Tweening shield bar") print_debug("Tweening shield bar")
tween.tween_property(shield_bar, "value", new_value, .25).set_trans(Tween.TRANS_LINEAR) tween.tween_property(shield_bar, "value", new_value, .25).set_trans(Tween.TRANS_LINEAR)

Some files were not shown because too many files have changed in this diff Show more