From 545dc965458aa9047129e1e2f816064e9ff44af9 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Thu, 2 Feb 2023 15:37:39 +0100 Subject: [PATCH] =?UTF-8?q?-=20Reposicionament=20dels=20actors=20-=20Ja=20?= =?UTF-8?q?se=20comprova=20colisi=C3=B3=20amb=20altres=20actors=20i=20el?= =?UTF-8?q?=20mapa=20-=20Ja=20no=20fa=20un=20pas=20de=20mes=20al=20comen?= =?UTF-8?q?=C3=A7ar=20una=20escena=20-=20Reposicionats=20alguns=20tiles=20?= =?UTF-8?q?del=20piso?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/actors.lua | 59 ++++++++++++++++++++++++++++++++---------------- data/game.lua | 3 +++ data/mapa.lua | 4 ++++ data/test.map | 8 +++---- data/tiles.gif | Bin 1570 -> 1578 bytes 5 files changed, 51 insertions(+), 23 deletions(-) diff --git a/data/actors.lua b/data/actors.lua index c263b32..02c8c45 100644 --- a/data/actors.lua +++ b/data/actors.lua @@ -34,17 +34,32 @@ actors={ for i,v in ipairs(actors.list) do local frame=((v.dx+v.dy)%2)*16 if v.o=='u' then - sspr(v.gfx.x+frame,v.gfx.y+16,16,16,v.x*8-4+v.dx*2,v.y*8-12+v.dy*2,16,16,v.dy>1) + sspr(v.gfx.x+frame,v.gfx.y+16,16,16,v.x*8+v.dx*2,v.y*8-12+v.dy*2,16,16,v.dy>1) elseif v.o=='d' then - sspr(v.gfx.x+frame,v.gfx.y,16,16,v.x*8-4+v.dx*2,v.y*8-12+v.dy*2,16,16,-v.dy>2) + sspr(v.gfx.x+frame,v.gfx.y,16,16,v.x*8+v.dx*2,v.y*8-12+v.dy*2,16,16,-v.dy>2) elseif v.o=='l' then - sspr(v.gfx.x+frame,v.gfx.y+32,16,16,v.x*8-4+v.dx*2,v.y*8-12+v.dy*2,16,16) + sspr(v.gfx.x+frame,v.gfx.y+32,16,16,v.x*8+v.dx*2,v.y*8-12+v.dy*2,16,16) elseif v.o=='r' then - sspr(v.gfx.x+frame,v.gfx.y+32,16,16,v.x*8-4+v.dx*2,v.y*8-12+v.dy*2,16,16,true) + sspr(v.gfx.x+frame,v.gfx.y+32,16,16,v.x*8+v.dx*2,v.y*8-12+v.dy*2,16,16,true) end end end, + check_collision=function(x,y,o) + for i,actor in ipairs(actors.list) do + if o=='u' then + if actor.y==y-1 and (actor.x==x-1 or actor.x==x or actor.x==x+1) then return true end + elseif o=='d' then + if actor.y==y+1 and (actor.x==x-1 or actor.x==x or actor.x==x+1) then return true end + elseif o=='l' then + if actor.y==y and actor.x==x-2 then return true end + elseif o=='r' then + if actor.y==y and actor.x==x+2 then return true end + end + end + return false + end, + update=function() if actors.updating then return end actors.updating=true @@ -61,7 +76,9 @@ actors={ v.keys=nil if v.name == actors.main.name then local switch = switches.search(v.x,v.y) - if switch then switch.action() end + if switch then + if switch.action() then v.path=nil end + end end end if v.path and v.path.pos ~= #v.path.route then @@ -69,26 +86,30 @@ actors={ local step=string.sub(v.path.route,v.path.pos,v.path.pos) if step=='u' then v.o='u' - --check collision! - v.y=v.y-1 - v.dy=4 - needs_sorting=true + if not actors.check_collision(v.x,v.y,v.o) and not mapa.check_collision(v.x,v.y-1) then + v.y=v.y-1 + v.dy=4 + needs_sorting=true + end elseif step=='d' then v.o='d' - --check collision! - v.y=v.y+1 - v.dy=-4 - needs_sorting=true + if not actors.check_collision(v.x,v.y,v.o) and not mapa.check_collision(v.x,v.y+1) then + v.y=v.y+1 + v.dy=-4 + needs_sorting=true + end elseif step=='l' then v.o='l' - --check collision! - v.x=v.x-1 - v.dx=4 + if not actors.check_collision(v.x,v.y,v.o) and not mapa.check_collision(v.x-1,v.y) then + v.x=v.x-1 + v.dx=4 + end elseif step=='r' then v.o='r' - --check collision! - v.x=v.x+1 - v.dx=-4 + if not actors.check_collision(v.x,v.y,v.o) and not mapa.check_collision(v.x+1,v.y) then + v.x=v.x+1 + v.dx=-4 + end elseif step=='q' then v.o='u' elseif step=='a' then diff --git a/data/game.lua b/data/game.lua index a381699..a6737ff 100644 --- a/data/game.lua +++ b/data/game.lua @@ -39,6 +39,9 @@ game={ function() wait.start(1) end, function() balloon.show("IMBÈSIL...",2,"jailer",true,{x=5,w=7,h=1}) end }) + return true + else + return false end end }) diff --git a/data/mapa.lua b/data/mapa.lua index e13f84a..1082106 100644 --- a/data/mapa.lua +++ b/data/mapa.lua @@ -52,5 +52,9 @@ mapa={ end io.close(file) end + end, + + check_collision=function(x,y) + return mget(x,y) > 16 end } \ No newline at end of file diff --git a/data/test.map b/data/test.map index 4f419c9..10d4995 100644 --- a/data/test.map +++ b/data/test.map @@ -4,13 +4,13 @@ 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +28,29,28,29,28,29,28,29,28,29,28,29,28,29,28,29,28,29,28,29,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 23,24,23,24,19,20,21,22,23,24,23,24,23,24,19,20,21,22,23,24,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 39,40,41,42,35,36,37,38,39,40,39,40,41,42,35,36,37,38,39,40,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 55,57,58,59,51,52,53,54,55,56,57,58,59,56,51,52,53,54,55,56,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -100,73,74,75,100,100,100,100,100,100,73,74,75,100,100,100,100,100,100,100,100,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +1,7,8,9,1,1,1,1,1,1,7,8,9,1,1,1,1,1,1,1,100,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,100,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,100,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, diff --git a/data/tiles.gif b/data/tiles.gif index 52b1a22c4d33d7d7e2a71d4fa85fed9b93a48fbb..a541a9db8c837e8456dcb24a811ccf34f89e6f8e 100644 GIT binary patch delta 1069 zcmV+|1k(GW45|#Uq5*#j1rHAe3JMU1iie4djEaMW5CD{wl#ZB-5RrtPo}ZuvmZPMl zrl+TZ1%{cet*eHnu8xVDu(!Cmu#>30zP|vOjkLnTva^qftOXFw&d<-wyuj4e!N}OH z$Fsw>%+TP`tJBuysKuDWn#QHb>h9===JTo9_KVx`*zd`T^#6aO^eN(ph#e_c1X~g0 z2e2W4S_L6Wj7V`}B2yMCYRt&7phJKLLK=W2vZP3oA_*WsK%k||mnvDVgh_MeOqwrO zn%v2AXUvsAg9fcu5@k=L27U@%Dw8QwrA~qNoXS(Bu3QL+o?Jy0Db%PC>o9Q0R%`nrDdidd6=3ZCQyiti0NtLoY6_C%V)XdiC+SI9=Qsja0xnM0bo`N zrYJxjdK)f^-p447Y(k2Fqz-Zd%Bi6k`r4+qbh>|Lqcye}>6Z7Iit4R}NSRtlskurU ztf7t=D6RC_itDMEvbd`Oy_TZqr&-dNrF=!QHt)l>JDfbRdxm}FeR*(3ri)zee2r53=`bkza}B< zRKI@!z{M2*#SH^Fk^zDqmjD4sN__FR6K6c|#(Exi7|8b_{1pKd(-|4YCi}}6k}9u^ z)$_qMvxqW%IqOWczI37n^Os4VwzLB@2mQ~`ffa3Z)eRs`fYSQ@*R*O#ORXW* zR$pD1)?72awbNmX-QLE<0j1e&1jM~k*9Cu|)-`~6pN6;FZ!-qx;4kf+3%|H{4fsbJ zNBGs=`$i7+;tn;=+vCS(jx6O3ZESEZ*nW;n=$wPZnB-szLI^7h#S;lLrB8i2>Hu!C z`bM}*^tuAE)3Y({0QTPd@4)*feC)&*@4)e;8-RcT%J;`S=gu3TIjYlBUcI(+lAaSi n;MJ>Mh==Q|lkzJA`k#OSw|ma delta 1061 zcmV+=1ls$m45AFMq5*#ff`f#GhJyqMii?bm3XhPHk`MrumY0~Bnwy-Ro|%WCqKO5i zrl+O|lBxeUw<4bKe>zQDncuEWOJ z+MCI@%goTx(!bT#k=y9$gsAMOgx}%K)8*HY>G#>|?fdTt1G9UmAX@@Hl~N1QpLG7CsdYJjbSyUwdR4d zXw#})o3?AsuwsAzUj_wQKxovjQ}MzrHnvdNMx-1HJ_>d3F}Zc=+C^Dlf#b)GA4{J6 z%PnAPceH5=~ic`?ZXrRCv1%{w*TL=K*T z6b{mX?7g%F+ZH`8H*ej9kpfrrpt^PH#y1mU%l*J|f6jlKKSy2pH|y&N&_BpNdr)__ z-*@W{|J?Ui;Ofz{NACW;+W6s-HXd}U-38l$tsMu~cK)Tcok<6PM;?8>{c?ax7+&aE z0R(8*jRBibn1F=yJ@C(X(@;3zhJv-!jv(!X*c*wX;a19kDGtb60SNYpU;!>NWI&9X zh)AP&I_7_`C|`{#l7~Q-&ovq4m{3l65qt))g(Yf7 z3Yg?CVD3ofoYt9%5SnThIpdZ{;t1!GOcwA6i=_-|=RtU`waGqh@>$<6gqGstq^=!` zPoipVQjsgAKv00Eo_6}_sGyG8=|re*iYkwkPHKPYJs*m)*`jpP`KmgR5($7qnea+X zsJWU#2}VQ4YKSGj*koz4HQnlor-MQu?X=WVE2sjWwp6T&@gzV1eaPapthmJhTkW~k z3af2h6viXXx2GX16#>i6>ue|Gpt?#y>l#3xyYJF>ioNX+T*@r;uu_mk7j0`AzyUwZ zDu;h-(R(2O#cEmXz`dDNv#>dm^y?hN5rfmf!~|5#>T4LcHSsK}#+)juBAfh7Z}2+v z49Y5BoN~r5&)RTZ04)*@Gz<_>v?41Pu-3}3IjvUHLJzGBhFF6HH9M}N!gAFJ6?UN!I<5O&~s2EDODTaT>4QpLyBZzHv*M6+8FoOay!EX-Ps{NJNDmXa f6+j#p