From 1fe75a871eeaee9a3bd4aa7bf22e9a29c6774cee Mon Sep 17 00:00:00 2001 From: vaporvee Date: Tue, 21 Oct 2025 01:30:08 +0200 Subject: [PATCH] first house --- aseprite/houses.aseprite | Bin 0 -> 8563 bytes aseprite/nature.aseprite | Bin 0 -> 4106 bytes assets/textures/spritesheets/hood_player.png | Bin 1619 -> 1601 bytes assets/textures/spritesheets/houses.png | Bin 0 -> 10936 bytes .../textures/spritesheets/houses.png.import | 40 ++++++++++++++++++ project.godot | 12 ++++++ scenes/houses/home.tscn | 27 ++++++++++++ scenes/interactable.tscn | 14 ++++++ .../interactables/interact_sceneswitch.tscn | 11 +++++ scenes/levels/hood.tscn | 31 +++++++++++--- scenes/player.tscn | 9 +++- scripts/interactable.gd | 6 +++ scripts/interactable.gd.uid | 1 + scripts/interactables/interact_sceneswitch.gd | 6 +++ .../interactables/interact_sceneswitch.gd.uid | 1 + scripts/player.gd | 23 +++++++++- 16 files changed, 173 insertions(+), 8 deletions(-) create mode 100644 aseprite/houses.aseprite create mode 100644 aseprite/nature.aseprite create mode 100644 assets/textures/spritesheets/houses.png create mode 100644 assets/textures/spritesheets/houses.png.import create mode 100644 scenes/houses/home.tscn create mode 100644 scenes/interactable.tscn create mode 100644 scenes/interactables/interact_sceneswitch.tscn create mode 100644 scripts/interactable.gd create mode 100644 scripts/interactable.gd.uid create mode 100644 scripts/interactables/interact_sceneswitch.gd create mode 100644 scripts/interactables/interact_sceneswitch.gd.uid diff --git a/aseprite/houses.aseprite b/aseprite/houses.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..425bc35bb10e84d4bcff523da240516db9e191b2 GIT binary patch literal 8563 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 literal 0 HcmV?d00001 diff --git a/aseprite/nature.aseprite b/aseprite/nature.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..a6a0fdd33837ac280789737837a5465cfa63975e GIT binary patch literal 4106 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 ONAZXM!L!)| literal 0 HcmV?d00001 diff --git a/assets/textures/spritesheets/hood_player.png b/assets/textures/spritesheets/hood_player.png index 18eaee2fba2ab03d084c48fb9fb801c013afff07..68c18d523b60fbd001579621037dcc772f3238a7 100644 GIT binary patch delta 1585 zcmV-12G04@48aVLBYy@6NklPpC~_6vxl+mwx#viD#e;{CSBC^^n3$F;RL0 z88E`+85&3i29kl4Vt^R~8JL(*W{BctDAMyMDFcxdGP$hFV&DDFId`wU_gZ`3b@sPj z_uO;OyX$lI+W*czXWccYD#}uGs-i3v?3it9HurG*_S1X+RDX%2jl=67(fG`_Z~gb< zbLS3xE>$p^ImrKD)`&J3U!cPAOaE2`*$@aYedS;!sV;ChJEjf-bnViyTC#2%9@PkAWaX;zR2MkBY7_LW@QVE_3L&Lxsb&uEu59g=^FIww z&D!_m?o=fqC=9R%O37i`tmF8lsUFoiWKTkYY}$Ff^?#TLHzrwYs|$k!2PX?@j4^9z zo8TC1-m&Fc5ZoNd;!++UV5YEmO_#y@KA**wW{z@eIa8^2jKlKzIl9I?J+x!KmN1L zxp?TpA%A&+8M{2lOEUJC&%FKMbX-iia->kK@`$p!Y}SgD(!^1w%b6-li^)wXT25@6 zL95G6l3vxd^>F%DwP9kr2n#ZpHf{MZkXwuif=1CW?&DmavQ@`1Ha1qxynIwi32cE) zn*-T=L>gnDz}rsPERgXP>w6L{2MYuRHo-P-SAWcEvuCqWL>~NqLU?_~r8=8ZUFk4; zA>|=@0!8jB)8$N69FwVvV=`3<^~;na=meT#M5GHwBL`ckA9tZ>=ZF&OX97v63mn0V zm;eBG=->~w5vZwIb4eSAcc>q#EyRtZ8|ey1P>Z>8cGs+ZDMBGMas+o}-@kkwcrP8& zt$&rn`#Pqsc9@cys%qtMZZY`9FqlE?;p;bV8;|AeM!Ld5>dI`dBaC!6(ghB$F~*Fd zs;end1FvQd@BY`0qB7wmZ&YdJ2m-h7?MvS|)Xd>MD>DO#K7D-md+$^)RiS`FLhEwl z2)d3zhb&mQr2m&vP)Q)lKnq8d2mU0Zw||=Sx7DUqEDlw7Frf>{p_0VlQ1gf^21}({ ziiyn;3a_+$LYJBOUq#Rfl z5WsZk(yPi>-d!2igr*QTX@OHTN!6?jT8kE`3|z`Vp_N39W3V7FI28tB$v7R99e*6_ z%Msj_;Xs>etg%lT2i%jV4)X zOr|Q1$y7m(DM3qo96>qCOu>V17=MBwof}Le2k9T0o^UrIP?CAUG;%~)lBr9SCLNce zje~WqEJdNzX%sn}2meyYgW~33UtKN^9h56axsJ(HXRCYXD{# z5GGcOJzebzhu7~e-@mY@`fuL+{ysYar=aQk z)dh|ygFgU3cpFAj0Yr*>BbqpZenl3a#6*ZxxxqAYc()jMMt5TGvU& z>;H?FRbSt~o^_nGq&Zy6!$-k)FiU>2LB--I)8$Mx@)2dZw3Ir9um!CyH%T&rD|T+M z5Efe@xzfB_Ok0jJDRJZm^HuCzY2-1cEl(MONaQEu$_?hL*tycY1}gui+*{H)$~ba^ j`6_mPx*4M{{nRCt{2oj+(KRUF5^CnBdH#~l_2 zS2%7EkCZY-0>)0zCLmi#id<#VtYr!jiz^nf5J9*UUb@@Dy&_E-1-pwF(8V$&ggJ9a zz#^Q;!8u$r7V)ibXJ>Zb-`{)l=6##&&d$#J3h zY5Y1}zdP|6|9_rMg0>Vohg4vA2mn))9M$C81`et2-AU5oyU*VR0KERj&6)eA>v!?+ zbY$f;wGAB7Ls?y+J}4v(<-nXAAK~Qq2&m|?Hd|?1IHUse@N{%(t^Z&Oh+1vnP-;z` zBrO1djjv1$lB$)4%<;S`%;L&6*807vZHN24+V7ZDCx1zc#g%OUaLU1#S;cXoULhMC z=}2~xv{+ulr{gWJE2U)x+f6ycz}z%*SS(n~Vs zgJ)-th4wQkQ4SX}RUbwsf4)_?R7e~_pOrOPK?cS}&oN!5*6MPds8@B%`epP3meTi0 zSQrCeW?3Zl(Mi&xlcdG@`FX)t48P6h`c#>vihqNNf}^gyDmD^`Dv-L*Z1a@MqHG*> z<<+r?O8S1x!fS6SeP&BlWl{~L^U8BkA5l?JQBhIz6s>-qa%lYnbsiDwiV2a!n$^#C zrG(C5#OenEyF=SJv==e6JjZCTiP2yaS)Px9>bkWpg~p+5^<$c4akDXuw1q>f#|*yt zaDQr>3oAs39NI(Kv!_oc-cwt;L*-BoOjYaPMRlqgDu-}j*nzV=M}KPxkN!BT-Ph(Y z(iRS>9#f7wgP|Tq+Q6YSl<_XAs+K}E@rKNyJpPtlR6HEzjjB*Nw7|=^O{wo3hRmUC z_2UghfB*I8e_Q1(Z6>8-t@DjT>pF%7$r0Dy3V1rwY<8E!~I?`97Z1aqjYc8 z>Hl8qR;Dz%a9vtECvz99n@n-0ykOLcxvgu4Rft>pG^&+2!JF zsOo9QrgJEtE`tjQb5ptYr`*{{uyEs=Qw~-a+1X=!vU93@9Oa>mwS+p08@29iB!8|E zj4GJP9{?6^Tyu?JOhE<4C+RklU;@J`f|*mPtr$#YbF3-l>ccq;ePSu z769P0Pro8rH{&_@i9h@OSKz{uLAQR#TvOCeGQRw>QL2-q#c((*hQlGLv#nevwXCp!^o0MRiZR%UrJ~kR@cg0R7#ba$f2D)j#_Quu)ez7mWmXW zC`T~M{-H@aFjRRa=P7g!DdSR>=Que&!u_3FbAec5HPff7ZQ)S*-Q}OZU4O$1FTD&@ zB;e#T-M#(s*H(XbIb;s$-(4pyUEPa-4^ ztzVI4Phv6%SGmDLmxP=1p!ePjaP=L1yJBvku@(ZalCVWs*C}W>pBa ztIS4jFjWrIxzd#G$JFKCqRz?XQ*JOHa-~HP=wE)iAJ&-6feQct002ovPDHLkV1oU$ B8Q1^- diff --git a/assets/textures/spritesheets/houses.png b/assets/textures/spritesheets/houses.png new file mode 100644 index 0000000000000000000000000000000000000000..4387a5e67db7f67586585425ecd18f783f0a84a5 GIT binary patch literal 10936 zcmZ9yWmr_-7dCw898$VLKtV;iouLGzr9`9@7`miu=uRn-7+ShZauB3t=x(ID8=m?7 z-}ibxJRi>4`aVz{LJs7v>_1+b=_R5_H`4E zVp17=6O%O7mj08IIC9&5g;y5xM;aBrEoDhwbN;R^xxZVJdmts`f8H{#vm>QH`zt6g zZzAv%d+!{FW}*9aQy;y`S}*%V6)!GN`=Ibv*lwMgZ+o3@MIF&{XDBh#8}F;5mCn%E zj-Yg9VgwPL#{6!ac9w%VP5BBH5#Ix~rAI*9svM@~o@*=PCu$xIpHZFsi zgG)*MocX~W#uNd6iPd(ZqZsjkuqejx|31#KSd=g!U3XoPYuGJ9*l8rggK8u+l4MlM z_=KKPy^TQc_a$zgVPnew6>T+s5BX^Rx&oJm!Y}&SL57fZ;rcJ#K{aNw0Lz*XA`6yb zldayZ_`vrhd>jC4_vw#oJXvXGIwcsk+P+4Iv1T+ME3mEOB}@HcCob%oSeS|5VE;9> zPS6`FKV@EU2ZRcp=5)+3tMhMRi>$W!zY=Z3gCUfW6a^(149M#%I~ zY{93@5gH8vwvwHjEUk==0@{27ARYVHC<9I<9RW8cyUYnG{>Iu)G1u7Aumf612*Hu* z!dcX7|A?WA!2hJRf%Kc}TP`AF`JZc;@#@sscffC~jrMOW*WE@&oz@#rDV-qyJ;8Tr zpyhES{6NI7(3ZxBEy64G38wmlUYG@x>S5e*G|S+l#NcUFG4sNp8e~>%-kZ=uhiA#i zCaAU)P;He=jlh^5;WS8%4I%H*cv3rbb7nQHJA8aWGR*%g#uoBgU7HQ5>t|!;i~f^a zsxQvl#@<$r`E{4TZVk6|(@NKz3<0(tix$+G5&PRz?-&L1Tq+#V_s*fOk}v24BUuk_ zNIDAoxyWe9mwpg6R01Yxd7D`VsNUVpP~*gnl%NMcd)|u-V}Oh^ChMv2i(xRVX+z&a zcQ>?aR}qu1*lz<9k;xPt2^5HEIGAn?V7+;mwk*HoToCdj57eEap3E4Lvpo~8h_^;_ zSlevKh4K+0azjrrEJPgXL7XvcWcYNjk)c-t=^_W7r4naYr(@JM#qr!|3Mp`~{wg5A zAd9u?4(p9r7EJf_G8GU}kH)T^>a7CBy#m98y3v5Fl`h9mpWcUjTf~%HaP`x-Cnm_; z&sv*eDl}x1=Y}-3NY2pWKt@6M5NfQ8QS779xxhT*-YkBZlH|<^Dw^HulWjxNTCA*g zKCr(gOXJ!e5%Vvyuswk1eNo2Fon5wdOOr;lbJU)5$=i=y>M*D;`tN^Z-Bea171w7N z-tVty)-p5Cd2as^`!Oedq_872q!8X3|7HK<0Q||9zg_i*b}j)27GcA4fln3N>d}dG zqzqbVsvDQTLHKAJf~HPZUoS5Lpm5ugye&U7AU85v=>Yn8<0+u(H8 zNNrP(4r_zsP4wyjrsb+M^TVyCzC1Tyr7u@|DN;3dDNbw5%mPqIxsj>oM%yg>l~Bc! z;sR0~TnYlO_h&CyRhQS}xeYzMoWH}%I7`y(Do9_-ZeP&iMH}Z_R6b5Czka+B^ol~N zcs-hWm$z-b*A!*kucot3ym6!BBpH$Oijq5GZNPc;9X=H@{9*EFSG-S<)r{C?LLcPp z6y3-T;b@U$-B@ZaqUlhdzT$rIiuYk_lXZ4cMTbhxr~ z{JNoH2BRzIw;s4$VeWE|YyPa&Qwc61T&T;9Hdnv!Zdez)g05Ewb2=&kBJ7n|Mlfrw zWy0iLJC|)v2KP;3>`_0@YyKH+E458ZbH)pCM48Mq-p*ryCT)QDnq8=|`;#p3r0l(dfcUDQ3u zQ;m^c->@>_=CH6}q($32CIWQS>d6G#rgf*7p#X@poCtGen==pW|CGx0yQ32or|KFM zQgYf|?n3$R_uuXO`7+YAmvQ%X&Jgu4@vA8g1;-^{m3`K0aJ2GIlTJJN?^g7F4NhS@ zcJAj4QRe1{&yyfuBJU{%|3B3@9q*VwuJkG&oZAUsFzI=DNPa$SE1!4^lipv)JO4T* zU-F_BHC|YTWAw7NP|#;EMDSmr^<(=Xh=y%rH#KJ4%wwG>ix^adiHuDikT8{^MF`+A zWdOTc`s695#fDr1Msayu)OPpM7_}~Er`I30>g8FxY|?zT8CaM9-T{@iJyMBS1iS^s z^tkK9SGVQW+s_CnSv{QtkHk;4q z4y38)4#=^RZI=29F$>%&kQg8|sU}x)F+U_0m=u@IYW5GydzX-C@hw-?*_X*`*(2Jb zFi&QVG0Log$uD#QS&nYQT7MtkeM%IbwaUuQoW`H?Xt)%qzVxUg4GX3+Wb1JRNNs!e z#AGktz&$Iclw*g5@8jyfxH7ysUFFc!6D}GTkk)<7eJ{#nuAJdbxBPmlSA!n49p=pvhqZXq z-aq$_pS8Y}uin^{siCPToAKM&FrW82?{VK=z@wJ*tSuuMW)3iR3fyTDllvvvTTRnc zVbSv9J*n0u27p*SoG;TFdQRDPWTkV7#4zy%6j_E#)R`RqJsvoBp*-aGwLy!HuNoFO>dH z^tThzx34JtGBYFzA&<|%RNkrd-K5D4znm@+hwl_Rpq#cZF!PS&?w^FSgT=^_Mbag0 z>H!=_SXr%e6?F);75z*}=a66Jrqw&;_R{3nuM-X9X29%KVmI&lC2nIFy^{ zOqyGqJ1g3MFsVS5?7R4xAjc)Wz`j{!xk;i{Ax?4QG6&X&w@qz>4M_0)ireP$J;>+? zk`fks4UG&6TLN|08g|t5%7Ic}SBhfWi$$`ngAOwj zw^6!m2AARbg$EON5#MJmfn!OC-BcqtER++rWf=?O?)pVz&knwyu|Ki$gv=L`xQYqH z7T`|^wNkfR!BCA}%WTS?1t0AF8APW2swsLTMcyHq2GvK&32_y6*P!{onMQeh?lBFA3j3oQ@Ax@lX) z2B)tIvA}rio4rO-!Ok!P#f{6)cdmz!vHu0aviiv>aZj?- z0A?pkzGvP%N;wV(VbA-&4-21+jJp9KyLv3FE{R#om3D+2Er^?pUU2od4*gQfO<$pN z$5TL+HCrC-#r^%nvyxXmzlOek5PM{%e5mar8dhY>B=~=$ zSvaJ+%xnMs7rR14N2hq5DqnDuGF&GZiEoMWR7V?+0v!9#m7BH( z(p1lPGSiR7%js029LrDXPYB3Z9{*hKcgUzk@gLwtf13O8@tF8pjr)A+9Cp}EL2jM& zz1?}*!Dg|Zz`xyxBDcpVpkK63WNyaNs<|=?c!}J1l6=6inzDcku~eg(ZV&%wM(_yQ z@>QEtRAVK@2ze0`tXHv^Y~*PIIZ5|GwpR33NPle!ZF~wP?U%t+dilcV!XuaAe!RB{ zsc;ES3)}ub!fzfD=gJ9{jIQ(Jk~Kv`;2c2LgDOPX=-t#C&Ol=Yi3^=39_cj`fO z$6v6;e96vm7lD?TP2*@%EkmpvXrqGYY1>snIb-_%p1=&HYR}=8I5~3y&T>J?q2rovTWDaq03N=mkhYtlxv?hMb{phnTVt+ zb&$6*=I)F48@9~=psQS3H~urVT`VpVr36#P#QRdlZ4K;^^x(#UwfP~@aaWkG23FdH z)2dH)-6)!{hIsSAe3Du_Woy*g;QbQy7m*;88Gkx<|61kfN9nhV9=}t(XN2U~Th$XM zWxO5wC-ONcS++FVTaEY5`?tfrHssiyCIKjXYi2n+q6yW24=Q~W#NgN{GJ@)e>-+^W zZ>Q9FH*Y&N+RMp%(6lT)(=0Zihj?q`B)6+hJ2a%2(#WskzBo&%4AY&T#T5aYz}T{VFSJMy@K@sM0LjC9u=)1YpOa30 zUg2u8#q+2L{MlF9TPZ8Hry>>xMNeAdv=Dwq> zn($Z6R5cpS3(M&2s>=P9r>^5m3@qcMoiG_tOZ0DSq$#eI(s(;orKJCARV@6d&O1!h$Qntp=qWYTz@P4DvS03q4)vHe; zi%I^eV;L)t^@Vb2LWxi>9&IQFP61SlG3Z@I)<%ugqD$PjKE@}jN_6TsQ{a!R%ct7G z(|nY8ZaTfhAl&?O4MOWbXm0&IH4{Y*l##3*h`aGna{Gc7{ZcyY|4fga4-a(x{RS8q=Gs6Q$$-pFI1&EZYB@ z$%S_yYqmBEy-fPDRQIRPGC~cGD-(P;>Zz-obJyWcciGlHCa3W(N9oVyUo1@P^EHue zioX}P4|%e==KM912b1wjCGr8&PRIX^O2}Fn;TvyLvP^tG_V;MuiMH`nOo}d zBW2(%syH2EKe#E4S)z8_h+V=De5=25CVngnXnltxsL+{af@&M3eDa80cwTHXP`=Bk zbl{uBy2-p$&W|!^O{f~T1a(TIA#cu|?*5aQILG}(31rTV5wYiT`{&bn`7{*1i6}Ahr6RP2>_m!%_e_cC>WmWZv#>iQNIdJ!v3XcU) z7+>z#C3|j}ye-_$&c8Iqo*+!)^7l8x*=g}kYS^CSeblGGpPGXVJc`5d0>vKZrnW_A z6@03CMq>M6{e{!$vqAuJw{wvkLpSK#NKye`n{F>-kcsx89ICawnN_;YZ7sA7x`zX- zB~i=%HpC(ncH-^rgRiwTc%7q^Q;)gdXJ~cJnKOBuqkFb-5PAbK{C(#`fXQ?w8A0^X*by3+B$gosF(j8EV6``Ju>F!RiIJ zL?Md8>+(d0sE6S1eVsB&wzk+z+m5=U>KaDVCofvT<>>Fw5kn8P@}UqHj@V2qdBv(r zaIerXL;~#0C7phg#BL~t@w|ucTLzjU_3&z+$xUr5m4v3Et?{l$>RXl?ED1fdX`1xR z`##B5{K|E`inv(Jba!=>pL3W@;{zInTd8GWC%7~Cei3tHp_0F4l#&cuRVBeMrlABe zbt_fzW}~iI@pjoe*BU;=6`H~pVLE6-1at?`y z-bWD5D$9Gg+_)v-ci>~1oD9`4Z0#Jpl`^T?&ZG$FSVbH4*F?rHM5xo^)4-~owoMJi z)nX!`@^y?A_L=euh3KT6DX*V9dd>3M>bePsVB(YZ4#;fI5Xs=8dw8H~s!v4WfTOAb z_n{vCdz}p*ahFsNy7)kNxIcpdG*TgysG@k2c(|%Ozs@s{J@`yK{JMFTwks2*#R^E| zo+E6-;oDCMiQi&zJ$oU98Q>Bbfo{x2Q=r;Ez2GHDc`|?C{d6H6&M&{O>A%FqVCU@% zLmIA~CJ9olaPPxE_Sfu-_6=0!o@>X%6%yGJJoE7X(7kAHNCK;(A@e>o5FS(8|ZI$TbUy_uatvE5?bPtwMuK}hPoXRTBFa;gJ;WLIa?fLcwrQJJ0P!b>Dry2e-H71ky z+4J(+eccZmi9X3M{QEa3o1vGCA^{U3pHt7n8T|f59EthC_Qcrs=b~T1_v`%>skCR- zxKHj#NZ$U`W?9@s`Ll6($y366;sNb5c*NCjXitr^V#MP?fRf(2vjWzxX#EMt{Gn_+ zb5YnhMc^lEFFCb5GeKn9N?@Ur@|%k}Ui zcQ5_OZL!0znlCT>1_iD99#^9DgY8o0ay{uI#y;gXQ6-FWG*U)*v4G_AnnAHx7y#gae{LqZe*EkePZ*;==g`+GxaO6?>moww$gUK63E^xPyi zA)nVyIKA8$E%^?N7{o_MIm#}__`xMTr#1j(DF~ty&_Ke+`iB+cgKbPKnY9@u<)TZxaRM%z) z1~I{+l-NiC#BcR-cAiidj|kS*;w)RBvI?EUC~V>Wd}liT1HDpXb?&jqgY#9T6z5@_ ztpH^RF#PKcYu=bUdsSdZ%(vgHL4i{9Dc10R7dqPxElgJY2Qvy4gtb%_FEvw2v0Lsj zN}(1ke((#-s48-l=z!NqEtPL`gm`(Zs|{6*-rKY{CIPiz(jaaCxvz**3uN7ME|CiD zJz)*}FmaWXyhfcb5vV)S>!LN(O%kI;)bow(HX%lvwUu>vk;#do>?zj;q_c+!;|G7O zUHWe#F>Z8FHeKS|Q-l1XLDl})!+Zt^L5c-IK2`T~C8eKL`+1*4sQ+zT4`))X9)?Q$ z5+e_hhEsg!(?XU=l3g^eVtiwY?iCcYHc%hRVj+BSLt1-#>yBCbr67mbg)QhK>P~@V z6G1ADN2A!rZ}bEmT>%?irqPDwv6qFpSw<%kh~E z9r3a6M|HK%Fmp&d*n?U#Qro%0;k(Hi&!PDh7OHRFzXjy1u^tp}vgbw1Ai*IftCKeu0yXi$ZK#n%7=MIA{ok#>I)?XQnY*+0}uWY;-N zk@Ga;Mi;om5YaO;y_P<+;r&&82n<&&gqi8=A}?qZMOm7 zM_e%eBhyIYQBG|(GyoVLG-}^v)}fj{+@=_jCE3Txs*$R@Ay4O#b#}r%J23zgWfwMK z@|%OBU3fS!{T}YR=qgr5c0?iHuJNKNBjl68q5q+AZXwmFfASzpG7HSP(m&DJQBtNC zpLJH-eTeUyWLKdm1(BlI3)H@GY;is~C9pV?<@|!zDX3P$S~>X%Wp+y?qKXRV$1U2l zjrzpHv^UEMW3`_9weC=RBRT-!oBwwg;DRRVZfjojdkkjAYglKd2<^sD$Jq~N+KVpU zFBfA4PX9!o+fTut;S;6;i5>{dZHQha$@xAfD8%3lwz2B<^Q_0pr#+|`Wk-*szMpn} zC*X`azGZZlPz4I@!Fa$GRdiG27fHyvL)6Qct_MXUXEk4Iq$qCJ)(QGn(JH#2%kU~9 zxruPe2$0vRyXo~;cjp6oO}gDF4xOJU2#EJqQuN#Fv2?+Xl<{ffYs3OU=&uWkKYe(f zK&>fA7+(eBmAqB*3axA@WdOd{d$n7#hihLl2Z(fcg`&-Uq_0z%h1Yw5x$I(C#uFna z@2#+p7D8iK(g&e#IVoeqGsK7i?1}Bzb5wu)Vny|*a<}LCO%v5&k25By0LO1uE<6fx zt{|BP+s$ZfOmy6J|NSit|+2L@=VS%%AJOgi;BbB*Wl=ESM4Ss-d zkA3$_4D*H*BTg3EkM-biXMAB-;P(Egji=d0UHiw-i#s=6pP?)7zVBAXJbtYRFxs?7 zlDFH`QW-|FF`aMSfRC>Xr2o~6mw@6%m?-JiI!*h#(TC4DR~K`7r0gK7Y4*w z#Jp5_okAz>=Sz&f=nG5`YSQehd&$H14?N9o31wG&bw9M%pvf9*nwm{5B!YnN`{C-E ztBJeA|3n-_kXmYW_j2(PS`MsCT!!3YIomos(4Lob#LIF+>LQEzb=)r!1Oj}a7?sR5 z7bu#uXRvc&x@`7U724C7Z%OeI%NOm!lA2cFZ#N&qAw?)-JhM|u4secGp@nrd;?|ew z+-8BJ%tDCnvK~3Pphnkk^P6QD+H`%bRixOV|<4_*x(h|ncsjl^fzcqymclMsfINR9+L1dCccvFgXN zi^+CVBDoaEP`NpxAOT0J&sfT;VK&;nRl`&_TnMZtI=?JJ#eCJ&45KsV`9?UL_s#Cm z@IX87Kx4`bZcu$w)rd=hg_M_kH`EnbEu|@h@YNt?;j;zjoq5qc4b(EMgEqb?@oFqa z9{a3+r(6goe#OXR6PTHQ!-rfV_$Xq>gf+xLJ8F)h?vhewFahplj?76%eM`D2{2+GUc;9CdoZ zK?Iqa(9WLr)wTs#pEy+M`cb0G@9V{Gj$=zId1R+tvX@ya{9I>X{vPbHi7qNhzLm=` zcbri%sdP)u^3oBgFW=cFh56p;*WY)~z9ZpMk_9X|lFoT#?_PYi4flScm$tKn_2`C_ zUHg}uZ(iAo<)O!0Q!@Nu_3xQ%MA;$GLAZbZ3*tKSll9CWWL$3V_AzMKS0wjg;H+5e z7N^fU!}vQahn6&kcOpVaP9UCu?W3X=1a7~^L04O0nIIqC)iya^z)sOR-h|1U&Cw)W3<&zd*D3L87>^p9Zy6AH3;!BFQv}qiGc_G;^^!^4$#P_hcNk zS$;#qM3ON3tkjd9VbSP-x3ji@#Vi^t zo$;P+WK>WUZ{%V1T@DE7%H`D*Wzc$~zGN+={>8$>N_*%-v`}xOh1BOB=oE)fTePZB z;S^VJ!aZ8kBK5*oe_Z!XbdOBXPCn>p0p=z1JxmU)TZI;9n%5=xr}CxR{cqB>pF0&! z+Dt&qi#s{hb&T`YoC(={;u~+e1sipPFs-<{rMAA22S3~lQ1No~@p}tNB=-3zwz|qw zFGJptWvrS4f|qJ#{iJ0aT<0@3!+II=l}2BADv8{MQnzX?3}LD@QXRNiTc)^rl-#x$ z?l7Uk5RgOlOS3ydZtlAA39+Y2rWj{zjil;AbhSCI!n1B3%{YD`TU~EBJrqzV2_&N? z(VQJJiRwGi!S)GnzAn(=r-4Kj322R;B$!UC2b)^Q{LS0ovH^3Ah-xml8z~O;vt_eD zUso80PSE=_qzmlW0GsotoL4;P9Yi&R*~_~k^xQOzrUs5(DA{>-{9GXuf8}~6%WxJr z!*jyiYo)p;!W^E-T5Bkik$YOTYb!Nocvrth;1}xZmoS#Ixz2u}cISBKOrXL^_hdX3 z^6v}>-DyWg!zJ7@Py)^CQ@>~J^6i`?s&|Lz3L#?c4~=f|`9OS{K1J8D$uEF~Irr&5I&m~E`rrDA@A zvY~1-5-^hb4N!_;f?=@ z`2XI|WZA{PybZr)aj$u@MgE$kXNS0K(|vY@r>tm<=b>1_B{6%eRDH~H+XNC6tzCaQpeIxq8?~(T7p7bQ)z?M$q$u33%-pOXn5lU6E!D@+ zFwHrZKZF0@Q#t`_-{*_+u2Qvf2{x0DHkue0YUwNeL~(!6!j_ioVo#yD;f~CaP#-8X z@TS+ZGLzPzcNIV_aMc$*6f9%;^Ghd;{EyUT4LnQ=Njj3?d@Aa6f@y$HV z)#iBq-1gF&N+WI!cq%HJsz^!p=1tt1NyW2xkk~FVxhn(^u%Crd71c4|A+&{;3!7nt z^2IcH9SqF+(6XXx&CgP6C-J{*HWaJ;i@mSRfWtPoro4%DE=;KLY%P~~ZQrC~BzK^sy^G_IN2{9sB3V)XSIe5e^P9TQK{uFdddwpzJsf6UtiJwh6=w s2VLl#oo8Asid1_T)uTx1C&x=akwHZ{CY>p$tEhmYoT_ZOv~j@y0rXBXHUIzs literal 0 HcmV?d00001 diff --git a/assets/textures/spritesheets/houses.png.import b/assets/textures/spritesheets/houses.png.import new file mode 100644 index 0000000..a86098a --- /dev/null +++ b/assets/textures/spritesheets/houses.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://db4dctk13rgbm" +path="res://.godot/imported/houses.png-beb9348ecf7ad3cb2e053ab2dbfaa8e1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/spritesheets/houses.png" +dest_files=["res://.godot/imported/houses.png-beb9348ecf7ad3cb2e053ab2dbfaa8e1.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/project.godot b/project.godot index 6ae5e4d..8218eea 100644 --- a/project.godot +++ b/project.godot @@ -100,6 +100,18 @@ escape={ , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null) ] } +interact={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(495, 26),"global_position":Vector2(514, 122),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":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":89,"key_label":0,"unicode":122,"location":0,"echo":false,"script":null) +] +} + +[layer_names] + +2d_physics/layer_2="Interactable" [physics] diff --git a/scenes/houses/home.tscn b/scenes/houses/home.tscn new file mode 100644 index 0000000..c1c8814 --- /dev/null +++ b/scenes/houses/home.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=6 format=3 uid="uid://cokphmh2g8wvs"] + +[ext_resource type="Texture2D" uid="uid://db4dctk13rgbm" path="res://assets/textures/spritesheets/houses.png" id="1_fltv6"] +[ext_resource type="PackedScene" uid="uid://h77hilgbces" path="res://scenes/interactables/interact_sceneswitch.tscn" id="2_0afuu"] +[ext_resource type="PackedScene" uid="uid://ccfdsdgaon63m" path="res://scenes/levels/home.tscn" id="3_0afuu"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_0db70"] +atlas = ExtResource("1_fltv6") +region = Rect2(1, 4, 94, 89) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_0afuu"] +size = Vector2(90, 46) + +[node name="Home" type="StaticBody2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_0db70") + +[node name="InteractSceneswitch" parent="." instance=ExtResource("2_0afuu")] +position = Vector2(0, 25) +scene = ExtResource("3_0afuu") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +y_sort_enabled = true +position = Vector2(0, 18) +shape = SubResource("RectangleShape2D_0afuu") +debug_color = Color(0.8768643, 0.34231007, 0.046793222, 0.41960785) diff --git a/scenes/interactable.tscn b/scenes/interactable.tscn new file mode 100644 index 0000000..ac16966 --- /dev/null +++ b/scenes/interactable.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=3 uid="uid://n24dhbpflcec"] + +[ext_resource type="Script" uid="uid://ccthj5mtii0bw" path="res://scripts/interactable.gd" id="1_56v82"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ij5l6"] +size = Vector2(32, 32) + +[node name="Interactable" type="Area2D"] +collision_layer = 2 +collision_mask = 0 +script = ExtResource("1_56v82") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("RectangleShape2D_ij5l6") diff --git a/scenes/interactables/interact_sceneswitch.tscn b/scenes/interactables/interact_sceneswitch.tscn new file mode 100644 index 0000000..e496d87 --- /dev/null +++ b/scenes/interactables/interact_sceneswitch.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=3 format=3 uid="uid://h77hilgbces"] + +[ext_resource type="Script" uid="uid://c4ejbchoh7yrh" path="res://scripts/interactables/interact_sceneswitch.gd" id="1_f3ssn"] +[ext_resource type="PackedScene" uid="uid://n24dhbpflcec" path="res://scenes/interactable.tscn" id="2_43o6g"] + +[node name="InteractSceneswitch" type="Node2D"] +script = ExtResource("1_f3ssn") + +[node name="Interactable" parent="." instance=ExtResource("2_43o6g")] + +[connection signal="interacted" from="Interactable" to="." method="_on_interactable_interacted"] diff --git a/scenes/levels/hood.tscn b/scenes/levels/hood.tscn index 89a3745..94ed45a 100644 --- a/scenes/levels/hood.tscn +++ b/scenes/levels/hood.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=5 format=4 uid="uid://clnb1eshis30m"] +[gd_scene load_steps=8 format=4 uid="uid://clnb1eshis30m"] [ext_resource type="Texture2D" uid="uid://dve2b2glwitsw" path="res://assets/textures/tilemaps/grass_tilemap.png" id="1_74em3"] [ext_resource type="PackedScene" uid="uid://dfbomt0l6b1o4" path="res://scenes/player.tscn" id="1_ge1l5"] +[ext_resource type="PackedScene" uid="uid://cokphmh2g8wvs" path="res://scenes/houses/home.tscn" id="3_5rqdi"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_1r5ec"] texture = ExtResource("1_74em3") @@ -192,13 +193,33 @@ terrain_set_0/terrain_1/name = "Dirt" terrain_set_0/terrain_1/color = Color(0.5, 0.34375, 0.25, 1) sources/2 = SubResource("TileSetAtlasSource_1r5ec") -[node name="Hood" type="Node2D"] +[sub_resource type="TileSetScenesCollectionSource" id="TileSetScenesCollectionSource_1r5ec"] +resource_name = "Houses" +scenes/1/scene = ExtResource("3_5rqdi") -[node name="TileMapLayer" type="TileMapLayer" parent="."] +[sub_resource type="TileSet" id="TileSet_5rqdi"] +tile_size = Vector2i(32, 32) +sources/0 = SubResource("TileSetScenesCollectionSource_1r5ec") + +[node name="Hood" type="Node2D"] +z_as_relative = false +y_sort_enabled = true + +[node name="Ground" type="TileMapLayer" parent="."] +z_index = -1 tile_map_data = PackedByteArray("AAAQAAkAAgAAAAMAAAAQAAgAAgAAAAMAAAAQAAcAAgAAAAMAAAAQAAYAAgAAAAMAAAAQAAUAAgAAAAMAAAAQAAQAAgAAAAMAAAAQAAMAAgAAAAMAAAAQAAIAAgAAAAMAAAAQAAEAAgAAAAMAAAAQAAAAAgAAAAMAAAAQAP//AgAAAAMAAAAQAP7/AgAAAAMAAAAPAAkAAgAAAAMAAAAPAAgAAgAAAAMAAAAPAAcAAgAAAAMAAAAPAAYAAgADAAMAAAAPAAUAAgADAAIAAAAPAAQAAgAAAAAAAAAPAAMAAgAAAAMAAAAPAAIAAgAAAAMAAAAPAAEAAgAAAAMAAAAPAAAAAgAAAAMAAAAPAP//AgAAAAMAAAAPAP7/AgAAAAMAAAAOAAkAAgAAAAMAAAAOAAgAAgAAAAMAAAAOAAcAAgAAAAMAAAAOAAYAAgABAAIAAAAOAAUAAgACAAEAAAAOAAQAAgADAAAAAAAOAAMAAgAAAAMAAAAOAAIAAgAAAAMAAAAOAAEAAgAAAAMAAAAOAAAAAgAAAAMAAAAOAP//AgAAAAMAAAAOAP7/AgAAAAMAAAANAAkAAgAAAAMAAAANAAgAAgAAAAMAAAANAAcAAgAAAAMAAAANAAYAAgABAAIAAAANAAUAAgACAAEAAAANAAQAAgADAAAAAAANAAMAAgAAAAMAAAANAAIAAgAAAAMAAAANAAEAAgAAAAMAAAANAAAAAgAAAAMAAAANAP//AgAAAAMAAAANAP7/AgAAAAMAAAAMAAkAAgAAAAMAAAAMAAgAAgAAAAMAAAAMAAcAAgAAAAMAAAAMAAYAAgABAAIAAAAMAAUAAgACAAEAAAAMAAQAAgADAAAAAAAMAAMAAgAAAAMAAAAMAAIAAgAAAAMAAAAMAAEAAgAAAAMAAAAMAAAAAgAAAAMAAAAMAP//AgAAAAMAAAAMAP7/AgAAAAMAAAALAAkAAgAAAAMAAAALAAgAAgAAAAMAAAALAAcAAgAAAAMAAAALAAYAAgABAAIAAAALAAUAAgACAAEAAAALAAQAAgADAAAAAAALAAMAAgAAAAMAAAALAAIAAgAAAAMAAAALAAEAAgAAAAMAAAALAAAAAgAAAAMAAAALAP//AgAAAAMAAAALAP7/AgAAAAMAAAAKAAkAAgAAAAMAAAAKAAgAAgAAAAMAAAAKAAcAAgAAAAMAAAAKAAYAAgABAAIAAAAKAAUAAgACAAEAAAAKAAQAAgACAAAAAAAKAAMAAgADAAIAAAAKAAIAAgAAAAAAAAAKAAEAAgAAAAMAAAAKAAAAAgAAAAMAAAAKAP//AgAAAAMAAAAKAP7/AgAAAAMAAAAJAAkAAgAAAAMAAAAJAAgAAgAAAAMAAAAJAAcAAgAAAAMAAAAJAAYAAgABAAIAAAAJAAUAAgACAAEAAAAJAAQAAgACAAEAAAAJAAMAAgACAAEAAAAJAAIAAgADAAAAAAAJAAEAAgAAAAMAAAAJAAAAAgAAAAMAAAAJAP//AgAAAAMAAAAJAP7/AgAAAAMAAAAIAAkAAgAAAAMAAAAIAAgAAgAAAAMAAAAIAAcAAgAAAAMAAAAIAAYAAgABAAIAAAAIAAUAAgACAAEAAAAIAAQAAgABAAEAAAAIAAMAAgABAAAAAAAIAAIAAgABAAMAAAAIAAEAAgAAAAMAAAAIAAAAAgAAAAMAAAAIAP//AgAAAAMAAAAIAP7/AgAAAAMAAAAHAAkAAgAAAAMAAAAHAAgAAgAAAAMAAAAHAAcAAgAAAAMAAAAHAAYAAgABAAIAAAAHAAUAAgACAAEAAAAHAAQAAgADAAAAAAAHAAMAAgAAAAMAAAAHAAIAAgAAAAMAAAAHAAEAAgAAAAMAAAAHAAAAAgAAAAMAAAAHAP//AgAAAAMAAAAHAP7/AgAAAAMAAAAGAAkAAgAAAAMAAAAGAAgAAgAAAAMAAAAGAAcAAgAAAAMAAAAGAAYAAgABAAIAAAAGAAUAAgACAAEAAAAGAAQAAgADAAAAAAAGAAMAAgAAAAMAAAAGAAIAAgAAAAMAAAAGAAEAAgAAAAMAAAAGAAAAAgAAAAMAAAAGAP//AgAAAAMAAAAGAP7/AgAAAAMAAAAFAAkAAgAAAAMAAAAFAAgAAgAAAAMAAAAFAAcAAgAAAAMAAAAFAAYAAgABAAIAAAAFAAUAAgACAAEAAAAFAAQAAgADAAAAAAAFAAMAAgAAAAMAAAAFAAIAAgAAAAMAAAAFAAEAAgAAAAMAAAAFAAAAAgAAAAMAAAAFAP//AgAAAAMAAAAFAP7/AgAAAAMAAAAEAAkAAgAAAAMAAAAEAAgAAgAAAAMAAAAEAAcAAgAAAAMAAAAEAAYAAgABAAIAAAAEAAUAAgACAAEAAAAEAAQAAgACAAAAAAAEAAMAAgADAAIAAAAEAAIAAgADAAIAAAAEAAEAAgAAAAAAAAAEAAAAAgAAAAMAAAAEAP//AgAAAAMAAAAEAP7/AgAAAAMAAAADAAkAAgAAAAMAAAADAAgAAgAAAAMAAAADAAcAAgAAAAMAAAADAAYAAgABAAIAAAADAAUAAgACAAEAAAADAAQAAgACAAEAAAADAAMAAgACAAEAAAADAAIAAgACAAEAAAADAAEAAgADAAAAAAADAAAAAgAAAAMAAAADAP//AgAAAAMAAAADAP7/AgAAAAMAAAACAAkAAgAAAAMAAAACAAgAAgAAAAMAAAACAAcAAgAAAAMAAAACAAYAAgAAAAIAAAACAAUAAgABAAAAAAACAAQAAgACAAIAAAACAAMAAgACAAEAAAACAAIAAgABAAEAAAACAAEAAgABAAMAAAACAAAAAgAAAAMAAAACAP//AgAAAAMAAAACAP7/AgAAAAMAAAABAAkAAgAAAAMAAAABAAgAAgAAAAMAAAABAAcAAgAAAAMAAAABAAYAAgAAAAMAAAABAAUAAgAAAAMAAAABAAQAAgABAAIAAAABAAMAAgACAAEAAAABAAIAAgADAAAAAAABAAEAAgAAAAMAAAABAAAAAgAAAAMAAAABAP//AgAAAAMAAAABAP7/AgAAAAMAAAAAAAkAAgAAAAMAAAAAAAgAAgAAAAMAAAAAAAcAAgAAAAMAAAAAAAYAAgAAAAMAAAAAAAUAAgAAAAMAAAAAAAQAAgABAAIAAAAAAAMAAgACAAEAAAAAAAIAAgADAAAAAAAAAAEAAgAAAAMAAAAAAAAAAgAAAAMAAAAAAP//AgAAAAMAAAAAAP7/AgAAAAMAAAD//wkAAgAAAAMAAAD//wgAAgAAAAMAAAD//wcAAgAAAAMAAAD//wYAAgAAAAMAAAD//wUAAgAAAAMAAAD//wQAAgABAAIAAAD//wMAAgACAAEAAAD//wIAAgADAAAAAAD//wEAAgAAAAMAAAD//wAAAgAAAAMAAAD/////AgAAAAMAAAD///7/AgAAAAMAAAD+/wkAAgAAAAMAAAD+/wgAAgAAAAMAAAD+/wcAAgAAAAMAAAD+/wYAAgAAAAMAAAD+/wUAAgAAAAMAAAD+/wQAAgAAAAIAAAD+/wMAAgABAAAAAAD+/wIAAgABAAMAAAD+/wEAAgAAAAMAAAD+/wAAAgAAAAMAAAD+////AgAAAAMAAAD+//7/AgAAAAMAAAA=") tile_set = SubResource("TileSet_ge1l5") +rendering_quadrant_size = 32 +physics_quadrant_size = 32 metadata/_edit_lock_ = true +[node name="Objects" type="TileMapLayer" parent="."] +y_sort_enabled = true +tile_map_data = PackedByteArray("AAADAAAAAAAAAAAAAQA=") +tile_set = SubResource("TileSet_5rqdi") +rendering_quadrant_size = 32 +physics_quadrant_size = 32 + [node name="Player" parent="." node_paths=PackedStringArray("tilemap") instance=ExtResource("1_ge1l5")] -position = Vector2(110, 50) -tilemap = NodePath("../TileMapLayer") +position = Vector2(110, 38) +tilemap = NodePath("../Ground") diff --git a/scenes/player.tscn b/scenes/player.tscn index d66141a..68c1464 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -102,7 +102,7 @@ motion_mode = 1 script = ExtResource("1_3vyb7") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] -position = Vector2(-1, -1) +y_sort_enabled = true sprite_frames = SubResource("SpriteFrames_qhqgy") animation = &"down" @@ -115,3 +115,10 @@ shape = SubResource("CapsuleShape2D_3vyb7") process_callback = 0 drag_horizontal_enabled = true drag_vertical_enabled = true + +[node name="RayCast2D" type="RayCast2D" parent="."] +target_position = Vector2(0, 32) +collision_mask = 2 +hit_from_inside = true +collide_with_areas = true +collide_with_bodies = false diff --git a/scripts/interactable.gd b/scripts/interactable.gd new file mode 100644 index 0000000..41cb896 --- /dev/null +++ b/scripts/interactable.gd @@ -0,0 +1,6 @@ +class_name Interactable +extends Area2D + +signal interacted + +func interact() -> void: interacted.emit() diff --git a/scripts/interactable.gd.uid b/scripts/interactable.gd.uid new file mode 100644 index 0000000..0de4499 --- /dev/null +++ b/scripts/interactable.gd.uid @@ -0,0 +1 @@ +uid://ccthj5mtii0bw diff --git a/scripts/interactables/interact_sceneswitch.gd b/scripts/interactables/interact_sceneswitch.gd new file mode 100644 index 0000000..02b7769 --- /dev/null +++ b/scripts/interactables/interact_sceneswitch.gd @@ -0,0 +1,6 @@ +extends Node2D + +@export var scene: PackedScene + +func _on_interactable_interacted() -> void: + get_tree().change_scene_to_packed(scene) diff --git a/scripts/interactables/interact_sceneswitch.gd.uid b/scripts/interactables/interact_sceneswitch.gd.uid new file mode 100644 index 0000000..a39665d --- /dev/null +++ b/scripts/interactables/interact_sceneswitch.gd.uid @@ -0,0 +1 @@ +uid://c4ejbchoh7yrh diff --git a/scripts/player.gd b/scripts/player.gd index ce5785e..87ce8d4 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -5,6 +5,10 @@ const SPEED: int = 800 @onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D @onready var cam: Camera2D = $Camera2D +@onready var raycast: RayCast2D = $RayCast2D +const RAYCAST_RAGE: int = 32 + + @export var tilemap: TileMapLayer var tilesize: int = 32 var position_limit_rect: Rect2 @@ -29,10 +33,25 @@ func _ready() -> void: ) ) +func _process(_delta: float) -> void: + if Input.is_action_just_pressed("interact") && raycast.is_colliding() && raycast.get_collider() is Interactable: + var interactable: Interactable = raycast.get_collider() + interactable.interact() + func _physics_process(delta: float) -> void: if EventManager.player_free: - velocity = Input.get_vector("move_left","move_right","move_up","move_down").normalized() * delta * SPEED * 3 - + var input := Input.get_vector("move_left", "move_right", "move_up", "move_down").normalized() + + var raycast_input := Vector2.ZERO + if abs(input.x) > abs(input.y): + raycast_input.x = sign(input.x) + elif abs(input.y) > 0: + raycast_input.y = sign(input.y) + if raycast_input != Vector2.ZERO: + raycast.target_position = raycast_input * RAYCAST_RAGE + + velocity = input * delta * SPEED * 3 + move_and_slide() position = position.clamp(position_limit_rect.position, position_limit_rect.end)