From 288f8891307ff793e8d89d9f180435ed430963f8 Mon Sep 17 00:00:00 2001 From: installer Date: Wed, 22 Jan 2025 17:54:21 +0100 Subject: [PATCH] feat: initial commit --- .gitattributes | 7 ++ .gitignore | 4 + addons/.gitignore | 1 + addons/.gitkeep | 1 + assets/gfx/bg.png | 3 + assets/gfx/bg.png.import | 34 +++++++ assets/gfx/down.png | 3 + assets/gfx/down.png.import | 34 +++++++ assets/gfx/laser.png | 3 + assets/gfx/laser.png.import | 34 +++++++ assets/gfx/left.png | 3 + assets/gfx/left.png.import | 34 +++++++ assets/gfx/meteroid.png | 3 + assets/gfx/meteroid.png.import | 34 +++++++ assets/gfx/right.png | 3 + assets/gfx/right.png.import | 34 +++++++ assets/gfx/ship.aseprite | Bin 0 -> 1340 bytes assets/gfx/ship.png | 3 + assets/gfx/ship.png.import | 34 +++++++ assets/gfx/shoot.png | 3 + assets/gfx/shoot.png.import | 34 +++++++ assets/gfx/star.aseprite | Bin 0 -> 1600 bytes assets/gfx/star1.png | 3 + assets/gfx/star1.png.import | 34 +++++++ assets/gfx/star2.png | 3 + assets/gfx/star2.png.import | 34 +++++++ assets/gfx/star3.png | 3 + assets/gfx/star3.png.import | 34 +++++++ assets/gfx/star4.png | 3 + assets/gfx/star4.png.import | 34 +++++++ assets/gfx/star5.png | 3 + assets/gfx/star5.png.import | 34 +++++++ assets/gfx/star6.png | 3 + assets/gfx/star6.png.import | 34 +++++++ assets/gfx/up.png | 3 + assets/gfx/up.png.import | 34 +++++++ assets/sfx/explosion.wav | 3 + assets/sfx/explosion.wav.import | 24 +++++ assets/sfx/explosion2.wav | 3 + assets/sfx/explosion2.wav.import | 24 +++++ assets/sfx/hurt.wav | 3 + assets/sfx/hurt.wav.import | 24 +++++ assets/sfx/hurt2.wav | 3 + assets/sfx/hurt2.wav.import | 24 +++++ assets/sfx/ship_explosion.wav | 3 + assets/sfx/ship_explosion.wav.import | 24 +++++ assets/sfx/ship_explosion2.wav | 3 + assets/sfx/ship_explosion2.wav.import | 24 +++++ assets/sfx/shoot.wav | 3 + assets/sfx/shoot.wav.import | 24 +++++ assets/sfx/shoot2.wav | 3 + assets/sfx/shoot2.wav.import | 24 +++++ export_presets.cfg | 41 +++++++++ global/global.gd | 11 +++ icon.svg | 1 + icon.svg.import | 37 ++++++++ project.godot | 80 +++++++++++++++++ scenes/game_over.gd | 11 +++ scenes/game_over.tscn | 81 +++++++++++++++++ scenes/laser.gd | 19 ++++ scenes/laser.tscn | 19 ++++ scenes/level.gd | 58 ++++++++++++ scenes/level.tscn | 124 ++++++++++++++++++++++++++ scenes/meteor.gd | 40 +++++++++ scenes/meteor.tscn | 22 +++++ scenes/player.gd | 38 ++++++++ scenes/player.tscn | 35 ++++++++ scenes/ui.gd | 48 ++++++++++ scenes/ui.tscn | 76 ++++++++++++++++ 69 files changed, 1525 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 addons/.gitignore create mode 100644 addons/.gitkeep create mode 100644 assets/gfx/bg.png create mode 100644 assets/gfx/bg.png.import create mode 100644 assets/gfx/down.png create mode 100644 assets/gfx/down.png.import create mode 100644 assets/gfx/laser.png create mode 100644 assets/gfx/laser.png.import create mode 100644 assets/gfx/left.png create mode 100644 assets/gfx/left.png.import create mode 100644 assets/gfx/meteroid.png create mode 100644 assets/gfx/meteroid.png.import create mode 100644 assets/gfx/right.png create mode 100644 assets/gfx/right.png.import create mode 100644 assets/gfx/ship.aseprite create mode 100644 assets/gfx/ship.png create mode 100644 assets/gfx/ship.png.import create mode 100644 assets/gfx/shoot.png create mode 100644 assets/gfx/shoot.png.import create mode 100644 assets/gfx/star.aseprite create mode 100644 assets/gfx/star1.png create mode 100644 assets/gfx/star1.png.import create mode 100644 assets/gfx/star2.png create mode 100644 assets/gfx/star2.png.import create mode 100644 assets/gfx/star3.png create mode 100644 assets/gfx/star3.png.import create mode 100644 assets/gfx/star4.png create mode 100644 assets/gfx/star4.png.import create mode 100644 assets/gfx/star5.png create mode 100644 assets/gfx/star5.png.import create mode 100644 assets/gfx/star6.png create mode 100644 assets/gfx/star6.png.import create mode 100644 assets/gfx/up.png create mode 100644 assets/gfx/up.png.import create mode 100644 assets/sfx/explosion.wav create mode 100644 assets/sfx/explosion.wav.import create mode 100644 assets/sfx/explosion2.wav create mode 100644 assets/sfx/explosion2.wav.import create mode 100644 assets/sfx/hurt.wav create mode 100644 assets/sfx/hurt.wav.import create mode 100644 assets/sfx/hurt2.wav create mode 100644 assets/sfx/hurt2.wav.import create mode 100644 assets/sfx/ship_explosion.wav create mode 100644 assets/sfx/ship_explosion.wav.import create mode 100644 assets/sfx/ship_explosion2.wav create mode 100644 assets/sfx/ship_explosion2.wav.import create mode 100644 assets/sfx/shoot.wav create mode 100644 assets/sfx/shoot.wav.import create mode 100644 assets/sfx/shoot2.wav create mode 100644 assets/sfx/shoot2.wav.import create mode 100644 export_presets.cfg create mode 100644 global/global.gd create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 project.godot create mode 100644 scenes/game_over.gd create mode 100644 scenes/game_over.tscn create mode 100644 scenes/laser.gd create mode 100644 scenes/laser.tscn create mode 100644 scenes/level.gd create mode 100644 scenes/level.tscn create mode 100644 scenes/meteor.gd create mode 100644 scenes/meteor.tscn create mode 100644 scenes/player.gd create mode 100644 scenes/player.tscn create mode 100644 scenes/ui.gd create mode 100644 scenes/ui.tscn diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ddf75a6 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,7 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf +* !text !filter !merge !diff +*.svg filter=lfs diff=lfs merge=lfs -text +*.wav filter=lfs diff=lfs merge=lfs -text +*.mp3 filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5855fd4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# Godot 4+ specific ignores +.godot/ +/android/ +dist/ diff --git a/addons/.gitignore b/addons/.gitignore new file mode 100644 index 0000000..355164c --- /dev/null +++ b/addons/.gitignore @@ -0,0 +1 @@ +*/ diff --git a/addons/.gitkeep b/addons/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/addons/.gitkeep @@ -0,0 +1 @@ + diff --git a/assets/gfx/bg.png b/assets/gfx/bg.png new file mode 100644 index 0000000..42356e3 --- /dev/null +++ b/assets/gfx/bg.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa3a2e1cc27f77f223cf4437f9c0b88dd5c94f9c0bd90e5bb7baf9ab1e9f867e +size 2322 diff --git a/assets/gfx/bg.png.import b/assets/gfx/bg.png.import new file mode 100644 index 0000000..f278d8d --- /dev/null +++ b/assets/gfx/bg.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqssrdxkdgjiv" +path="res://.godot/imported/bg.png-cdb51c0c4e68ada78476703d26e5741b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/bg.png" +dest_files=["res://.godot/imported/bg.png-cdb51c0c4e68ada78476703d26e5741b.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/assets/gfx/down.png b/assets/gfx/down.png new file mode 100644 index 0000000..8a6cff5 --- /dev/null +++ b/assets/gfx/down.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae65f76cab06574baf3ce115f5f64feb0c0ce7588b7305c263d7d2f1c951bbc4 +size 215 diff --git a/assets/gfx/down.png.import b/assets/gfx/down.png.import new file mode 100644 index 0000000..cb3d483 --- /dev/null +++ b/assets/gfx/down.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqtj1b7788jba" +path="res://.godot/imported/down.png-a6eb4aa8bb1a3ec4bcf67dcb70dd9147.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/down.png" +dest_files=["res://.godot/imported/down.png-a6eb4aa8bb1a3ec4bcf67dcb70dd9147.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/assets/gfx/laser.png b/assets/gfx/laser.png new file mode 100644 index 0000000..d4737ed --- /dev/null +++ b/assets/gfx/laser.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7555d8d20fb61efdf73f8185173b9eeb7abfcd13507175e9190626625d4b2131 +size 401 diff --git a/assets/gfx/laser.png.import b/assets/gfx/laser.png.import new file mode 100644 index 0000000..a501401 --- /dev/null +++ b/assets/gfx/laser.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cwsth67tjjxxt" +path="res://.godot/imported/laser.png-b14254aa6f3960667dfd66a73a06d59b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/laser.png" +dest_files=["res://.godot/imported/laser.png-b14254aa6f3960667dfd66a73a06d59b.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/assets/gfx/left.png b/assets/gfx/left.png new file mode 100644 index 0000000..99738e1 --- /dev/null +++ b/assets/gfx/left.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:796332157d05752ef0df5e30edf654dcc16ce75edc97f3c2637a3c0e9e67053f +size 215 diff --git a/assets/gfx/left.png.import b/assets/gfx/left.png.import new file mode 100644 index 0000000..fcce667 --- /dev/null +++ b/assets/gfx/left.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://iopu3hjaoo85" +path="res://.godot/imported/left.png-5fcd9ee3517e2952b6e8a5ad52657f1f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/left.png" +dest_files=["res://.godot/imported/left.png-5fcd9ee3517e2952b6e8a5ad52657f1f.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/assets/gfx/meteroid.png b/assets/gfx/meteroid.png new file mode 100644 index 0000000..81313c3 --- /dev/null +++ b/assets/gfx/meteroid.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd939d811204332e4e8f1e746da5fae8cb2d318ff9a7b1856c44a2b38a2fc2e5 +size 336 diff --git a/assets/gfx/meteroid.png.import b/assets/gfx/meteroid.png.import new file mode 100644 index 0000000..ffe0596 --- /dev/null +++ b/assets/gfx/meteroid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cy0lqjas2aw15" +path="res://.godot/imported/meteroid.png-2d5e690387cdf72411e8b436da6ef9f2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/meteroid.png" +dest_files=["res://.godot/imported/meteroid.png-2d5e690387cdf72411e8b436da6ef9f2.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/assets/gfx/right.png b/assets/gfx/right.png new file mode 100644 index 0000000..11cc00a --- /dev/null +++ b/assets/gfx/right.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f61ede2f47a85fa5dc2e43ccd62fa0fdaaf3ceb6903ef0279fc8a8085622bd13 +size 214 diff --git a/assets/gfx/right.png.import b/assets/gfx/right.png.import new file mode 100644 index 0000000..e76535a --- /dev/null +++ b/assets/gfx/right.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://y25tmx0klrqv" +path="res://.godot/imported/right.png-86e956b6f954aca67459492c29f1cd9e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/right.png" +dest_files=["res://.godot/imported/right.png-86e956b6f954aca67459492c29f1cd9e.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/assets/gfx/ship.aseprite b/assets/gfx/ship.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..110f9db752d58aaa6a7d352921f22be4b83ece97 GIT binary patch literal 1340 zcmcCvWng%)l#xLJ3>g_17*ZIJfdT^~NRUB*K>%5pYV18M3=F?MvVd)6VPIeoV_;xl zR{&dyWJeYQ0|N^KBLjm10|SGSf{Ck!O`4@)f0*_CLbaO<(%v1O_4||A%%=fa`wYyd zStW}f+}hQFKj ze?Gmp?fLJz=X2ISKQq&K>xySP?jN6-^y~k*`VW7@&)xj+>v!5=>)YoX_RTE%H#cAH z&cD*X$-DMC?OVKSm;Fr5^%L|1eAryT&tBJSS&nG6Fxo`dPU6bKmhxK~% zs(3mZCVhD!ydrwOhxLQZ>)N8FRjH3Oo3&ofa9p~I!K+7e6;p85p>MZL^3v~a-q8}@ zX1~r;aoH@@7W0)H{FPq~*yUbb_c`-=U9s{4)_Bn~pS^>PHh$DDD6VD8TzmdV`p>CL z)}=|VG+E`*s@EuTc!x~_^8`lI=`$`Dta@v?^VYt&X^&4#d~Tlan3`T3aC7F@7rw8x zwoLXv9KGbGRt$u zD^5to+C*|C8-6fZ^E7b9Z6^auk8Z;Iqp@#ZKi|G-W}nVC$rbW- z{`$@htqwYGG+S*WFVE=xzGYvVpVfDTY8MjWW9)tyzEjcjueAak{^=!aGg&?pDyd_5QyW(=*1;3-b-9 z@l3ilrQ7seZNzK4wqDz*HwsoVO`Wgr6g{gba8s#npXquP?w*q>JbM}Dti&VN-}d{ zrE}Pxcc(m${Qc2rv#fTz&7FOco$t?n7CG9v_r2%g#Mu6r-%{Q+eyhI3KAB=Jqw;RK z|IPM2>`M|Kh;Ulo?#k%+94qzG&QV@I=gEh!WqMzib$jo<=#~<`wj%KVbB#~!e~S+O zRTyliIouB&S!Dn2vy{@Lkewm$xJM{Cis#jhg_17*ZIJfdT^~NRUB*K>%5pYHV3X28LfBS-`fkFfcHPF)%Q& zD}b#;vLlOufq{jAk%2*hfq_9u!NgU=Ce6~YKg{}mq1w#_Y3~lt`u)jl=F@*$)EDSs7sXpPuZKkZsS2I zPdWXcZ0pLG^51g1SRR>uJ;n9jdB$vw*$uKQ4onTXGD-3$&l^YPyd?{#{XKasfx9n( zf!`=#^2Q(Te%IzU$;@%!pSNWBw9Au!d=9w1;W*PA$JbAzvsi5(`R=Vty*J60t5hMr z`mw6erp;_zMfHdQ}E8q;`ei=UFO}Zy!qCivcId|FaKNb{YL)nzt~rQ z4AxuipOgIU??he|EK3XY4z8J8-s) zrCx32+|Tmw&vPGs8oS}Xb?Hy@1Hb=)Wf zUy2IYnira1nErpo!s>0tzms48Oj^6S$MoIVDx0eL5zm&j?N6F7ec_c{&9HApueB~8$OY| z(9p?pKjlS40W&w}zOxrrI&jA=IlHpg%C=z1{l(2QgytNWd7fKh(k`}jOAVj4w>|u4 zx?_`h;PJ^Tk|l$UkE`65Pb*}Xt!NUoIiR!pY>c$zWy9s2UyIgp|9<(R`ls3X^1h7+ z=TF+j_gdq6>5lWWim(6SH!m?c*Luw|bf@`>t-s}}nN3one!oHU?;WUrIT$#QVjonZ zR?Jy@c_UX-fW*;4$DTVfvU(<0uRMEn>&_GAj^t*RZ+wl>KlmJ-HhX*LKNSAL_4b?i zxd#aevHE`;?9K`9y!YDT@#@!B#@}p8FLoAA`q4hGT~z3f>cum&FMQwV*w&pg>u0=` zo>+v^0Wr&Uld{D$E~nphv_BFxlcRb{h1bf+B|h_cubSRaJSxa~F5|-_x6Mv7Lu41% z+ATQ5YbuxVaa!2ssF_}KE86y5{eJu1eVPB~zx_E=S;zkV=j(qwzb3zX&wlZyIzIpt C$Z8A# literal 0 HcmV?d00001 diff --git a/assets/gfx/star1.png b/assets/gfx/star1.png new file mode 100644 index 0000000..968adb5 --- /dev/null +++ b/assets/gfx/star1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba8fe5837d04a4d031673921cb4755c749f6bebfad7271b0c9eb79f95920e672 +size 247 diff --git a/assets/gfx/star1.png.import b/assets/gfx/star1.png.import new file mode 100644 index 0000000..24f1553 --- /dev/null +++ b/assets/gfx/star1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dski3gvj6msun" +path="res://.godot/imported/star1.png-f3f412c95cf1c5b95a4a7df278f2652e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/star1.png" +dest_files=["res://.godot/imported/star1.png-f3f412c95cf1c5b95a4a7df278f2652e.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/assets/gfx/star2.png b/assets/gfx/star2.png new file mode 100644 index 0000000..4243a59 --- /dev/null +++ b/assets/gfx/star2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad802ac798abf4f52b2667d52f2934fbe34341be25f08b1c9a5652b6d9ee6fbc +size 483 diff --git a/assets/gfx/star2.png.import b/assets/gfx/star2.png.import new file mode 100644 index 0000000..3351d1d --- /dev/null +++ b/assets/gfx/star2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://duavnpv4rkkgx" +path="res://.godot/imported/star2.png-b5f82f2ffda66c44b4c54e87ea886b2f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/star2.png" +dest_files=["res://.godot/imported/star2.png-b5f82f2ffda66c44b4c54e87ea886b2f.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/assets/gfx/star3.png b/assets/gfx/star3.png new file mode 100644 index 0000000..54468ec --- /dev/null +++ b/assets/gfx/star3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:842042d1742fede3e16de4273d0f9e1bf070ab6960f571741761e6812b0ed5de +size 362 diff --git a/assets/gfx/star3.png.import b/assets/gfx/star3.png.import new file mode 100644 index 0000000..e615fda --- /dev/null +++ b/assets/gfx/star3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cn2kdlnfxrhah" +path="res://.godot/imported/star3.png-eb4f9ff816a651152c8c2aca0c054435.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/star3.png" +dest_files=["res://.godot/imported/star3.png-eb4f9ff816a651152c8c2aca0c054435.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/assets/gfx/star4.png b/assets/gfx/star4.png new file mode 100644 index 0000000..3fd6456 --- /dev/null +++ b/assets/gfx/star4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7f7ca38c7e2b7a947478bf5f907fae8443cac848045b94369b49592e7045a50 +size 501 diff --git a/assets/gfx/star4.png.import b/assets/gfx/star4.png.import new file mode 100644 index 0000000..be93959 --- /dev/null +++ b/assets/gfx/star4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://51s6an87yc1f" +path="res://.godot/imported/star4.png-b927e13200f5524dd9dd75ae288ed942.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/star4.png" +dest_files=["res://.godot/imported/star4.png-b927e13200f5524dd9dd75ae288ed942.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/assets/gfx/star5.png b/assets/gfx/star5.png new file mode 100644 index 0000000..33199eb --- /dev/null +++ b/assets/gfx/star5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bd2d26192cca11f1ccca9e67204d2c6d0892d55c602d975ca45eb67c5f84624 +size 431 diff --git a/assets/gfx/star5.png.import b/assets/gfx/star5.png.import new file mode 100644 index 0000000..33eb164 --- /dev/null +++ b/assets/gfx/star5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://62bvbadc4yhc" +path="res://.godot/imported/star5.png-3fbd5acf3f54220ba4aafb23a4e447c4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/star5.png" +dest_files=["res://.godot/imported/star5.png-3fbd5acf3f54220ba4aafb23a4e447c4.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/assets/gfx/star6.png b/assets/gfx/star6.png new file mode 100644 index 0000000..1c32b20 --- /dev/null +++ b/assets/gfx/star6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62332e6b718c66b8e7076ce9553a5355122e6fb63e2003a7ce74a84f0702a64c +size 433 diff --git a/assets/gfx/star6.png.import b/assets/gfx/star6.png.import new file mode 100644 index 0000000..a537858 --- /dev/null +++ b/assets/gfx/star6.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c53y4qb5nh44q" +path="res://.godot/imported/star6.png-34f5578ab557e5eaf99574ebb6e351b3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/star6.png" +dest_files=["res://.godot/imported/star6.png-34f5578ab557e5eaf99574ebb6e351b3.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/assets/gfx/up.png b/assets/gfx/up.png new file mode 100644 index 0000000..ef8e3d2 --- /dev/null +++ b/assets/gfx/up.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66883249f4ce94971cf37ce36d351ec011717ad99a8f3e7259b511a70322af2c +size 211 diff --git a/assets/gfx/up.png.import b/assets/gfx/up.png.import new file mode 100644 index 0000000..a7af523 --- /dev/null +++ b/assets/gfx/up.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcqb78dlidqq1" +path="res://.godot/imported/up.png-afc336b1842f6183d6d25d72e8e03c76.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gfx/up.png" +dest_files=["res://.godot/imported/up.png-afc336b1842f6183d6d25d72e8e03c76.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/assets/sfx/explosion.wav b/assets/sfx/explosion.wav new file mode 100644 index 0000000..4e5423f --- /dev/null +++ b/assets/sfx/explosion.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55f157f2e5bb88f4fab7679a8239386bd6be03fe76e8314cb00a4bac912fa430 +size 22154 diff --git a/assets/sfx/explosion.wav.import b/assets/sfx/explosion.wav.import new file mode 100644 index 0000000..5a609ea --- /dev/null +++ b/assets/sfx/explosion.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://pwt5sk4ao7ga" +path="res://.godot/imported/explosion.wav-e1f35b1a1dc4bf25a23a1f22f1673be5.sample" + +[deps] + +source_file="res://assets/sfx/explosion.wav" +dest_files=["res://.godot/imported/explosion.wav-e1f35b1a1dc4bf25a23a1f22f1673be5.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/assets/sfx/explosion2.wav b/assets/sfx/explosion2.wav new file mode 100644 index 0000000..a29c92c --- /dev/null +++ b/assets/sfx/explosion2.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41dbafe087c5b25198f567937c03a95990410401bcffd2176a7ea67b62a2bc85 +size 100348 diff --git a/assets/sfx/explosion2.wav.import b/assets/sfx/explosion2.wav.import new file mode 100644 index 0000000..568a764 --- /dev/null +++ b/assets/sfx/explosion2.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://4g4kmiy5ussi" +path="res://.godot/imported/explosion2.wav-7a64ef00790f7fc33e2406d466983cac.sample" + +[deps] + +source_file="res://assets/sfx/explosion2.wav" +dest_files=["res://.godot/imported/explosion2.wav-7a64ef00790f7fc33e2406d466983cac.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/assets/sfx/hurt.wav b/assets/sfx/hurt.wav new file mode 100644 index 0000000..40549a7 --- /dev/null +++ b/assets/sfx/hurt.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e48236bb6e767a33c5ca5d918b4a158aec996cb1325889bad1f163c35444eef7 +size 15806 diff --git a/assets/sfx/hurt.wav.import b/assets/sfx/hurt.wav.import new file mode 100644 index 0000000..0335943 --- /dev/null +++ b/assets/sfx/hurt.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://b5dpr2diuat5e" +path="res://.godot/imported/hurt.wav-f9e15987cf0d0247f8a182945127f72d.sample" + +[deps] + +source_file="res://assets/sfx/hurt.wav" +dest_files=["res://.godot/imported/hurt.wav-f9e15987cf0d0247f8a182945127f72d.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/assets/sfx/hurt2.wav b/assets/sfx/hurt2.wav new file mode 100644 index 0000000..e9f7693 --- /dev/null +++ b/assets/sfx/hurt2.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5e88123140600d563b7c8a26f7ee10f37f50a03300ba54cd8187f6f6a1ea43c +size 142692 diff --git a/assets/sfx/hurt2.wav.import b/assets/sfx/hurt2.wav.import new file mode 100644 index 0000000..4950a53 --- /dev/null +++ b/assets/sfx/hurt2.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cwsqbuoipmtad" +path="res://.godot/imported/hurt2.wav-d98048f7a15b63eac5a10f4df1feb7da.sample" + +[deps] + +source_file="res://assets/sfx/hurt2.wav" +dest_files=["res://.godot/imported/hurt2.wav-d98048f7a15b63eac5a10f4df1feb7da.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/assets/sfx/ship_explosion.wav b/assets/sfx/ship_explosion.wav new file mode 100644 index 0000000..f0bd2f8 --- /dev/null +++ b/assets/sfx/ship_explosion.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b490d7d11a55eb4a55ef179e37e20c4df45cebc486be696fa9fa8d66459088b6 +size 96422 diff --git a/assets/sfx/ship_explosion.wav.import b/assets/sfx/ship_explosion.wav.import new file mode 100644 index 0000000..f4e3335 --- /dev/null +++ b/assets/sfx/ship_explosion.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cskk47g6kpt73" +path="res://.godot/imported/ship_explosion.wav-016a5d40cc55b1df634dc20aec6cea4f.sample" + +[deps] + +source_file="res://assets/sfx/ship_explosion.wav" +dest_files=["res://.godot/imported/ship_explosion.wav-016a5d40cc55b1df634dc20aec6cea4f.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/assets/sfx/ship_explosion2.wav b/assets/sfx/ship_explosion2.wav new file mode 100644 index 0000000..6a755eb --- /dev/null +++ b/assets/sfx/ship_explosion2.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:767afd9e47e669535bc8637bbd9ae090e950cdbfb00fbb29001aa3d59408be48 +size 248060 diff --git a/assets/sfx/ship_explosion2.wav.import b/assets/sfx/ship_explosion2.wav.import new file mode 100644 index 0000000..6b71eab --- /dev/null +++ b/assets/sfx/ship_explosion2.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cr5eb0te0go26" +path="res://.godot/imported/ship_explosion2.wav-80ab9cff6e7bcc36605ce85f06c90b6c.sample" + +[deps] + +source_file="res://assets/sfx/ship_explosion2.wav" +dest_files=["res://.godot/imported/ship_explosion2.wav-80ab9cff6e7bcc36605ce85f06c90b6c.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/assets/sfx/shoot.wav b/assets/sfx/shoot.wav new file mode 100644 index 0000000..f531e36 --- /dev/null +++ b/assets/sfx/shoot.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4f357ac638726f972e785caebf59438062643d6668cde51bae57c1c90ccfa50 +size 16512 diff --git a/assets/sfx/shoot.wav.import b/assets/sfx/shoot.wav.import new file mode 100644 index 0000000..351d4f1 --- /dev/null +++ b/assets/sfx/shoot.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cmse8a6tt5eq0" +path="res://.godot/imported/shoot.wav-e9bec753846e12fa31bfb2e7cf2b2288.sample" + +[deps] + +source_file="res://assets/sfx/shoot.wav" +dest_files=["res://.godot/imported/shoot.wav-e9bec753846e12fa31bfb2e7cf2b2288.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/assets/sfx/shoot2.wav b/assets/sfx/shoot2.wav new file mode 100644 index 0000000..bf1c2ab --- /dev/null +++ b/assets/sfx/shoot2.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86d67412428ca0f3348521ec193263214f3f97f4ed362aa034ab8b8967491e70 +size 180324 diff --git a/assets/sfx/shoot2.wav.import b/assets/sfx/shoot2.wav.import new file mode 100644 index 0000000..39c1cb9 --- /dev/null +++ b/assets/sfx/shoot2.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bio5bv0mi006i" +path="res://.godot/imported/shoot2.wav-93cee12f82dd277d215b2c88cec2c4c4.sample" + +[deps] + +source_file="res://assets/sfx/shoot2.wav" +dest_files=["res://.godot/imported/shoot2.wav-93cee12f82dd277d215b2c88cec2c4c4.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..03e7f1a --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,41 @@ +[preset.0] + +name="Web" +platform="Web" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="dist/web/index.html" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +variant/extensions_support=false +variant/thread_support=false +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=true +html/export_icon=true +html/custom_html_shell="" +html/head_include="" +html/canvas_resize_policy=2 +html/focus_canvas_on_start=true +html/experimental_virtual_keyboard=false +progressive_web_app/enabled=false +progressive_web_app/ensure_cross_origin_isolation_headers=true +progressive_web_app/offline_page="" +progressive_web_app/display=1 +progressive_web_app/orientation=0 +progressive_web_app/icon_144x144="" +progressive_web_app/icon_180x180="" +progressive_web_app/icon_512x512="" +progressive_web_app/background_color=Color(0, 0, 0, 1) diff --git a/global/global.gd b/global/global.gd new file mode 100644 index 0000000..6eb0d9d --- /dev/null +++ b/global/global.gd @@ -0,0 +1,11 @@ +extends Node + +var enemy_level := 0; +var ship_level := 0; +var score := 0; + +var meteor_base_speed := 400; +var meteor_base_timer := 0.25; + +var player_base_speed := 500; +var player_shoot_cooldown := 0.5; 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..3c04346 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://uhofc5bd4gcm" +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/project.godot b/project.godot new file mode 100644 index 0000000..ca51f4a --- /dev/null +++ b/project.godot @@ -0,0 +1,80 @@ +; 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="my-gd-game" +run/main_scene="res://scenes/level.tscn" +config/features=PackedStringArray("4.3", "Forward Plus") +config/icon="res://icon.svg" + +[autoload] + +Global="*res://global/global.gd" + +[display] + +window/size/viewport_width=1280 +window/size/viewport_height=720 +window/stretch/mode="viewport" +window/stretch/aspect="expand" + +[input] + +left={ +"deadzone": 0.5, +"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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, 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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +right={ +"deadzone": 0.5, +"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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, 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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +] +} +fire={ +"deadzone": 0.5, +"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +] +} +up={ +"deadzone": 0.5, +"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":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, 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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +] +} +down={ +"deadzone": 0.5, +"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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +, 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":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +continue={ +"deadzone": 0.5, +"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +] +} + +[input_devices] + +pointing/emulate_touch_from_mouse=true +pointing/emulate_mouse_from_touch=false + +[layer_names] + +2d_physics/layer_1="Player" +2d_physics/layer_2="Meteors" +2d_physics/layer_3="Walls" +2d_physics/layer_4="Laser" + +[rendering] + +textures/vram_compression/import_etc2_astc=true diff --git a/scenes/game_over.gd b/scenes/game_over.gd new file mode 100644 index 0000000..27f2aa1 --- /dev/null +++ b/scenes/game_over.gd @@ -0,0 +1,11 @@ +extends Node2D + +@export var scene: PackedScene + +func _ready(): + $CanvasLayer/VBoxContainer/Score.text += str(Global.score); + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta: float) -> void: + if Input.is_action_just_pressed("continue"): + get_tree().change_scene_to_packed(scene) diff --git a/scenes/game_over.tscn b/scenes/game_over.tscn new file mode 100644 index 0000000..42bcc8e --- /dev/null +++ b/scenes/game_over.tscn @@ -0,0 +1,81 @@ +[gd_scene load_steps=5 format=3 uid="uid://dsujhlrcl3hr3"] + +[ext_resource type="Script" path="res://scenes/game_over.gd" id="1_h2fw8"] +[ext_resource type="PackedScene" uid="uid://byrjn2ta5gsld" path="res://scenes/level.tscn" id="2_latqh"] +[ext_resource type="Texture2D" uid="uid://p8npigebbm88" path="res://assets/gfx/ship.png" id="3_rgq6y"] +[ext_resource type="AudioStream" uid="uid://cr5eb0te0go26" path="res://assets/sfx/ship_explosion2.wav" id="4_0i6ac"] + +[node name="GameOver" type="Node2D"] +script = ExtResource("1_h2fw8") +scene = ExtResource("2_latqh") + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="BG" type="ColorRect" parent="CanvasLayer"] +offset_right = 1280.0 +offset_bottom = 1280.0 +scale = Vector2(2, 2) +color = Color(0.0652247, 0.101439, 0.35129, 1) + +[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer"] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -114.5 +offset_top = -47.5 +offset_right = 114.5 +offset_bottom = 47.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 50 + +[node name="GameOver" type="Label" parent="CanvasLayer/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 40 +text = "GAME OVER" +horizontal_alignment = 1 + +[node name="Score" type="Label" parent="CanvasLayer/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 26 +text = "Score: " +horizontal_alignment = 1 + +[node name="Control" type="Control" parent="CanvasLayer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TouchScreenButton" type="TouchScreenButton" parent="CanvasLayer/VBoxContainer/Control"] +position = Vector2(-16, -16) +scale = Vector2(2, 2) +texture_normal = ExtResource("3_rgq6y") +action = "continue" + +[node name="VBoxContainer2" type="VBoxContainer" parent="CanvasLayer"] +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -91.5 +offset_top = -40.0 +offset_right = 91.5 +grow_horizontal = 2 +grow_vertical = 0 +size_flags_horizontal = 4 +size_flags_vertical = 4 +theme_override_constants/separation = 20 + +[node name="Label" type="Label" parent="CanvasLayer/VBoxContainer2"] +layout_mode = 2 +size_flags_horizontal = 4 +text = "Press space to continue" + +[node name="ShipDestroyed" type="AudioStreamPlayer" parent="."] +stream = ExtResource("4_0i6ac") +autoplay = true + +[connection signal="resized" from="CanvasLayer/BG" to="." method="_on_bg_resized"] diff --git a/scenes/laser.gd b/scenes/laser.gd new file mode 100644 index 0000000..f1156d1 --- /dev/null +++ b/scenes/laser.gd @@ -0,0 +1,19 @@ +extends Area2D + +@export var speed = 500; + +func _ready() -> void: + var tween = create_tween(); + tween.tween_property( + $Sprite2D, + 'scale', + Vector2(1.,1.), + 0.2 + ).from(Vector2(0., 0.)); + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + position.y -= speed * delta; + + if position.y < 0: + queue_free(); diff --git a/scenes/laser.tscn b/scenes/laser.tscn new file mode 100644 index 0000000..5dc0d34 --- /dev/null +++ b/scenes/laser.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=4 format=3 uid="uid://ck8ed6dd12vqs"] + +[ext_resource type="Script" path="res://scenes/laser.gd" id="1_62hup"] +[ext_resource type="Texture2D" uid="uid://cwsth67tjjxxt" path="res://assets/gfx/laser.png" id="1_fb6k8"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_c5bm6"] +size = Vector2(6, 29) + +[node name="laser" type="Area2D"] +collision_layer = 8 +collision_mask = 2 +script = ExtResource("1_62hup") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("1_fb6k8") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0, 1.5) +shape = SubResource("RectangleShape2D_c5bm6") diff --git a/scenes/level.gd b/scenes/level.gd new file mode 100644 index 0000000..73fd6f1 --- /dev/null +++ b/scenes/level.gd @@ -0,0 +1,58 @@ +extends Node2D + +var meteor_scene: PackedScene = load("res://scenes/meteor.tscn"); +var laser_scene: PackedScene = load("res://scenes/laser.tscn"); + +@export var health: int = 3 + +func _ready() -> void: + var rng := RandomNumberGenerator.new() + var window_size = get_viewport().get_visible_rect().size; + + $Borders/Left/Coll.shape.size.y = window_size[1]; + $Borders/Right/Coll.shape.size.y = window_size[1]; + $Borders/Top/Coll.shape.size.x = window_size[0]; + $Borders/Bot/Coll.shape.size.x = window_size[0]; + + $Borders/Right.position.x = window_size[0] + 30; + $Borders/Bot.position.y = window_size[1]; + + Global.enemy_level = 0; + Global.ship_level = 0; + Global.score = 0; + Global.meteor_base_speed = 400; + Global.meteor_base_timer = 0.25; + Global.player_base_speed = 500; + Global.player_shoot_cooldown = 0.5; + + for _n in range(4, 15): + var star = $Stars/base.duplicate(); + $Stars.add_child(star); + star.autoplay = "true"; + star.global_position = Vector2( + rng.randi_range(0, window_size[0]), + rng.randi_range(0, window_size[1]), + ); + star.speed_scale = rng.randf_range(0.5, 1.5); + var s = rng.randf_range(0.5, 1.5); + star.scale = Vector2(s, s); + get_tree().call_group("ui", "set_health", health); + +func _on_meteor_timer_timeout() -> void: + $MeteorTimer.wait_time = Global.meteor_base_timer; + var meteor = meteor_scene.instantiate(); + $Meteors.add_child(meteor); + meteor.connect("collision", _on_meteor_collision); + +func _on_meteor_collision() -> void: + health -= 1; + get_tree().call_group("ui", "set_health", health); + if health <= 0: + get_tree().change_scene_to_file("res://scenes/game_over.tscn"); + else: + $ShipHit.play(); + +func _on_player_laser(pos: Vector2) -> void: + var laser = laser_scene.instantiate(); + $Lasers.add_child(laser); + laser.position = pos; diff --git a/scenes/level.tscn b/scenes/level.tscn new file mode 100644 index 0000000..52bd091 --- /dev/null +++ b/scenes/level.tscn @@ -0,0 +1,124 @@ +[gd_scene load_steps=15 format=3 uid="uid://byrjn2ta5gsld"] + +[ext_resource type="PackedScene" uid="uid://2kccnun8mkjv" path="res://scenes/player.tscn" id="1_35q1n"] +[ext_resource type="Script" path="res://scenes/level.gd" id="1_bh63m"] +[ext_resource type="Texture2D" uid="uid://bqssrdxkdgjiv" path="res://assets/gfx/bg.png" id="2_ek6d0"] +[ext_resource type="Texture2D" uid="uid://dski3gvj6msun" path="res://assets/gfx/star1.png" id="3_4miyn"] +[ext_resource type="Texture2D" uid="uid://duavnpv4rkkgx" path="res://assets/gfx/star2.png" id="4_blnv3"] +[ext_resource type="Texture2D" uid="uid://cn2kdlnfxrhah" path="res://assets/gfx/star3.png" id="5_fkc8v"] +[ext_resource type="Texture2D" uid="uid://51s6an87yc1f" path="res://assets/gfx/star4.png" id="6_7ucuq"] +[ext_resource type="Texture2D" uid="uid://62bvbadc4yhc" path="res://assets/gfx/star5.png" id="7_vyiqk"] +[ext_resource type="Texture2D" uid="uid://c53y4qb5nh44q" path="res://assets/gfx/star6.png" id="8_dy6n5"] +[ext_resource type="PackedScene" uid="uid://drg5covf2vhj8" path="res://scenes/ui.tscn" id="10_ac25c"] +[ext_resource type="AudioStream" uid="uid://cwsqbuoipmtad" path="res://assets/sfx/hurt2.wav" id="11_vh4gx"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_v16wl"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("3_4miyn") +}, { +"duration": 1.0, +"texture": ExtResource("4_blnv3") +}, { +"duration": 1.0, +"texture": ExtResource("5_fkc8v") +}, { +"duration": 1.0, +"texture": ExtResource("6_7ucuq") +}, { +"duration": 1.0, +"texture": ExtResource("7_vyiqk") +}, { +"duration": 1.0, +"texture": ExtResource("8_dy6n5") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_dc5e8"] +size = Vector2(60, 720) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_u7dyo"] +size = Vector2(1280, 10) + +[node name="Level" type="Node2D"] +script = ExtResource("1_bh63m") + +[node name="BG" type="Sprite2D" parent="."] +scale = Vector2(5, 10) +texture = ExtResource("2_ek6d0") +offset = Vector2(300, 200) +metadata/_edit_lock_ = true + +[node name="Stars" type="Node2D" parent="."] +metadata/_edit_lock_ = true + +[node name="base" type="AnimatedSprite2D" parent="Stars"] +position = Vector2(146, 96) +sprite_frames = SubResource("SpriteFrames_v16wl") +autoplay = "default" +frame_progress = 0.705026 + +[node name="Player" parent="." groups=["ui"] instance=ExtResource("1_35q1n")] +z_index = 999 +position = Vector2(642, 602) + +[node name="Borders" type="Node2D" parent="."] +metadata/_edit_lock_ = true + +[node name="Right" type="StaticBody2D" parent="Borders"] +position = Vector2(1300, 360) +collision_layer = 4 +metadata/_edit_lock_ = true + +[node name="Coll" type="CollisionShape2D" parent="Borders/Right"] +shape = SubResource("RectangleShape2D_dc5e8") +metadata/_edit_lock_ = true + +[node name="Top" type="StaticBody2D" parent="Borders"] +position = Vector2(640, 0) +collision_layer = 4 +metadata/_edit_lock_ = true + +[node name="Coll" type="CollisionShape2D" parent="Borders/Top"] +shape = SubResource("RectangleShape2D_u7dyo") +metadata/_edit_lock_ = true + +[node name="Bot" type="StaticBody2D" parent="Borders"] +position = Vector2(640, 720) +collision_layer = 4 +metadata/_edit_lock_ = true + +[node name="Coll" type="CollisionShape2D" parent="Borders/Bot"] +shape = SubResource("RectangleShape2D_u7dyo") +metadata/_edit_lock_ = true + +[node name="Left" type="StaticBody2D" parent="Borders"] +position = Vector2(-30, 360) +collision_layer = 4 +metadata/_edit_lock_ = true + +[node name="Coll" type="CollisionShape2D" parent="Borders/Left"] +shape = SubResource("RectangleShape2D_dc5e8") +metadata/_edit_lock_ = true + +[node name="MeteorTimer" type="Timer" parent="."] +wait_time = 0.25 +autostart = true + +[node name="Meteors" type="Node2D" parent="."] +metadata/_edit_lock_ = true + +[node name="Lasers" type="Node2D" parent="."] +metadata/_edit_lock_ = true + +[node name="UI" parent="." groups=["ui"] instance=ExtResource("10_ac25c")] + +[node name="ShipHit" type="AudioStreamPlayer" parent="."] +stream = ExtResource("11_vh4gx") + +[connection signal="laser" from="Player" to="." method="_on_player_laser"] +[connection signal="timeout" from="MeteorTimer" to="." method="_on_meteor_timer_timeout"] diff --git a/scenes/meteor.gd b/scenes/meteor.gd new file mode 100644 index 0000000..9d046a9 --- /dev/null +++ b/scenes/meteor.gd @@ -0,0 +1,40 @@ +extends Area2D + +@export var direction := 0.; +@export var speed := 400; +@export var rot_speed := 0.; + +var can_collide := true; + +signal collision + +func _ready() -> void: + var rng := RandomNumberGenerator.new(); + var width = get_viewport().get_visible_rect().size[0] + var rand_x = rng.randi_range(10, width - 10); + var rand_y = rng.randi_range(-150, -50); + position = Vector2(rand_x, rand_y); + speed = rng.randi_range(Global.meteor_base_speed - 200, Global.meteor_base_speed + 200); + rot_speed = rng.randi_range(0, 100); + direction = rng.randf_range(-1., 1.); + +func _process(delta) -> void: + position += Vector2(direction, 1.0) * speed * delta; + rotation += rot_speed * delta; + var height = get_viewport().get_visible_rect().size[1] + + if position.y > height: + queue_free(); + +func _on_body_entered(_body: Node2D) -> void: + if can_collide: + collision.emit(); + +func _on_area_entered(area: Area2D) -> void: + area.queue_free(); + $DestroyMeteor.play(); + Global.score += 10; + $MeteorImage.hide(); + can_collide = false; + await get_tree().create_timer(0.5).timeout; + queue_free(); diff --git a/scenes/meteor.tscn b/scenes/meteor.tscn new file mode 100644 index 0000000..2511b0a --- /dev/null +++ b/scenes/meteor.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=4 format=3 uid="uid://ec5t4ff57drg"] + +[ext_resource type="Texture2D" uid="uid://cy0lqjas2aw15" path="res://assets/gfx/meteroid.png" id="1_8ih5k"] +[ext_resource type="Script" path="res://scenes/meteor.gd" id="1_i72w4"] +[ext_resource type="AudioStream" uid="uid://4g4kmiy5ussi" path="res://assets/sfx/explosion2.wav" id="3_rgtxm"] + +[node name="Meteor" type="Area2D"] +collision_layer = 2 +collision_mask = 9 +script = ExtResource("1_i72w4") + +[node name="MeteorImage" type="Sprite2D" parent="."] +texture = ExtResource("1_8ih5k") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +polygon = PackedVector2Array(-11, 10, -11, 1, -9, -5, -2, -10, 6, -11, 11, -7, 11, 4, 5, 12) + +[node name="DestroyMeteor" type="AudioStreamPlayer" parent="."] +stream = ExtResource("3_rgtxm") + +[connection signal="area_entered" from="." to="." method="_on_area_entered"] +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/player.gd b/scenes/player.gd new file mode 100644 index 0000000..3a1733e --- /dev/null +++ b/scenes/player.gd @@ -0,0 +1,38 @@ +extends CharacterBody2D + +#@export var SPEED: int = 500; +#@export var SHOOT_COOLDOWN: float = 0.5; + +var cooldown := 0.0; +var last_direction := Vector2(0., 0.); +@export var last_direction_coef := 1.2; +@export var max_last_direction := -1.5; + +signal laser(pos: Vector2); + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + var window_size = get_viewport().get_visible_rect().size; + position = Vector2(window_size[0] / 2, window_size[1] / 4 * 3); + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + var speed = Global.player_base_speed; + var direction = Input.get_vector("left", "right", "up", "down"); + velocity = (last_direction + direction) * speed; + last_direction = (last_direction + direction) / last_direction_coef; + if last_direction.x < -max_last_direction: + last_direction.x = -max_last_direction; + if last_direction.y < -max_last_direction: + last_direction.y = -max_last_direction; + if last_direction.x > max_last_direction: + last_direction.x = max_last_direction; + if last_direction.y > max_last_direction: + last_direction.y = max_last_direction; + if cooldown > 0: + cooldown -= delta; + move_and_slide(); + if Input.is_action_just_pressed("fire") and cooldown <= 0: + laser.emit($LaserStart.global_position) + cooldown = Global.player_shoot_cooldown; + $LaserSound.play() diff --git a/scenes/player.tscn b/scenes/player.tscn new file mode 100644 index 0000000..59ff5cd --- /dev/null +++ b/scenes/player.tscn @@ -0,0 +1,35 @@ +[gd_scene load_steps=5 format=3 uid="uid://2kccnun8mkjv"] + +[ext_resource type="Texture2D" uid="uid://p8npigebbm88" path="res://assets/gfx/ship.png" id="1_6r50y"] +[ext_resource type="Script" path="res://scenes/player.gd" id="1_spn58"] +[ext_resource type="AudioStream" uid="uid://bio5bv0mi006i" path="res://assets/sfx/shoot2.wav" id="3_650e3"] + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_gc25u"] +lifetime_randomness = 0.29 +particle_flag_disable_z = true +emission_shape = 1 +emission_sphere_radius = 8.5 +angular_velocity_min = 112.09 +angular_velocity_max = 198.32 +gravity = Vector3(0, 98, 0) +color = Color(1, 0.556863, 0.145098, 1) + +[node name="Player" type="CharacterBody2D"] +collision_mask = 6 +script = ExtResource("1_spn58") + +[node name="PlayerImage" type="Sprite2D" parent="."] +texture = ExtResource("1_6r50y") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +position = Vector2(-0.445736, -0.727245) +polygon = PackedVector2Array(-13.5543, 8.72725, 0.445736, -11.2728, 14.4457, 8.72725) + +[node name="LaserStart" type="Marker2D" parent="."] +position = Vector2(0, -21) + +[node name="LaserSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource("3_650e3") + +[node name="GPUParticles2D" type="GPUParticles2D" parent="."] +process_material = SubResource("ParticleProcessMaterial_gc25u") diff --git a/scenes/ui.gd b/scenes/ui.gd new file mode 100644 index 0000000..9cbbcfa --- /dev/null +++ b/scenes/ui.gd @@ -0,0 +1,48 @@ +extends CanvasLayer + +static var health_sprite = load("res://assets/gfx/ship.png"); +var elapsed := 0; + +func set_health(amount): + for child in $Health/HealthContainer.get_children(): + child.queue_free(); + for i in amount: + var text_rect = TextureRect.new(); + text_rect.texture = health_sprite; + text_rect.stretch_mode = TextureRect.STRETCH_KEEP; + $Health/HealthContainer.add_child(text_rect); + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + Global.score = 0; + var size = get_viewport().get_visible_rect().size; + $Score.position = Vector2(size[0] / 2, 50); + $Health.position = Vector2(50, size[1] - 100); + $TouchButtons/Shoot.position = Vector2(size[0] - 200, size[1] - 200); + $"TouchButtons/Virtual Joystick".position = Vector2(200, size[1] - 400); + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta: float) -> void: + pass + +func _on_score_timer_timeout() -> void: + elapsed += 1; + if elapsed >= 10: + Global.enemy_level += 1; + if Global.enemy_level % 2 == 0 or Global.meteor_base_timer <= 0.1: + Global.meteor_base_speed += 25; + else: + Global.meteor_base_timer -= 0.05; + Global.score += 1; + if Global.score / 50 > Global.ship_level: + Global.ship_level += 1; + if Global.ship_level % 2 == 0: + Global.player_base_speed += 50; + else: + Global.player_shoot_cooldown -= 0.05; + + $Score.text = str(Global.score); + $Details/MeteorSpeed.text = "Meteor Speed: " + str(Global.meteor_base_speed); + $Details/MeteorDelay.text = "Meteor Delay: " + str(Global.meteor_base_timer); + $Details/ShipSpeed.text = "Ship Speed: " + str(Global.player_base_speed); + $Details/ShootCooldown.text = "Shoot Cooldown: " + str(Global.player_shoot_cooldown); diff --git a/scenes/ui.tscn b/scenes/ui.tscn new file mode 100644 index 0000000..2600341 --- /dev/null +++ b/scenes/ui.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=4 format=3 uid="uid://drg5covf2vhj8"] + +[ext_resource type="Script" path="res://scenes/ui.gd" id="1_a1wuu"] +[ext_resource type="PackedScene" uid="uid://dmr0fcamx7t56" path="res://addons/virtual_joystick/virtual_joystick_scene.tscn" id="4_pooqj"] +[ext_resource type="Texture2D" uid="uid://040ccmi5cn3x" path="res://assets/gfx/shoot.png" id="7_76vfp"] + +[node name="UI" type="CanvasLayer"] +script = ExtResource("1_a1wuu") + +[node name="Score" type="Label" parent="."] +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -39.0 +offset_right = 39.0 +offset_bottom = 23.0 +grow_horizontal = 2 +theme_override_font_sizes/font_size = 50 +text = "0" +horizontal_alignment = 1 + +[node name="Health" type="MarginContainer" parent="."] +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_top = -40.0 +offset_right = 152.0 +grow_vertical = 0 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_bottom = 10 + +[node name="HealthContainer" type="HBoxContainer" parent="Health"] +layout_mode = 2 +theme_override_constants/separation = 5 + +[node name="ScoreTimer" type="Timer" parent="."] +autostart = true + +[node name="TouchButtons" type="CanvasLayer" parent="."] + +[node name="Shoot" type="TouchScreenButton" parent="TouchButtons"] +position = Vector2(1240, 680) +scale = Vector2(3, 3) +texture_normal = ExtResource("7_76vfp") +action = "fire" + +[node name="Virtual Joystick" parent="TouchButtons" instance=ExtResource("4_pooqj")] +offset_top = -300.0 +offset_bottom = 0.0 +joystick_mode = 2 +action_left = "left" +action_right = "right" +action_up = "up" +action_down = "down" + +[node name="Details" type="VBoxContainer" parent="."] +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -40.0 +offset_bottom = 40.0 +grow_horizontal = 0 + +[node name="MeteorSpeed" type="Label" parent="Details"] +layout_mode = 2 + +[node name="MeteorDelay" type="Label" parent="Details"] +layout_mode = 2 + +[node name="ShipSpeed" type="Label" parent="Details"] +layout_mode = 2 + +[node name="ShootCooldown" type="Label" parent="Details"] +layout_mode = 2 + +[connection signal="timeout" from="ScoreTimer" to="." method="_on_score_timer_timeout"]