From 8d07c7630fe0adcd99e84438f4c62a0def33258a Mon Sep 17 00:00:00 2001 From: RudyIm Date: Mon, 27 Oct 2025 21:02:09 -0400 Subject: [PATCH] physics layer, veg terrain, parallax background, collectables, basic slimes --- assets/graphics/badguys/slime_green.png | Bin 0 -> 908 bytes .../graphics/badguys/slime_green.png.import | 40 ++++++ assets/graphics/env/background.png | Bin 0 -> 1927 bytes assets/graphics/env/background.png.import | 40 ++++++ assets/graphics/env/sky.png | Bin 0 -> 670 bytes assets/graphics/env/sky.png.import | 40 ++++++ .../env/terrain/mushroom_32x64(1).png | Bin 0 -> 1930 bytes .../env/terrain/mushroom_32x64(1).png.import | 40 ++++++ assets/graphics/env/terrain/veg_32x32(1).png | Bin 0 -> 675 bytes .../env/terrain/veg_32x32(1).png.import | 40 ++++++ assets/graphics/objects/plane.png | Bin 0 -> 951 bytes assets/graphics/objects/plane.png.import | 40 ++++++ assets/graphics/objects/plane_00.png | Bin 0 -> 25491 bytes assets/graphics/objects/plane_00.png.import | 40 ++++++ assets/graphics/pickups/coin.png | Bin 0 -> 500 bytes assets/graphics/pickups/coin.png.import | 40 ++++++ scenes/coin.tscn | 113 +++++++++++++++++ scenes/game.tscn | 115 +++++++++++++++++- scenes/slime.tscn | 59 +++++++++ scripts/coin.gd | 18 +++ scripts/coin.gd.uid | 1 + scripts/gamecontroller.gd | 20 +++ scripts/player.gd | 2 +- scripts/scene_manager.gd | 25 +++- scripts/slime.gd | 18 +++ scripts/slime.gd.uid | 1 + 26 files changed, 688 insertions(+), 4 deletions(-) create mode 100644 assets/graphics/badguys/slime_green.png create mode 100644 assets/graphics/badguys/slime_green.png.import create mode 100644 assets/graphics/env/background.png create mode 100644 assets/graphics/env/background.png.import create mode 100644 assets/graphics/env/sky.png create mode 100644 assets/graphics/env/sky.png.import create mode 100644 assets/graphics/env/terrain/mushroom_32x64(1).png create mode 100644 assets/graphics/env/terrain/mushroom_32x64(1).png.import create mode 100644 assets/graphics/env/terrain/veg_32x32(1).png create mode 100644 assets/graphics/env/terrain/veg_32x32(1).png.import create mode 100644 assets/graphics/objects/plane.png create mode 100644 assets/graphics/objects/plane.png.import create mode 100644 assets/graphics/objects/plane_00.png create mode 100644 assets/graphics/objects/plane_00.png.import create mode 100644 assets/graphics/pickups/coin.png create mode 100644 assets/graphics/pickups/coin.png.import create mode 100644 scenes/coin.tscn create mode 100644 scenes/slime.tscn create mode 100644 scripts/coin.gd create mode 100644 scripts/coin.gd.uid create mode 100644 scripts/slime.gd create mode 100644 scripts/slime.gd.uid diff --git a/assets/graphics/badguys/slime_green.png b/assets/graphics/badguys/slime_green.png new file mode 100644 index 0000000000000000000000000000000000000000..a21cb6fa253a2142be9bdad248238299dce6e695 GIT binary patch literal 908 zcmeAS@N?(olHy`uVBq!ia0vp^2|(<@!3HEb(?2AGr~;43Vg?3oVGw3ym^DX&fq~i1 z)5S5QV$Rz+)_J!b1lrmiqe6M+oJ(NX&NN4Phv|b`z4{NYP5+>JWrs--17qeTsRD5g z!(g=zZP^CRNrf+-+NH@KR$Td0s&mngVw3+xu0?EXcCBM}?K8i`C}Wk?V1NhZ=gNnL znwH6IezGFZ!~9a6?RHUyhPV4>Uu{?_FnfW>zS{qPKK*<4uVTZ$ce_63>1Q2~5psEW zx_|#J@#X97|9=sRdr@7gG^K>%S{q!=tk;zc{umA757CW^gF~?Y* zzL@Q4_FeSScBuyG05^_0b=8H-_E|RV`0{(oCG+JLF?=tr`x)+BFt>laYl`#E_4#US z^)8yV;ydQc)Lt=IzWv`O|NWa{=kBflzObA3)w^Aa^ZVqko^^cn|Ic5O3*}M*OaJxH zkT2-?mBRcbPJn+~%B^6jY(87p9(Mo#>Q7(h~rm&XFcnS2%Pu(#j4I<=R1EbeZ((y;O5o?wIy5Q|G$2J-k$H; z`tsE}e}z7FZ&xe&&T>;Ie$t&EuHB#RoL~6BudegQ(e6(xj^8Zaa&Il$W#4ySE~~5m zTfmt7%O>)U?6I5hEH)mc^Zy7i2AYE5_cS8+Pd zEL*XBwVBru|99M6hFkZ|y>aAN9DmO}@fM%8>yNRi-8VbG`yY1_&*gmzOfw=rUyaF+ zc6a>UWOJqT@=>+Yz0nhwE57CCn(*tmRI)?YzOxPXujg|0Ui|Qj8JN8oJYD@<);T3K F0RY5^vzq__ literal 0 HcmV?d00001 diff --git a/assets/graphics/badguys/slime_green.png.import b/assets/graphics/badguys/slime_green.png.import new file mode 100644 index 0000000..7422213 --- /dev/null +++ b/assets/graphics/badguys/slime_green.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bnfqqdcx7u4qt" +path="res://.godot/imported/slime_green.png-21e7f3de42454347166252dd70ddb7e7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/badguys/slime_green.png" +dest_files=["res://.godot/imported/slime_green.png-21e7f3de42454347166252dd70ddb7e7.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 diff --git a/assets/graphics/env/background.png b/assets/graphics/env/background.png new file mode 100644 index 0000000000000000000000000000000000000000..f502431c014c359ee788e724d8f996e7c94e4e19 GIT binary patch literal 1927 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 Q6aWAK07*qoM6N<$f}4kpEdT%j literal 0 HcmV?d00001 diff --git a/assets/graphics/env/terrain/mushroom_32x64(1).png.import b/assets/graphics/env/terrain/mushroom_32x64(1).png.import new file mode 100644 index 0000000..f99348b --- /dev/null +++ b/assets/graphics/env/terrain/mushroom_32x64(1).png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqgc7aef0pm78" +path="res://.godot/imported/mushroom_32x64(1).png-cc9f034e3d7911017ea636b04f7b55bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/env/terrain/mushroom_32x64(1).png" +dest_files=["res://.godot/imported/mushroom_32x64(1).png-cc9f034e3d7911017ea636b04f7b55bc.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 diff --git a/assets/graphics/env/terrain/veg_32x32(1).png b/assets/graphics/env/terrain/veg_32x32(1).png new file mode 100644 index 0000000000000000000000000000000000000000..4e09fa94c72733804bbf24e8b93c93c7daf096c0 GIT binary patch literal 675 zcmV;U0$lxxP)EX>4Tx04R}tkv&MmKpe$iTcsiu5i5!~WT;Lph>AFB6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jf7n~Gbq{ROvg%&X$9QWhhy~o`#<}3IpJ#@RbZVYBOe_@ISZ-rhG*sd#;)tSZl<&{D ztZ?4qtd^^+c~AbrP)=J}<~q$0B(R7jh!7y7iW17O5TjKi#YBqs;~xHD$1jpgCRYiJ z91EyGh2;3b|KNAGW`1(QO$x<<&KKMM7zKj6K%-{c-^aGyH~|9Bz?IhWSL(pbC+W48 z7C8cXw}Ff6mL~53mpj1FlP(#OBL!&s^LgO?jJ_!g^xp#AYi@7NeVjf3Y3eF@0~{Oz zV+G1y_jq?#dvE`qY4-O6go1LeRQ&;x00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=>riLDmieSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004VQL_t(o!|ju?4Zt7_1PueQT$ad4EWvVFfK*5>Yzf;q zY5pn-!u{hw1ONa4006+xlv4-w(dJs;*Hb5K$3aK5xV}Y5s6Pw5~a#BWiLE#M?t^`K{fyY002ov JPDHLkV1hjJ7cT$+ literal 0 HcmV?d00001 diff --git a/assets/graphics/env/terrain/veg_32x32(1).png.import b/assets/graphics/env/terrain/veg_32x32(1).png.import new file mode 100644 index 0000000..4e78d70 --- /dev/null +++ b/assets/graphics/env/terrain/veg_32x32(1).png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://na61n1gqy7r5" +path="res://.godot/imported/veg_32x32(1).png-1ae2d06e75bcd40f0e6723ad4f80e844.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/env/terrain/veg_32x32(1).png" +dest_files=["res://.godot/imported/veg_32x32(1).png-1ae2d06e75bcd40f0e6723ad4f80e844.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 diff --git a/assets/graphics/objects/plane.png b/assets/graphics/objects/plane.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ae4971151947aef4df445748fd689da34ff616 GIT binary patch literal 951 zcmV;o14#UdP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;y_y9sm&~D2WdM000SaNLh0L01FcU01FcV0GgZ_00007 zbV*G`2k8nM7aR&N{3&Aq00R3-L_t(o!|jw`XpM0g$3MUKcV;$hC)UaZ#)UgIB+@c} zwqwzlixpC*{8^GvCRdItCAA}e;$WD6jZL_aKeZylNQhA~W~gbbW6aL6_q^}pVrSaf z+1bt}%fSRSUqok1Z)f_4XOz_m_sIRylU|j+mj&?>4{msW@^wM8p}> zfvYuj0(=4JFfE!s2g%ILV9)jt03)1nHLmm$ZwSXtz~9@MUYo3N{uxn*W}0g_B_+$y z8Zt-5ZRRP!-PeKc%^kDLmo7M$ZKMXCPR(_)W=#<(DVpRYNHqrk%=eyt#kLf4W@Pja z0N~2?-O4G(^x62maq zyl&xu0IuDxr{=VQQhJK_L{?qDJxmRerU zAz74nFlzjEd8?(vw52}*+39jwPGtuDK1r( zsR0A@wP@PfL)6@TO~d;SQN0lWc6xlgt*`H%i_7P|DsF&S#X}Z6deMSy+tk*4LZ>%j z7#a~_eMtfSZvi%L*b!0KyStRE31g#rAtu1SV>bn0(^^+V{Qk2R0Ir|@N!zy&-+wgI z(%Q(pVkdRapYXN08Lc&4K~2z!l#Q zLM9*t8=7iIS!T%8Iyrn(i|38|nL2$oBEqH0vcYe{E(n19m1B5wXJVJ1Q}&*m6fw(7 z^3QEFRMLSz?j2do_^i~wTg6=}a#dA0^f33u>qT*#y&#|%ojwk&HAgFFMEv(``9yo0 zHLy)M7_BaTAS#@?ylN%@rE43*6(yytd}8pQ0ss`uJ?yY;F##q|$R&B$2!M#&CzQ~C Zq2Ck}rWX~sl^*~A002ovPDHLkV1m#qqp$z~ literal 0 HcmV?d00001 diff --git a/assets/graphics/objects/plane.png.import b/assets/graphics/objects/plane.png.import new file mode 100644 index 0000000..ae46d01 --- /dev/null +++ b/assets/graphics/objects/plane.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ds2j76cg1r8y2" +path="res://.godot/imported/plane.png-21cf57915088a3e057409ff9d6626ca2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/objects/plane.png" +dest_files=["res://.godot/imported/plane.png-21cf57915088a3e057409ff9d6626ca2.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 diff --git a/assets/graphics/objects/plane_00.png b/assets/graphics/objects/plane_00.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a633d33570e28d53357636b9c1cc045b4335cf GIT binary patch literal 25491 zcmeEt`9IWu^zRshK^j?$EG0{dQ6kxfQbMBayOMn^*_Rm+xOo}r@cyl-ND@7f6~iQf-hDT zq6SZ{o)JEMy0!;?_=dW)TC_F$X;=J|CDyN10|g(Yhm#qqde}#a?p|CaS zsuQcu+1c~|p6{1d*txhI4#n=i0r%VRBoDZF2S1rjY@F@(0#D%oP66C=gl) z96I;k3$efp0JB|9JP&M_ARGe3jCmB$m5zx@1WK-6&spf=xqrtV6>we) zXe=W3q_;yQd2q61bk*z0^ZADWxbD6=OE7j~wjjV~!n<*Wh4|M14(n?_Arz9Wt8wd(+oL4E6&5^-l%5G80UBqr-FAiuXBBX%@VlnnVU;GOpzW~m6 zfO5jBg%f-IPs@j5v@dtS&9iEb5wa|4@N)6}QUv5;b)(y%B25Ml*X-3GkhbH4s|>$aB&o9}O85Uvqr+H3%u=p+8i+eV%UxM} z3$F>n6|lmKre@gQfi4$z?K9kqGP|q=tnL=e0*2h&Pgy>D$K$Fqw0*Mxz^M$j-6(7s zBo+xJsz*F3sd9?=&#h&55uhAZ&2q_904Pr68u&}~?PeDFb&kfp0N}^WqeWV>J4|J%ky%6 z-Qz{u$B}nN^(Ft-h)s-LxCkyT zpql+9I;iX+Sl&a#*wWIs78aMWu-_DebSFVtliXBaEC@h@|4 zzTDQ{g?|JEqad_+o+xblD$|i7J$I2nh&~~%4;&Lf^?)qzH=?}mpV5&IQ}>*DpKDkB z>R%97-)AJ+I4Q=A+vtfuM~mnh8Vqe7Sg#Skh!+==WR5IX;Dl zN1j!GM^`MzfxejJwKFFKnAhITNF8vgsPaX1e<;zVk3hHW2%sF9Ve+e2nq=Z1-?q?v zi^j-%n(|Q?spZ;@o?`0Ne|Uw{XGA2I=6x0=Pxq>gHW2mjV6u;X8dbI`itZ0>?SfKz1OQ~wEGc;w)5SUc;ucj=hxWWw|))V^BLb#P|*R}&8+t!pt0 zbWalafITXk5VvdJ*!~hfShuWWm>|+xIWzBPSA-syw>^<_1%#|n(li&2=X#-AM?qdX zabPf2Bh3Pv*zDQV)Bbo`hwIEmIc|=B1}LO5BHdP&Klq+@jlpL^EiK7Ci@4Xyo9r$L zbUJKIYIp3E;8p&5iDqa3`ul)CijC$smDdi{)zjKtXslPBn!$u7c)R(^Mg~_pL(P%5 z*t_@rHEv8eVL}vAn|2mE6tjMj&hpRgjO{&kJ?P-Pgzv%hG%AImwVyu3Cb3Dfnx4BG z%_y?=L`DhWr*SL|#kSog6O~}b8{4dL(whfe>|rbEg4gDWh@^-I%wtx zdRiX=AhETvZ1IrEdjDkV4`HIE6E#;!6LR!aR?A*S^FHJt5-D|JPjs!qsaDBr+Iep7 zdWBUEu~Q~s54F>adN7c*lG^rB{4O}xrp*^Q^bh%4;!21G8v zA~K+Tq^3m2(Gm@ucdSx5Wjy@wBz6JTN{B`jcOampuXB`?&@(ph1=X1mbnXjOwu9fX zVCU+lr*6A@X(V`s6|MCg=PVbxmANYv=5G>T?=|Z(Hv^d*Oc}hvDJn3l&94z++p}jf z0QEcsb?k)kV0)ulDw|Y)Hg^6q$}|u4cOge8srh%3UI%9Ag9aXMyWiSH4Xw;)(3^9< zV)#ESgk4w_=V5UKqLB-%4^qd+d4qEQ0E_@{V3tNe<-lt*YTNA{)7BdTGp@%Z-oqX! z%suR*Mey*>_}2Y_lwu{^^rHrxYOOg7?S*oIT~%Xm44rr_dxYXVpm72CFwN<=^mm#a z@kYYv*}Lj5wD>vsdS1(F_LnUVzZpD+;9en%rwjnUl@pBew;t2eG!97&N+RWI#;GI8 zq7o_FX8yLMGex<|Fb^d^tdxN zJ89{h#;*H778oSSyk9{I4Q`cL3loMw(R(_?gbX7OTJ(w{!z{;}SXlJ;{^TQ4!}Xi6B?7sHoDXbf1V<$ANbdWUMLW25N)8OYoz zUM62-QggpkFI3?t*S~mLMUc2_vquPulq-f@wE0%Y1rWxRCPGVn%pKhs7Px7Rt zX0)l){Y|#ud|NDw{gic1?eMp!KIlWr12UreX-=Tn1*U~Z!TbnmfYQ7iep(~2XF#pI z{eBVQ=;95J@uFH<>eyGGhqr)5XzA*b8|sUgioY~vNkBlT1+KaYc3y^H?*5)CJOKZS z4g5MLXjg$-M$XV84wuH6>AKg#o|TRHbzFRQoHD-0!{lqx!H6m|DF&qXL-N<&{u+wb zESQ3eTSVv=)NaV9)wwz}yJ>icDQGHJPQu#wP;sXYzs6{=yO}kjh_n950X|+eZzEHv z_vi)LB@$H0T6PvV4CgzOlS{K1Q1+6*5A8>3=J&uVLhJ;BR*^HZJM8VFaRKDM42YZk z#zCt+mVGqu`2L|hp{qOz0Q|(yDATc3k>b?yU(EC#C5!SVhZ*@0A(5fU-u=8%f#8d4 z$|_gBj*@O(L^MM(tnn9_@T@Umf!;OOMW>x&Rz0`s1qZrgI|b-mp%%go8Fpntb1s?t zAy7bJ2+N!JmM}hSYX-J7b59$2+gDt5hMu3YBR48+J;830{&w;NuuPue2+$rSDW9$- zI&OP-C(=OW;|&YK2&l~vbtXX!UpLKm;zZ(F?#(L(Pp(@zxnyrhdBos=V=^LcUd3Gc zfN!!a#TLnkll=Q(PvI>>$4bSd?2;!;5Xu8Gpo*BXhQ6|l98!!YQN1u?mx!ic6h<_2 zW}CerQO*p8`0-T=y+*wp4XgYvJ9r#$wqq&Ep=VW^)DZw`jXNrF#UPa15n&YllmbQ%_U0W$LFCOipXCGx}^r~g!9{&;qd(F_?CE{DVyi5aZ1p} zR}N6Sy=yrZ!S$%dYonTuz2U8Zs6BSZi`{Ohq|e+?_An|@i%7knW#PSNPS*_a8#*e%Wnn2g)&Y z?7zarq-cGytPFhreyL54&!{Zxnp$@4yhWh3{FVeDR*-+sskAD7Dv|m$tPl2PO8FCj zw1$}X8TL*8ecqVAYwjp#r|U@cfa*oRm4W&C-NwKE9%NlhlM%1V#pMD|5}BjEgPv>t zGA%{@`t>RyA%Ud}=i5wWota0wamk)6PA{sl<(rKlN501V?KRq@h6Joz1ZlDaB~W3d z-b3o0kcU7co;vPNfZ#Hk3~AN${5!L&*bZ3UAf^4RdTL3{?xl+9r;Bx1F^iABf2Qbz zF<1IzunwkCm-tzM{z?YXf%%dVLS(KUd)haOAJ71F*T1=8mq9?~$m2&5B|+A#%9WND5n;?ePd zVM2rZ=$)3`V~qyG*Qovxf_l@X!m``#R-$)}F6+s#U9IA+f9vV^E>B)azYav1(4^YYEf?E<7~K zf{C=*0govKQBod8g}@RDG#~8#^@)I}rxSlla8SfXz6tI+80tk`vu9KgjorCTr;*n1`5Jq8cAVR+>x{C<*qKOAzd}sChL3NgQNQ)|*eDq6 ziI$(+$TL2Q@W;#7%GzR5IgB-`XN`QPaiV|Pz6k{3YUNKJ$JJBOUc=Y720pDPN*joo z0{vR=%{VDC_)-#sFR3f+Yf#dM;L@k6UW<+GBg-yenT&u9Uh`g=cA2U%)ci|RIZ zO@we5=5W8nZ0HI6pQt5EQWI>ouifXFdckA5!l~0{Gl=&K=Y&TIOzKv}B_-$_O)K1u zr{=DE2@M7Q$gRm|zf@JHw^mv_y|OuCsXsJD@eyx;^nPc!+JjFB3rO%|t@GUPDwc-c z%&^I6kvwNxJKLz|r<7|DIMKW9?$7)a-}cFupsawOq|+uH2`m>pLNGp_iw-$12z;w(?Gk zCE6OND=lnNtA%~%ymx5Wfd+q9*Wuu&?H9y3DE@P$(vRMOugS)VpGv#x(D5gFi+L{! zgCqEkgj?>T?SED^8vi-?HojL1Ksw(9L~;DXbSA=%s9JW@s$c^@%fYhufrJ?8{^KWW ze+P98JE^^|7mT_dE73Z|SmC!9OCX*!><(_?rzcw8@rTqXgX1CZ`zNr{rvePi?85w0 z?ZUhpw=hV92^P15qL^OaRog??ynwyF_AF`OfGTm!C1%-Cf@1X=bu0Agu%=d{L`K^y z%<8QSSYe19dDD~Vd6f#A#?dQws!~%F&LOnYSq}CGOud0(WE4aw_Kv(*vEenU&$DN1 zQPn61Dk+aS;e5bzcj9NTEHYDh}m}pw6P} zTf($YEk0Wt5q3;?ms6IKQ8({d6;NwFOM)rC$w-V+%4Um3auy{GNY;(HiU{XB*~dJ_ znd25Fdj%Yg6r@8x0)pMO63!p47~1IrPnM`Tm7&LD9bUTYA$-;7TIAv*zQv3Z@dh~E({nY1sEX=kdBW0Qta~?$3t|c?06t78tF0p2z z9aLe^Gm~SqyXsk_EuGv!+^y`SL42DfCN*zr=$O}oy3@Gec=OSPELBfP=d(1G7tFkN zt-(`Sp&M3e5y#II-uiJ<_D^?AcfD6f+ERk+Hes`oyV?ZxYXO=HnXOmORbPmDsuZdb zB)-C2KU>?;(H6L+q*hTsz{d5*^x#`= z7ykR2FO40!n5)6eWMQo#@!Z-YaKoULBFjv`4j9X`3JcI3= z<$IOQQ&_guJaFR4byX&z+kWl6RT6ⅆDRC-vzgRz0aPhaaw(zzVK9%=jB=PVE0Je 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 literal 0 HcmV?d00001 diff --git a/assets/graphics/objects/plane_00.png.import b/assets/graphics/objects/plane_00.png.import new file mode 100644 index 0000000..d9301eb --- /dev/null +++ b/assets/graphics/objects/plane_00.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2atf7xqymktr" +path="res://.godot/imported/plane_00.png-83942ac2f0a9d0af7e822e2321481487.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/objects/plane_00.png" +dest_files=["res://.godot/imported/plane_00.png-83942ac2f0a9d0af7e822e2321481487.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 diff --git a/assets/graphics/pickups/coin.png b/assets/graphics/pickups/coin.png new file mode 100644 index 0000000000000000000000000000000000000000..01ae33d70b398db7f1f7bcafe883a0a469805201 GIT binary patch literal 500 zcmV^r!6hi!Wct>kSmw76A*+mkqIDVjdDL!Rb}5E?Td;C@2y9S zHih2xK(yTWh+gXdrTqK8Uwx^_$MoI4V|67Hn26^Qp-rJ*c_3P5d_*tx|6%^yEznE& zeE6^KHvJ|vI7934d=L#ytZIR)9hxaN1Jm8sZ6_j{Yx1#nTWt!D2<;1?{VNX?M*l~R zzukKP+i+D+FAlB;7qkOXfaGA?&h>EX&+$Oxqgs>{d4C#zhd05hUS`kO@{&+Bb`?-H zKXwYn7Ms9B!`F}PQh%-o65r;4=uy!A4;g>*6iCRL!wF!o{9{X0YM%Mf@U=DvM2}Kx zY#A;!e+4Y{Qh#m^NPMe5dkcj0f5`ZIy8@JYG2kpkh}LrU76{dHI?&Z}2LKX(>v1MX z4k6>OaQ_N1p97frj@jdSpELonJ&y=&3jN9h(K6#Bda3^x^WUBW>`ee7IfzLSUk<|l qVg27u071wNc?u+CjZ6R`YyJS*Ofbr5QwY-l0000 void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +func _on_body_entered(body: Node2D) -> void: + print("body entered in coin") + if body is Player: + coinCollectedSignal.emit(body, self) diff --git a/scripts/coin.gd.uid b/scripts/coin.gd.uid new file mode 100644 index 0000000..820b720 --- /dev/null +++ b/scripts/coin.gd.uid @@ -0,0 +1 @@ +uid://b68u5fhlky241 diff --git a/scripts/gamecontroller.gd b/scripts/gamecontroller.gd index b4e108f..7aaf25d 100644 --- a/scripts/gamecontroller.gd +++ b/scripts/gamecontroller.gd @@ -5,6 +5,9 @@ var cratesDestroyed = 0 var timeLimit = 10 var timer:= Timer.new() +var coinsCollectedTotal:int = 0 +var totalCoinsAvailable:int = 0 + # Called when the node enters the scene tree for the first time. func _ready(): add_child(timer) @@ -33,3 +36,20 @@ func _on_trigger_fired(intent: Variant, body) -> void: get_tree().reload_current_scene() "powerup": print("power up this thing") + +func _on_coin_collected(body, coin): + print("GC knows coin collected") + coinsCollectedTotal += 1 + coin.queue_free() + if coinsCollectedTotal >= totalCoinsAvailable: + print("You won the level!") + +func totalCoins(value): + totalCoinsAvailable = value + +func _on_slime_damage(body, slime): + print("GC knows slime damage") + +func totalEnemies(value): + print("GC knows total enemies " + str(value)) + #totalEnemies = value diff --git a/scripts/player.gd b/scripts/player.gd index ea6628c..12142f1 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -1,4 +1,4 @@ -extends CharacterBody2D +class_name Player extends CharacterBody2D const SPEED = 300.0 diff --git a/scripts/scene_manager.gd b/scripts/scene_manager.gd index cfaf9ed..ead0666 100644 --- a/scripts/scene_manager.gd +++ b/scripts/scene_manager.gd @@ -2,6 +2,9 @@ class_name SceneManager extends Node2D var bullet = preload("res://scenes/bullet.tscn") +@onready var coins: Node2D = $"../Coins" +@onready var enemies: Node2D = $"../Enemies" + @onready var game: Node2D = $".." var bulletArray = [] @@ -11,8 +14,28 @@ var grenade = preload("res://scenes/grenade.tscn") # Called when the node enters the scene tree for the first time. func _ready() -> void: - pass # Replace with function body. + buildLevel() +func buildLevel() -> void: + # hook up coins + var totalCoins = 0 + if coins: + for obj in coins.get_children(): + if obj is Coin: + totalCoins += 1 + # hook up a listener at the game controller + obj.coinCollectedSignal.connect(game._on_coin_collected) + # tell GC how many coins total + game.totalCoins(totalCoins) + + var totalEnemies = 0 + if enemies: + for obj in enemies.get_children(): + if obj is Slime: + totalEnemies += 1 + # hook up a listener at the game controller + obj.slimeDamageSignal.connect(game._on_slime_damage) + game.totalEnemies(totalEnemies) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: diff --git a/scripts/slime.gd b/scripts/slime.gd new file mode 100644 index 0000000..9abfda2 --- /dev/null +++ b/scripts/slime.gd @@ -0,0 +1,18 @@ +class_name Slime extends Area2D + +signal slimeDamageSignal(body, slime) + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +func _on_body_entered(body: Node2D) -> void: + print("slime detects body") + if body is Player: + slimeDamageSignal.emit(body, self) diff --git a/scripts/slime.gd.uid b/scripts/slime.gd.uid new file mode 100644 index 0000000..52c4c84 --- /dev/null +++ b/scripts/slime.gd.uid @@ -0,0 +1 @@ +uid://0mkt8m2sv83a